update:examination detail

This commit is contained in:
wayanrivan
2026-04-15 11:36:02 +07:00
parent 187503d44d
commit 6d97ddd9fe
2 changed files with 24 additions and 14 deletions

View File

@ -87,7 +87,7 @@ export class ExaminationDetailController {
name: Joi.string().max(256).required().label("Name"), name: Joi.string().max(256).required().label("Name"),
order_no: Joi.string().max(256).required().label("Order No."), order_no: Joi.string().max(256).required().label("Order No."),
measurement_unit_id: Joi.string().uuid().required().label("Measurement Unit ID"), 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"), 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()); let measurementUnit = await MeasurementUnitModel.list({ "MeasurementUnit.id": param.measurement_unit_id }).then((q) => q.getOne());
if (!measurementUnit) throw { message: "Measurement Unit not found" }; if (!measurementUnit) throw { message: "Measurement Unit not found" };
let referenceRange = await ReferenceRangeModel.list({ "ReferenceRange.id": param.reference_range_id }).then((q) => q.getOne()); const referenceRanges = await Promise.all(
if (!referenceRange) throw { message: "Reference Range not found" }; 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(); let examinationDetail = new ExaminationDetail();
examinationDetail.name = param.name; examinationDetail.name = param.name;
examinationDetail.order_no = param.order_no; examinationDetail.order_no = param.order_no;
examinationDetail.measurement_unit = measurementUnit; examinationDetail.measurement_unit = measurementUnit;
examinationDetail.reference_range = referenceRange; examinationDetail.reference_range = referenceRanges;
examinationDetail.status = param.status; examinationDetail.status = param.status;
examinationDetail.created_by = req.auth.data.name; examinationDetail.created_by = req.auth?.data.name;
examinationDetail.updated_by = req.auth.data.name; examinationDetail.updated_by = req.auth?.data.name;
await queryRunner.manager.save(examinationDetail); await queryRunner.manager.save(examinationDetail);
await queryRunner.commitTransaction(); await queryRunner.commitTransaction();
@ -166,7 +171,7 @@ export class ExaminationDetailController {
name: Joi.string().max(256).required().label("Name"), name: Joi.string().max(256).required().label("Name"),
order_no: Joi.string().max(256).required().label("Order No."), order_no: Joi.string().max(256).required().label("Order No."),
measurement_unit_id: Joi.string().uuid().required().label("Measurement Unit ID"), 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"), 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()); let measurementUnit = await MeasurementUnitModel.list({ "MeasurementUnit.id": param.measurement_unit_id }).then((q) => q.getOne());
if (!measurementUnit) throw { message: "Measurement Unit not found" }; if (!measurementUnit) throw { message: "Measurement Unit not found" };
let referenceRange = await ReferenceRangeModel.list({ "ReferenceRange.id": param.reference_range_id }).then((q) => q.getOne()); const referenceRanges = await Promise.all(
if (!referenceRange) throw { message: "Reference Range not found" }; 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.name = param.name;
examinationDetail.order_no = param.order_no; examinationDetail.order_no = param.order_no;
examinationDetail.measurement_unit = measurementUnit; examinationDetail.measurement_unit = measurementUnit;
examinationDetail.reference_range = referenceRange; examinationDetail.reference_range = referenceRanges;
examinationDetail.status = param.status; 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.manager.save(examinationDetail);
await queryRunner.commitTransaction(); await queryRunner.commitTransaction();
@ -224,7 +234,7 @@ export class ExaminationDetailController {
if (!examinationDetail) throw { message: "Examination Detail " + Language.lang.failed_not_found }; 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(); examinationDetail.deleted_at = moment().toDate();
await OrmHelper.DB.manager.save(examinationDetail); await OrmHelper.DB.manager.save(examinationDetail);
affected = 1; affected = 1;

View File

@ -216,7 +216,7 @@ const doc = {
$name: "Examination Detail name", $name: "Examination Detail name",
$order_no: "Order number", $order_no: "Order number",
$measurement_unit_id: "uuid-string", $measurement_unit_id: "uuid-string",
$reference_range_id: "uuid-string", $reference_range_ids: "[] array uuid-string",
$status: { "@enum": ["Y", "N"] }, $status: { "@enum": ["Y", "N"] },
}, },
serviceExamination: { serviceExamination: {