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 efb33f6..83ab8a6 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 }) @@ -56,13 +57,17 @@ 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; - subtotal_price?: number + @Column({ nullable: true, type: "float" }) + subtotal_price?: number | null; + + @OneToMany(() => EmrPharmacyOrderActivity, (activity) => activity.pharmacy_order, { cascade: true }) + activities: EmrPharmacyOrderActivity[]; @Column() @CreateDateColumn() @@ -86,7 +91,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 new file mode 100644 index 0000000..2d4e188 --- /dev/null +++ b/src/entity/emr/emr_pharmacy_order_activity.ts @@ -0,0 +1,53 @@ +import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm"; +import { EmrPharmacyOrder } from "./emr_pharmacy_order"; +import { PharmacyOrderStatus } from "../../types/pharmacy_order_status"; + +@Entity("emr_pharmacy_order_activity", { schema: "emr" }) +export class EmrPharmacyOrderActivity { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => EmrPharmacyOrder, (order) => order.activities, { onDelete: "CASCADE" }) + @JoinColumn({ name: "pharmacy_order_id" }) + pharmacy_order: EmrPharmacyOrder; + + @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" }) + 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() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; +} \ No newline at end of file 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() 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 diff --git a/src/types/pharmacy_order_status.ts b/src/types/pharmacy_order_status.ts index 4c60750..96e9a26 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 + * Submitted: order diserahkan kepada pasien * Canceled: order dibatalkan */ export enum PharmacyOrderStatus { WAITING = "waiting", ORDERED = "ordered", VERIFIED = "verified", - COMPLETED = "completed", + COMPOUNDING = "compounding", + PACKAGING = "packaging", + SUBMITTED = "submitted", CANCELED = "canceled", }