From 6d97ddd9fe00776596d826438d52d81585ea46a1 Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Wed, 15 Apr 2026 11:36:02 +0700 Subject: [PATCH] update:examination detail --- src/controllers/examination_detail.ts | 36 +++++++++++++++++---------- src/swagger/builder.js | 2 +- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/controllers/examination_detail.ts b/src/controllers/examination_detail.ts index 592a251..4b400ae 100644 --- a/src/controllers/examination_detail.ts +++ b/src/controllers/examination_detail.ts @@ -87,7 +87,7 @@ export class ExaminationDetailController { name: Joi.string().max(256).required().label("Name"), order_no: Joi.string().max(256).required().label("Order No."), measurement_unit_id: Joi.string().uuid().required().label("Measurement Unit ID"), - reference_range_id: Joi.string().uuid().required().label("Reference Range ID"), + reference_range_ids: Joi.array().items(Joi.string().uuid()).min(1).required().label("Reference Range IDs"), status: Joi.string().required().label("Status"), }); @@ -96,17 +96,22 @@ export class ExaminationDetailController { let measurementUnit = await MeasurementUnitModel.list({ "MeasurementUnit.id": param.measurement_unit_id }).then((q) => q.getOne()); if (!measurementUnit) throw { message: "Measurement Unit not found" }; - let referenceRange = await ReferenceRangeModel.list({ "ReferenceRange.id": param.reference_range_id }).then((q) => q.getOne()); - if (!referenceRange) throw { message: "Reference Range not found" }; + const referenceRanges = await Promise.all( + param.reference_range_ids.map(async (id: string) => { + const rr = await ReferenceRangeModel.list({ "ReferenceRange.id": id }).then((q) => q.getOne()); + if (!rr) throw { message: `Reference Range ${id} not found` }; + return rr; + }) + ); let examinationDetail = new ExaminationDetail(); examinationDetail.name = param.name; examinationDetail.order_no = param.order_no; examinationDetail.measurement_unit = measurementUnit; - examinationDetail.reference_range = referenceRange; + examinationDetail.reference_range = referenceRanges; examinationDetail.status = param.status; - examinationDetail.created_by = req.auth.data.name; - examinationDetail.updated_by = req.auth.data.name; + examinationDetail.created_by = req.auth?.data.name; + examinationDetail.updated_by = req.auth?.data.name; await queryRunner.manager.save(examinationDetail); await queryRunner.commitTransaction(); @@ -166,7 +171,7 @@ export class ExaminationDetailController { name: Joi.string().max(256).required().label("Name"), order_no: Joi.string().max(256).required().label("Order No."), measurement_unit_id: Joi.string().uuid().required().label("Measurement Unit ID"), - reference_range_id: Joi.string().uuid().required().label("Reference Range ID"), + reference_range_ids: Joi.array().items(Joi.string().uuid()).min(1).required().label("Reference Range IDs"), status: Joi.string().required().label("Status"), }); @@ -179,15 +184,20 @@ export class ExaminationDetailController { let measurementUnit = await MeasurementUnitModel.list({ "MeasurementUnit.id": param.measurement_unit_id }).then((q) => q.getOne()); if (!measurementUnit) throw { message: "Measurement Unit not found" }; - let referenceRange = await ReferenceRangeModel.list({ "ReferenceRange.id": param.reference_range_id }).then((q) => q.getOne()); - if (!referenceRange) throw { message: "Reference Range not found" }; + const referenceRanges = await Promise.all( + param.reference_range_ids.map(async (id: string) => { + const rr = await ReferenceRangeModel.list({ "ReferenceRange.id": id }).then((q) => q.getOne()); + if (!rr) throw { message: `Reference Range ${id} not found` }; + return rr; + }) + ); examinationDetail.name = param.name; examinationDetail.order_no = param.order_no; examinationDetail.measurement_unit = measurementUnit; - examinationDetail.reference_range = referenceRange; + examinationDetail.reference_range = referenceRanges; examinationDetail.status = param.status; - examinationDetail.updated_by = req.auth.data.name; + examinationDetail.updated_by = req.auth?.data.name; await queryRunner.manager.save(examinationDetail); await queryRunner.commitTransaction(); @@ -224,7 +234,7 @@ export class ExaminationDetailController { if (!examinationDetail) throw { message: "Examination Detail " + Language.lang.failed_not_found }; - examinationDetail.deleted_by = req.auth.data.name; + examinationDetail.deleted_by = req.auth?.data.name; examinationDetail.deleted_at = moment().toDate(); await OrmHelper.DB.manager.save(examinationDetail); affected = 1; @@ -273,4 +283,4 @@ export class ExaminationDetailController { return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_restore, err.message); } } -} +} \ No newline at end of file diff --git a/src/swagger/builder.js b/src/swagger/builder.js index 71e22b8..8ad23f0 100644 --- a/src/swagger/builder.js +++ b/src/swagger/builder.js @@ -216,7 +216,7 @@ const doc = { $name: "Examination Detail name", $order_no: "Order number", $measurement_unit_id: "uuid-string", - $reference_range_id: "uuid-string", + $reference_range_ids: "[] array uuid-string", $status: { "@enum": ["Y", "N"] }, }, serviceExamination: {