remove medical form and add specialist form

This commit is contained in:
avicenan
2026-05-22 22:05:23 +09:00
parent b0b784836e
commit ce724a03a0
2 changed files with 9 additions and 18 deletions

View File

@ -1,4 +1,4 @@
import { Room, Paging, Service, MedicalForm } from "entity"; import { Room, Paging, Service, SpecialistForm } from "entity";
import { NextFunction, Response } from "express"; import { NextFunction, Response } from "express";
import { Request } from "express-jwt"; import { Request } from "express-jwt";
import Joi from "joi"; import Joi from "joi";
@ -78,7 +78,6 @@ export class RoomController {
const res_list = query const res_list = query
.leftJoinAndSelect("Room.department", "department") .leftJoinAndSelect("Room.department", "department")
.leftJoinAndSelect("Room.serviceclass", "serviceclass") .leftJoinAndSelect("Room.serviceclass", "serviceclass")
.leftJoinAndSelect("Room.medical_forms", "medical_forms")
.orderBy("Room." + param.order_field, param.order_direction) .orderBy("Room." + param.order_field, param.order_direction)
.offset(offset) .offset(offset)
.limit(param.limit); .limit(param.limit);
@ -168,7 +167,7 @@ export class RoomController {
location: Joi.string().required().label("Location"), location: Joi.string().required().label("Location"),
floor: Joi.number().required().label("Floor"), floor: Joi.number().required().label("Floor"),
picture: Joi.string().required().label("picture"), picture: Joi.string().required().label("picture"),
medical_forms: Joi.array().items(Joi.string().uuid()).optional().label("Medical Forms"), specialist_form: Joi.string().valid(...Object.values(SpecialistForm)).optional().allow(null, "").label("Specialist Form"),
}); });
let param: any = await schema.validateAsync(req.body); let param: any = await schema.validateAsync(req.body);
@ -182,11 +181,7 @@ export class RoomController {
let serviceclass = await ServiceClassModel.list({ id: param.serviceclass }).then((q) => q.getOne()); let serviceclass = await ServiceClassModel.list({ id: param.serviceclass }).then((q) => q.getOne());
if (!serviceclass) throw { message: "Class not found" }; if (!serviceclass) throw { message: "Class not found" };
let medicalForms: MedicalForm[] = [];
if (param.medical_forms && param.medical_forms.length > 0) {
medicalForms = await queryRunner.manager.getRepository(MedicalForm).find({ where: { id: In(param.medical_forms) } });
if (medicalForms.length !== param.medical_forms.length) throw { message: "Medical Form not found" };
}
let room = new Room(); let room = new Room();
room.room = param.room; room.room = param.room;
@ -198,7 +193,7 @@ export class RoomController {
room.location = param.location; room.location = param.location;
room.picture = param.picture; room.picture = param.picture;
room.floor = param.floor; room.floor = param.floor;
room.medical_forms = medicalForms; room.specialist_form = param.specialist_form || null;
room.created_by = req.auth?.data.name; room.created_by = req.auth?.data.name;
room.updated_by = req.auth?.data.name; room.updated_by = req.auth?.data.name;
await queryRunner.manager.save(room); await queryRunner.manager.save(room);
@ -226,7 +221,7 @@ export class RoomController {
id: Joi.string().uuid().required().label("Room Id"), id: Joi.string().uuid().required().label("Room Id"),
}); });
let param: any = await schema.validateAsync(req.params); let param: any = await schema.validateAsync(req.params);
let room = await RoomModel.list({ "Room.id": param.id }).then((q) => q.leftJoinAndSelect("Room.department", "department").leftJoinAndSelect("Room.serviceclass", "serviceclass").leftJoinAndSelect("Room.medical_forms", "medical_forms").getOne()); let room = await RoomModel.list({ "Room.id": param.id }).then((q) => q.leftJoinAndSelect("Room.department", "department").leftJoinAndSelect("Room.serviceclass", "serviceclass").getOne());
if (!room) throw { message: "Room Not Found" }; if (!room) throw { message: "Room Not Found" };
return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, room); return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, room);
} catch (e: unknown) { } catch (e: unknown) {
@ -258,7 +253,7 @@ export class RoomController {
status: Joi.string().required().label("Status"), status: Joi.string().required().label("Status"),
location: Joi.string().required().label("Location"), location: Joi.string().required().label("Location"),
picture: Joi.string().required().label("picture"), picture: Joi.string().required().label("picture"),
medical_forms: Joi.array().items(Joi.string().uuid()).optional().label("Medical Forms"), specialist_form: Joi.string().valid(...Object.values(SpecialistForm)).optional().allow(null, "").label("Specialist Form"),
}); });
let param: any = await schema.validateAsync(req.body); let param: any = await schema.validateAsync(req.body);
@ -274,11 +269,7 @@ export class RoomController {
let room = await RoomModel.list({ "Room.id": param.id }).then((q) => q.getOne()); let room = await RoomModel.list({ "Room.id": param.id }).then((q) => q.getOne());
if (!room) throw { message: "Room " + Language.lang.failed_not_found }; if (!room) throw { message: "Room " + Language.lang.failed_not_found };
let medicalForms: MedicalForm[] = [];
if (param.medical_forms && param.medical_forms.length > 0) {
medicalForms = await queryRunner.manager.getRepository(MedicalForm).find({ where: { id: In(param.medical_forms) } });
if (medicalForms.length !== param.medical_forms.length) throw { message: "Medical Form not found" };
}
room.room = param.room; room.room = param.room;
room.code = param.code; room.code = param.code;
@ -289,7 +280,7 @@ export class RoomController {
room.floor = param.floor; room.floor = param.floor;
room.location = param.location; room.location = param.location;
room.picture = param.picture; room.picture = param.picture;
room.medical_forms = medicalForms; room.specialist_form = param.specialist_form || null;
room.updated_by = req.auth?.data.name; room.updated_by = req.auth?.data.name;
await queryRunner.manager.save(room); await queryRunner.manager.save(room);

View File

@ -132,7 +132,7 @@ const doc = {
$status: "Y", $status: "Y",
$location: "Room location", $location: "Room location",
$picture: "Room picture name", $picture: "Room picture name",
medical_forms: ["uuid-string"], specialist_form: { "@enum": ["dental", "cardiology", "dermatology", "gynecology", "orthopedics", "neurology"] },
}, },
room_number: { room_number: {
$number: "101", $number: "101",