From 07c5a259d95838938017915e10a44314dd4c5d45 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 9 Apr 2026 09:30:03 +0700 Subject: [PATCH] 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", }