From c235b57d9e1fa1ec68d62c354a0ccd8b56600d43 Mon Sep 17 00:00:00 2001 From: avicenan Date: Wed, 8 Apr 2026 16:52:06 +0700 Subject: [PATCH 1/7] fix: update screening pharmacy order --- src/entity/emr/emr_pharmacy_order.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/entity/emr/emr_pharmacy_order.ts b/src/entity/emr/emr_pharmacy_order.ts index efb33f6..8df4475 100644 --- a/src/entity/emr/emr_pharmacy_order.ts +++ b/src/entity/emr/emr_pharmacy_order.ts @@ -56,8 +56,8 @@ export class EmrPharmacyOrder { @JoinColumn({ name: "referring_room_id" }) referring_room: Room | null; - @Column({ nullable: true, type: "text", array: true }) - prescription_screening: string[] | null; + @Column({ nullable: true, type: "jsonb" }) + prescription_screening?: object; @Column({ nullable: true, type: "text" }) status: PharmacyOrderStatus; From 07c5a259d95838938017915e10a44314dd4c5d45 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 9 Apr 2026 09:30:03 +0700 Subject: [PATCH 2/7] feat: add pharmacy order activity --- src/entity/emr/emr_pharmacy_order.ts | 4 +++ src/entity/emr/emr_pharmacy_order_activity.ts | 30 +++++++++++++++++++ src/types/pharmacy_order_status.ts | 14 +++++---- 3 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 src/entity/emr/emr_pharmacy_order_activity.ts diff --git a/src/entity/emr/emr_pharmacy_order.ts b/src/entity/emr/emr_pharmacy_order.ts index 8df4475..9f6e12c 100644 --- a/src/entity/emr/emr_pharmacy_order.ts +++ b/src/entity/emr/emr_pharmacy_order.ts @@ -17,6 +17,7 @@ import { Room } from "../room"; import { EmrRegistration } from "./emr_registration"; import { EmrPatient } from "./emr_patient"; import { PharmacyOrderStatus } from "../../types/pharmacy_order_status"; +import { EmrPharmacyOrderActivity } from "./emr_pharmacy_order_activity"; @Entity("emr_pharmacy_order", { schema: "emr" }) @Index(["code", "queue_number"], { unique: true }) @@ -64,6 +65,9 @@ export class EmrPharmacyOrder { subtotal_price?: number + @OneToMany(() => EmrPharmacyOrderActivity, (activity) => activity.pharmacy_order, { cascade: true }) + activities: EmrPharmacyOrderActivity[]; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/entity/emr/emr_pharmacy_order_activity.ts b/src/entity/emr/emr_pharmacy_order_activity.ts new file mode 100644 index 0000000..3269589 --- /dev/null +++ b/src/entity/emr/emr_pharmacy_order_activity.ts @@ -0,0 +1,30 @@ +import { Column, CreateDateColumn, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm"; +import { EmrPharmacyOrder } from "./emr_pharmacy_order"; +import { PharmacyOrderStatus } from "../../types/pharmacy_order_status"; +import { User } from "../users"; + +export class EmrPharmacyOrderActivity { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => EmrPharmacyOrder, { onDelete: "CASCADE" }) + @JoinColumn({ name: "pharmacy_order_id" }) + pharmacy_order: EmrPharmacyOrder; + + @ManyToOne(() => User, { onDelete: "CASCADE" }) + @JoinColumn({ name: "user_id" }) + user: User; + + @Column({ nullable: false, type: "text" }) + activity: PharmacyOrderStatus; + + @Column({ nullable: true, type: "text" }) + description: string; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; +} \ No newline at end of file diff --git a/src/types/pharmacy_order_status.ts b/src/types/pharmacy_order_status.ts index 4c60750..8319ace 100644 --- a/src/types/pharmacy_order_status.ts +++ b/src/types/pharmacy_order_status.ts @@ -1,16 +1,20 @@ /** * Workflow status untuk order farmasi. - * Waiting: menunggu konfirmasi pasien - * Ordered: order telah dibuat - * Verified: order telah diverifikasi - * Completed: order telah diserahkan + * Waiting: menunggu konfirmasi order pasien + * Ordered: order diterima oleh farmasi + * Verified: order diverifikasi oleh farmasi + * Compounding: order diracik oleh farmasi + * Packaging: order dibungkus oleh farmasi + * Dispensed: order diberikan kepada pasien * Canceled: order dibatalkan */ export enum PharmacyOrderStatus { WAITING = "waiting", ORDERED = "ordered", VERIFIED = "verified", - COMPLETED = "completed", + COMPOUNDING = "compounding", + PACKAGING = "packaging", + DISPENSED = "dispensed", CANCELED = "canceled", } From f6f0b3b4f1a3fc3aa0b70e8c40f742aa2034f0f0 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 9 Apr 2026 09:34:45 +0700 Subject: [PATCH 3/7] fix pharmacy order activity --- src/schema/emr.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/schema/emr.ts b/src/schema/emr.ts index 4726abd..281fa58 100644 --- a/src/schema/emr.ts +++ b/src/schema/emr.ts @@ -23,8 +23,9 @@ export * from "../entity/emr/emr_compounding_medicine_item"; export * from "../entity/emr/emr_room_medical_equipment"; export * from "../entity/emr/emr_external_consultation"; export * from "../entity/emr/emr_pharmacy_order"; +export * from "../entity/emr/emr_pharmacy_order_activity"; export * from "../types/registration_type"; export * from "../types/registration_status"; export * from "../types/pharmacy_order_status"; -export * from "../types/prescription_pharmacy_status"; +export * from "../types/prescription_pharmacy_status"; \ No newline at end of file From 79e9abfbbb9c60d44fe34044dc9f2fe02ada98bb Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 9 Apr 2026 09:49:31 +0700 Subject: [PATCH 4/7] fix remove user form pharmacy order activity --- src/entity/emr/emr_pharmacy_order_activity.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/entity/emr/emr_pharmacy_order_activity.ts b/src/entity/emr/emr_pharmacy_order_activity.ts index 3269589..cebf275 100644 --- a/src/entity/emr/emr_pharmacy_order_activity.ts +++ b/src/entity/emr/emr_pharmacy_order_activity.ts @@ -11,10 +11,6 @@ export class EmrPharmacyOrderActivity { @JoinColumn({ name: "pharmacy_order_id" }) pharmacy_order: EmrPharmacyOrder; - @ManyToOne(() => User, { onDelete: "CASCADE" }) - @JoinColumn({ name: "user_id" }) - user: User; - @Column({ nullable: false, type: "text" }) activity: PharmacyOrderStatus; From 200dcfa075ef3447879b1ef5931afdd19ac0d9f7 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 9 Apr 2026 09:59:59 +0700 Subject: [PATCH 5/7] fix pharmacy order activity --- src/entity/emr/emr_pharmacy_order.ts | 4 --- src/entity/emr/emr_pharmacy_order_activity.ts | 33 +++++++++++++++++-- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/entity/emr/emr_pharmacy_order.ts b/src/entity/emr/emr_pharmacy_order.ts index 9f6e12c..9655d8a 100644 --- a/src/entity/emr/emr_pharmacy_order.ts +++ b/src/entity/emr/emr_pharmacy_order.ts @@ -90,7 +90,3 @@ export class EmrPharmacyOrder { deleted_by: string; } -function Sequence(arg0: string): (target: EmrPharmacyOrder, propertyKey: "order_number") => void { - throw new Error("Function not implemented."); -} - diff --git a/src/entity/emr/emr_pharmacy_order_activity.ts b/src/entity/emr/emr_pharmacy_order_activity.ts index cebf275..2ab6154 100644 --- a/src/entity/emr/emr_pharmacy_order_activity.ts +++ b/src/entity/emr/emr_pharmacy_order_activity.ts @@ -11,11 +11,38 @@ export class EmrPharmacyOrderActivity { @JoinColumn({ name: "pharmacy_order_id" }) pharmacy_order: EmrPharmacyOrder; - @Column({ nullable: false, type: "text" }) - activity: PharmacyOrderStatus; + @Column({ type: "varchar", unique: true }) + code: string; + + @Column({ nullable: true, type: "varchar", length: 256, unique: true }) + queue_number?: string | null; @Column({ nullable: true, type: "text" }) - description: string; + doctor: string | null; + + @Column({ nullable: true, type: "text" }) + patient: string | null; + + @Column({ nullable: true, type: "jsonb" }) + compounding_medicines: object | null; + + @Column({ nullable: true, type: "jsonb" }) + prescriptions: object | null; + + @Column({ nullable: true, type: "text" }) + room: string | null; + + @Column({ nullable: true, type: "text" }) + referring_room: string | null; + + @Column({ nullable: true, type: "jsonb" }) + prescription_screening?: object | null; + + @Column({ type: "enum", enum: PharmacyOrderStatus }) + status: PharmacyOrderStatus; + + @Column({ nullable: true, type: "float" }) + subtotal_price?: number | null; @Column() @CreateDateColumn() From d0b6334ac7f6ed56fdac3ea5c41f9e0a2ddf5485 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 9 Apr 2026 11:07:42 +0700 Subject: [PATCH 6/7] fix: pharmacy order activity --- src/entity/emr/emr_pharmacy_order_activity.ts | 6 +++--- src/types/pharmacy_order_status.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/entity/emr/emr_pharmacy_order_activity.ts b/src/entity/emr/emr_pharmacy_order_activity.ts index 2ab6154..2d4e188 100644 --- a/src/entity/emr/emr_pharmacy_order_activity.ts +++ b/src/entity/emr/emr_pharmacy_order_activity.ts @@ -1,13 +1,13 @@ -import { Column, CreateDateColumn, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm"; +import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm"; import { EmrPharmacyOrder } from "./emr_pharmacy_order"; import { PharmacyOrderStatus } from "../../types/pharmacy_order_status"; -import { User } from "../users"; +@Entity("emr_pharmacy_order_activity", { schema: "emr" }) export class EmrPharmacyOrderActivity { @PrimaryGeneratedColumn("uuid") id: string; - @ManyToOne(() => EmrPharmacyOrder, { onDelete: "CASCADE" }) + @ManyToOne(() => EmrPharmacyOrder, (order) => order.activities, { onDelete: "CASCADE" }) @JoinColumn({ name: "pharmacy_order_id" }) pharmacy_order: EmrPharmacyOrder; diff --git a/src/types/pharmacy_order_status.ts b/src/types/pharmacy_order_status.ts index 8319ace..96e9a26 100644 --- a/src/types/pharmacy_order_status.ts +++ b/src/types/pharmacy_order_status.ts @@ -5,7 +5,7 @@ * Verified: order diverifikasi oleh farmasi * Compounding: order diracik oleh farmasi * Packaging: order dibungkus oleh farmasi - * Dispensed: order diberikan kepada pasien + * Submitted: order diserahkan kepada pasien * Canceled: order dibatalkan */ export enum PharmacyOrderStatus { @@ -14,7 +14,7 @@ export enum PharmacyOrderStatus { VERIFIED = "verified", COMPOUNDING = "compounding", PACKAGING = "packaging", - DISPENSED = "dispensed", + SUBMITTED = "submitted", CANCELED = "canceled", } From 7d0df30ee2515d6c8742b9a0f4a114b464e94e46 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 9 Apr 2026 11:19:03 +0700 Subject: [PATCH 7/7] fix: store price on column pharmacy order and items --- src/entity/emr/emr_compounding_medicine.ts | 6 ++++-- src/entity/emr/emr_pharmacy_order.ts | 3 ++- src/entity/emr/emr_prescription.ts | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/entity/emr/emr_compounding_medicine.ts b/src/entity/emr/emr_compounding_medicine.ts index 4b6fbf3..b07a5aa 100644 --- a/src/entity/emr/emr_compounding_medicine.ts +++ b/src/entity/emr/emr_compounding_medicine.ts @@ -59,9 +59,11 @@ export class EmrCompoundingMedicine { @OneToMany(() => EmrCompoundingMedicineItem, (item) => item.compounding_medicine, { cascade: true }) items: EmrCompoundingMedicineItem[]; - unit_price?: number; + @Column({ nullable: true, type: "float" }) + unit_price?: number | null; - total_price?: number; + @Column({ nullable: true, type: "float" }) + total_price?: number | null; @Column() @CreateDateColumn() diff --git a/src/entity/emr/emr_pharmacy_order.ts b/src/entity/emr/emr_pharmacy_order.ts index 9655d8a..83ab8a6 100644 --- a/src/entity/emr/emr_pharmacy_order.ts +++ b/src/entity/emr/emr_pharmacy_order.ts @@ -63,7 +63,8 @@ export class EmrPharmacyOrder { @Column({ nullable: true, type: "text" }) status: PharmacyOrderStatus; - subtotal_price?: number + @Column({ nullable: true, type: "float" }) + subtotal_price?: number | null; @OneToMany(() => EmrPharmacyOrderActivity, (activity) => activity.pharmacy_order, { cascade: true }) activities: EmrPharmacyOrderActivity[]; diff --git a/src/entity/emr/emr_prescription.ts b/src/entity/emr/emr_prescription.ts index 7152433..002b552 100644 --- a/src/entity/emr/emr_prescription.ts +++ b/src/entity/emr/emr_prescription.ts @@ -57,9 +57,11 @@ export class EmrPrescription { @JoinColumn({ name: "room_stock_id" }) room_stock: RoomStock; - unit_price?: number; + @Column({ nullable: true, type: "float" }) + unit_price?: number | null; - total_price?: number; + @Column({ nullable: true, type: "float" }) + total_price?: number | null; @Column() @CreateDateColumn()