feat(emr): add prescription order entities and status enum
This commit is contained in:
66
src/entity/emr/emr_prescription_order_items.ts
Normal file
66
src/entity/emr/emr_prescription_order_items.ts
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
|
||||||
|
import { EmrPrescriptionOrder } from "./emr_prescription_orders";
|
||||||
|
import { ItemMaster } from "../pharmacy/item_master";
|
||||||
|
import { UsageInstructions } from "../pharmacy/usage_instructions";
|
||||||
|
import { UsageTime } from "../pharmacy/usage_time";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prescription order items entity.
|
||||||
|
* Stores each medication item with quantity and usage instructions/timing.
|
||||||
|
*/
|
||||||
|
@Entity("emr_prescription_order_items", { schema: "emr" })
|
||||||
|
export class EmrPrescriptionOrderItem {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => EmrPrescriptionOrder, (order) => order.items, { onDelete: "CASCADE" })
|
||||||
|
@JoinColumn({ name: "prescription_order_id" })
|
||||||
|
prescription_order: EmrPrescriptionOrder;
|
||||||
|
|
||||||
|
@ManyToOne(() => ItemMaster, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn({ name: "item_master_id" })
|
||||||
|
item_master: ItemMaster;
|
||||||
|
|
||||||
|
@Column({ type: "int", nullable: false, default: 1 })
|
||||||
|
qty: number;
|
||||||
|
|
||||||
|
@ManyToOne(() => UsageInstructions, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn({ name: "usage_instruction_id" })
|
||||||
|
usage_instruction: UsageInstructions | null;
|
||||||
|
|
||||||
|
@ManyToOne(() => UsageTime, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn({ name: "usage_time_id" })
|
||||||
|
usage_time: UsageTime | null;
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
|
||||||
84
src/entity/emr/emr_prescription_orders.ts
Normal file
84
src/entity/emr/emr_prescription_orders.ts
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
OneToMany,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
|
||||||
|
import { EmrPatient } from "./emr_patient";
|
||||||
|
import { Room } from "../room";
|
||||||
|
import { User } from "../users";
|
||||||
|
import { EmrRegistration } from "./emr_registration";
|
||||||
|
import { EmrPrescriptionOrderItem } from "./emr_prescription_order_items";
|
||||||
|
import { PrescriptionPharmacyStatus } from "../../types/prescription_pharmacy_status";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prescription orders entity.
|
||||||
|
* Header information for a medication prescription: order number, patient, doctor, rooms, registration, and pharmacy status.
|
||||||
|
*/
|
||||||
|
@Entity("emr_prescription_orders", { schema: "emr" })
|
||||||
|
export class EmrPrescriptionOrder {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@Column({ nullable: false, length: 128, unique: true })
|
||||||
|
order_no: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => EmrRegistration, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn({ name: "registration_id" })
|
||||||
|
registration: EmrRegistration | null;
|
||||||
|
|
||||||
|
@ManyToOne(() => EmrPatient, { onDelete: "NO ACTION" })
|
||||||
|
@JoinColumn({ name: "patient_id" })
|
||||||
|
patient: EmrPatient;
|
||||||
|
|
||||||
|
@ManyToOne(() => User, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn({ name: "doctor_id" })
|
||||||
|
doctor: User | null;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn({ name: "room_id" })
|
||||||
|
room: Room | null;
|
||||||
|
|
||||||
|
@ManyToOne(() => Room, { onDelete: "NO ACTION", nullable: true })
|
||||||
|
@JoinColumn({ name: "referring_room_id" })
|
||||||
|
referring_room: Room | null;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: PrescriptionPharmacyStatus,
|
||||||
|
nullable: false,
|
||||||
|
default: PrescriptionPharmacyStatus.PENDING,
|
||||||
|
})
|
||||||
|
pharmacy_status: PrescriptionPharmacyStatus;
|
||||||
|
|
||||||
|
@OneToMany(() => EmrPrescriptionOrderItem, (item) => item.prescription_order, { cascade: true })
|
||||||
|
items: EmrPrescriptionOrderItem[];
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
|
||||||
@ -15,8 +15,11 @@ export * from "../entity/emr/emr_internal_consultation";
|
|||||||
export * from "../entity/emr/emr_laboratory_orders";
|
export * from "../entity/emr/emr_laboratory_orders";
|
||||||
export * from "../entity/emr/emr_laboratory_order_items";
|
export * from "../entity/emr/emr_laboratory_order_items";
|
||||||
export * from "../entity/emr/emr_laboratory_order_item_results";
|
export * from "../entity/emr/emr_laboratory_order_item_results";
|
||||||
|
export * from "../entity/emr/emr_prescription_orders";
|
||||||
|
export * from "../entity/emr/emr_prescription_order_items";
|
||||||
export * from "../entity/emr/emr_radiology";
|
export * from "../entity/emr/emr_radiology";
|
||||||
export * from "../entity/emr/emr_radiology_services";
|
export * from "../entity/emr/emr_radiology_services";
|
||||||
|
|
||||||
export * from "../types/registration_type";
|
export * from "../types/registration_type";
|
||||||
export * from "../types/registration_status";
|
export * from "../types/registration_status";
|
||||||
|
export * from "../types/prescription_pharmacy_status";
|
||||||
|
|||||||
7
src/types/prescription_pharmacy_status.ts
Normal file
7
src/types/prescription_pharmacy_status.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
export enum PrescriptionPharmacyStatus {
|
||||||
|
PENDING = "pending",
|
||||||
|
PROCESSING = "processing",
|
||||||
|
DISPENSED = "dispensed",
|
||||||
|
CANCELLED = "cancelled",
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user