diff --git a/src/entity/emr/emr_hemodialysis_plan.ts b/src/entity/emr/emr_hemodialysis_plan.ts new file mode 100644 index 0000000..6035431 --- /dev/null +++ b/src/entity/emr/emr_hemodialysis_plan.ts @@ -0,0 +1,80 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + ManyToOne, + JoinColumn, +} from "typeorm"; +import { EmrPatient } from "./emr_patient"; +import { EmrRegistrationOutpatient } from "./emr_registration_outpatient"; + +export enum HemodialysisPlanStatus { + DRAFT = "draft", + ACTIVE = "active", +} + +@Entity("emr_hemodialysis_plans", { schema: "emr" }) +export class HemodialysisPlan { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => EmrPatient, { onDelete: "NO ACTION", nullable: false }) + @JoinColumn({ name: "patient_id" }) + patient: EmrPatient; + + @ManyToOne(() => EmrRegistrationOutpatient, { onDelete: "SET NULL", nullable: true }) + @JoinColumn({ name: "opd_visit_id" }) + opd_visit: EmrRegistrationOutpatient | null; + + @Column({ type: "smallint", nullable: false }) + sessions_per_week: number; + + @Column({ type: "decimal", precision: 5, scale: 2, nullable: false }) + duration_hours: number; + + @Column({ type: "decimal", precision: 6, scale: 2, nullable: true }) + dry_weight: number | null; + + @Column({ type: "int", nullable: true }) + blood_flow_rate_qb: number | null; + + @Column({ type: "int", nullable: true }) + dialysate_flow_rate_qd: number | null; + + @Column({ type: "varchar", length: 256, nullable: true }) + dialyzer_type: string | null; + + @Column({ type: "varchar", length: 256, nullable: true }) + anticoagulant_dose: string | null; + + @Column({ + type: "enum", + enum: HemodialysisPlanStatus, + default: HemodialysisPlanStatus.DRAFT, + }) + status: HemodialysisPlanStatus; + + @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_hemodialysis_settings.ts b/src/entity/emr/emr_hemodialysis_settings.ts new file mode 100644 index 0000000..cc398d3 --- /dev/null +++ b/src/entity/emr/emr_hemodialysis_settings.ts @@ -0,0 +1,37 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, +} from "typeorm"; + +@Entity("emr_hemodialysis_settings", { schema: "emr" }) +export class HemodialysisSettings { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ type: "int", nullable: false }) + daily_quota_limit: number; + + @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/schema/emr.ts b/src/schema/emr.ts index 43eebb8..60ea28f 100644 --- a/src/schema/emr.ts +++ b/src/schema/emr.ts @@ -4,6 +4,8 @@ export * from "../entity/emr/emr_registration_outpatient"; export * from "../entity/emr/emr_registration_inpatient"; export * from "../entity/emr/emr_registration_emergency"; export * from "../entity/emr/emr_registration_hemodialysis"; +export * from "../entity/emr/emr_hemodialysis_settings"; +export * from "../entity/emr/emr_hemodialysis_plan"; export * from "../entity/emr/emr_anamnesis"; export * from "../entity/emr/emr_vital_signs"; export * from "../entity/emr/emr_physical_examination";