From 08129ec2f197c4cf6d261781641d93f798d152ea Mon Sep 17 00:00:00 2001 From: Sony Surahmn Date: Wed, 20 May 2026 15:30:27 +0700 Subject: [PATCH] feat(emr): add EmrBoardingRoomMedicalSummary entity and update schema export --- .../emr/emr_boarding_room_medical_summary.ts | 46 +++++++++++++++++++ .../emr/emr_boarding_room_procedure_report.ts | 13 +++--- src/schema/emr.ts | 1 + 3 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 src/entity/emr/emr_boarding_room_medical_summary.ts diff --git a/src/entity/emr/emr_boarding_room_medical_summary.ts b/src/entity/emr/emr_boarding_room_medical_summary.ts new file mode 100644 index 0000000..fe432b6 --- /dev/null +++ b/src/entity/emr/emr_boarding_room_medical_summary.ts @@ -0,0 +1,46 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + OneToOne, + JoinColumn, +} from "typeorm"; +import { EmrBoardingRoom } from "./emr_boarding_rooms"; + +/** Resume medis pasien – satu dokumen JSON per boarding room (di-upsert). */ +@Entity("emr_boarding_room_medical_summary", { schema: "emr" }) +export class EmrBoardingRoomMedicalSummary { + @PrimaryGeneratedColumn("uuid") + id: string; + + @OneToOne(() => EmrBoardingRoom, { onDelete: "NO ACTION" }) + @JoinColumn() + boarding_room: EmrBoardingRoom; + + @Column({ type: "jsonb", nullable: true }) + payload: Record; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true, length: 256 }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ nullable: true, length: 256 }) + deleted_by: string; +} diff --git a/src/entity/emr/emr_boarding_room_procedure_report.ts b/src/entity/emr/emr_boarding_room_procedure_report.ts index f12b425..ffa2096 100644 --- a/src/entity/emr/emr_boarding_room_procedure_report.ts +++ b/src/entity/emr/emr_boarding_room_procedure_report.ts @@ -5,33 +5,34 @@ import { CreateDateColumn, UpdateDateColumn, DeleteDateColumn, - OneToOne, + ManyToOne, JoinColumn, } from "typeorm"; import { EmrBoardingRoom } from "./emr_boarding_rooms"; -/** Laporan tindakan (procedure report) for an inpatient boarding room — upserted as one row per boarding room. */ +/** Satu baris laporan tindakan per entri; satu boarding room dapat memiliki banyak laporan. */ @Entity("emr_boarding_room_procedure_report", { schema: "emr" }) export class EmrBoardingRoomProcedureReport { @PrimaryGeneratedColumn("uuid") id: string; - @OneToOne(() => EmrBoardingRoom, { onDelete: "NO ACTION" }) + @ManyToOne(() => EmrBoardingRoom, { onDelete: "NO ACTION" }) @JoinColumn() boarding_room: EmrBoardingRoom; - /** Tanggal input form */ @Column({ nullable: true }) input_at: Date; - /** Nama / label tindakan (teks bebas) */ @Column({ nullable: true, type: "text" }) procedure_name: string; - /** Uraian (HTML dari rich text editor) */ @Column({ nullable: true, type: "text" }) description_html: string; + /** ICD-9-CM (opsional), dipakai di Patient Medical Summary */ + @Column({ nullable: true, length: 32 }) + icd9_cm_code: string; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/schema/emr.ts b/src/schema/emr.ts index 431b28e..92b9375 100644 --- a/src/schema/emr.ts +++ b/src/schema/emr.ts @@ -15,6 +15,7 @@ export * from "../entity/emr/emr_boarding_room_deceased"; export * from "../entity/emr/emr_boarding_room_discharge"; export * from "../entity/emr/emr_boarding_room_emergency_status"; export * from "../entity/emr/emr_boarding_room_procedure_report"; +export * from "../entity/emr/emr_boarding_room_medical_summary"; export * from "../entity/emr/emr_diagnosis"; export * from "../entity/emr/emr_diagnostic_procedure"; export * from "../entity/emr/emr_doctor_procedure";