diff --git a/src/entity/emr/emr_radiology.ts b/src/entity/emr/emr_radiology.ts new file mode 100644 index 0000000..4fc45d8 --- /dev/null +++ b/src/entity/emr/emr_radiology.ts @@ -0,0 +1,76 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + ManyToOne, + OneToOne, + JoinColumn, + OneToMany +} from "typeorm"; +import { radiologyStatus } from "../../enum/radiologyStatus"; +import { EmrPatient } from "./emr_patient"; +import { User } from "../users"; +import { RadiologyServices } from "./emr_radiology_services"; +import { Room } from "../room"; +import { EmrRegistration } from "./emr_registration"; + +@Entity("emr_radiology", { schema: "emr" }) +export class Radiology { + @PrimaryGeneratedColumn("uuid") + id: string; + + @OneToMany(() => RadiologyServices, (rs) => rs.id_radiology) + radiology_services: RadiologyServices[]; + + @ManyToOne(() => EmrPatient, { onDelete: "CASCADE" }) + @JoinColumn() + id_patient: EmrPatient; + + @ManyToOne(() => User, { onDelete: "CASCADE" }) + @JoinColumn() + id_doctor: User; + + @ManyToOne(() => Room, { onDelete: "CASCADE" }) + @JoinColumn() + id_room: Room; + + // Di entity Radiology, tambahkan: + @ManyToOne(() => EmrRegistration, { onDelete: "CASCADE" }) + @JoinColumn() + id_registration: EmrRegistration; + + @Column({ + type: "enum", + enum: radiologyStatus, + nullable: false, + }) + status: radiologyStatus; + + @Column({ nullable: true, type: "text" }) + order_number: string; + + @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_radiology_services.ts b/src/entity/emr/emr_radiology_services.ts new file mode 100644 index 0000000..4b5847d --- /dev/null +++ b/src/entity/emr/emr_radiology_services.ts @@ -0,0 +1,52 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + ManyToOne, + OneToOne, + JoinColumn, +} from "typeorm"; +import { Radiology } from "./emr_radiology"; +import { Service } from "../service"; + +@Entity("emr_radiology_services", { schema: "emr" }) +export class RadiologyServices { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => Radiology, (radiology) => radiology.radiology_services, { onDelete: "CASCADE" }) + @JoinColumn() + id_radiology: Radiology; + + @ManyToOne(() => Service, { onDelete: "CASCADE" }) + @JoinColumn() + id_service: Service; + + @Column({ nullable: true, type: "text" }) + notes: string; + + @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/enum/radiologyStatus.ts b/src/enum/radiologyStatus.ts new file mode 100644 index 0000000..60fc462 --- /dev/null +++ b/src/enum/radiologyStatus.ts @@ -0,0 +1,6 @@ + +export enum radiologyStatus { + PENDING = 'PENDING', + VERIFIED = 'VERIFIED', + COMPLETED = 'COMPLETED', +} diff --git a/src/schema/emr.ts b/src/schema/emr.ts index b335132..f57de32 100644 --- a/src/schema/emr.ts +++ b/src/schema/emr.ts @@ -15,6 +15,8 @@ export * from "../entity/emr/emr_internal_consultation"; export * from "../entity/emr/emr_laboratory_orders"; export * from "../entity/emr/emr_laboratory_order_items"; export * from "../entity/emr/emr_laboratory_order_item_results"; +export * from "../entity/emr/emr_radiology"; +export * from "../entity/emr/emr_radiology_services"; export * from "../types/registration_type"; export * from "../types/registration_status";