update
This commit is contained in:
45
src/entity/emr/emr_emergency_transfer_attached_devices.ts
Normal file
45
src/entity/emr/emr_emergency_transfer_attached_devices.ts
Normal file
@ -0,0 +1,45 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn } from "typeorm";
|
||||
import { EmrEmergencyTransfer } from "./emr_emergency_transfers";
|
||||
|
||||
@Entity("emr_emergency_transfer_attached_devices", { schema: "emr" })
|
||||
export class EmrEmergencyTransferAttachedDevice {
|
||||
@PrimaryGeneratedColumn("uuid")
|
||||
id: string;
|
||||
|
||||
@ManyToOne(() => EmrEmergencyTransfer, (transfer) => transfer.diagnostics, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
emergency_transfer: EmrEmergencyTransfer;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
device_type: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
location: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
size: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
note: 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;
|
||||
}
|
||||
@ -0,0 +1,41 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn } from "typeorm";
|
||||
import { EmrEmergencyTransfer } from "./emr_emergency_transfers";
|
||||
|
||||
@Entity("emr_emergency_transfer_clinical_interventions", { schema: "emr" })
|
||||
export class EmrEmergencyTransferClinicalIntervention {
|
||||
@PrimaryGeneratedColumn("uuid")
|
||||
id: string;
|
||||
|
||||
@ManyToOne(() => EmrEmergencyTransfer, (transfer) => transfer.clinical_interventions, {
|
||||
onDelete: "NO ACTION",
|
||||
})
|
||||
@JoinColumn({})
|
||||
emergency_transfer: EmrEmergencyTransfer;
|
||||
|
||||
@Column({ nullable: true, type: "varchar", length: 128 })
|
||||
intervention_category: string;
|
||||
|
||||
@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;
|
||||
}
|
||||
39
src/entity/emr/emr_emergency_transfer_diagnostics.ts
Normal file
39
src/entity/emr/emr_emergency_transfer_diagnostics.ts
Normal file
@ -0,0 +1,39 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn } from "typeorm";
|
||||
import { EmrEmergencyTransfer } from "./emr_emergency_transfers";
|
||||
|
||||
@Entity("emr_emergency_transfer_diagnostics", { schema: "emr" })
|
||||
export class EmrEmergencyTransferDiagnostic {
|
||||
@PrimaryGeneratedColumn("uuid")
|
||||
id: string;
|
||||
|
||||
@ManyToOne(() => EmrEmergencyTransfer, (transfer) => transfer.diagnostics, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
emergency_transfer: EmrEmergencyTransfer;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
test_name: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
result: 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;
|
||||
}
|
||||
51
src/entity/emr/emr_emergency_transfer_medications.ts
Normal file
51
src/entity/emr/emr_emergency_transfer_medications.ts
Normal file
@ -0,0 +1,51 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn } from "typeorm";
|
||||
import { EmrEmergencyTransfer } from "./emr_emergency_transfers";
|
||||
|
||||
@Entity("emr_emergency_transfer_medications", { schema: "emr" })
|
||||
export class EmrEmergencyTransferMedication {
|
||||
@PrimaryGeneratedColumn("uuid")
|
||||
id: string;
|
||||
|
||||
@ManyToOne(() => EmrEmergencyTransfer, (transfer) => transfer.medications, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
emergency_transfer: EmrEmergencyTransfer;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
medicine_type: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
medicine_name: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
dosage: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
medicine_frequency: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
medicine_route: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
remaining_medicine: 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;
|
||||
}
|
||||
85
src/entity/emr/emr_emergency_transfer_patient_conditions.ts
Normal file
85
src/entity/emr/emr_emergency_transfer_patient_conditions.ts
Normal file
@ -0,0 +1,85 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn } from "typeorm";
|
||||
import { EmrEmergencyTransfer } from "./emr_emergency_transfers";
|
||||
|
||||
@Entity("emr_emergency_transfer_patient_conditions", { schema: "emr" })
|
||||
export class EmrEmergencyTransferPatientCondition {
|
||||
// Primary key data kondisi pasien saat pindah
|
||||
@PrimaryGeneratedColumn("uuid")
|
||||
id: string;
|
||||
|
||||
// Relasi ke data transfer antar unit
|
||||
@ManyToOne(() => EmrEmergencyTransfer, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
emergency_transfer: EmrEmergencyTransfer;
|
||||
|
||||
// KU pasien saat pindah
|
||||
@Column({ nullable: true, type: "text" })
|
||||
general_condition: string;
|
||||
|
||||
// Kesadaran pasien saat pindah
|
||||
@Column({ nullable: true, type: "text" })
|
||||
consciousness: string;
|
||||
|
||||
// Nilai GCS E
|
||||
@Column({ nullable: true, type: "int" })
|
||||
gcs_eye: number;
|
||||
|
||||
// Nilai GCS M
|
||||
@Column({ nullable: true, type: "int" })
|
||||
gcs_motor: number;
|
||||
|
||||
// Nilai GCS V
|
||||
@Column({ nullable: true, type: "int" })
|
||||
gcs_verbal: number;
|
||||
|
||||
// Total nilai GCS
|
||||
@Column({ nullable: true, type: "int" })
|
||||
gcs_total: number;
|
||||
|
||||
// Saturasi oksigen / SaO2
|
||||
@Column({ nullable: true, type: "text" })
|
||||
oxygen_saturation: string;
|
||||
|
||||
// Tekanan darah
|
||||
@Column({ nullable: true, type: "text" })
|
||||
blood_pressure: string;
|
||||
|
||||
// Suhu tubuh
|
||||
@Column({ nullable: true, type: "text" })
|
||||
temperature: string;
|
||||
|
||||
// Nadi
|
||||
@Column({ nullable: true, type: "text" })
|
||||
pulse: string;
|
||||
|
||||
// Respiratory rate / RR
|
||||
@Column({ nullable: true, type: "text" })
|
||||
respiratory_rate: string;
|
||||
|
||||
// Waktu data dibuat
|
||||
@Column()
|
||||
@CreateDateColumn()
|
||||
created_at: Date;
|
||||
|
||||
// User pembuat data
|
||||
@Column({ nullable: true, length: 256 })
|
||||
created_by: string;
|
||||
|
||||
// Waktu data terakhir diubah
|
||||
@Column({ nullable: true })
|
||||
@UpdateDateColumn()
|
||||
updated_at: Date;
|
||||
|
||||
// User pengubah terakhir
|
||||
@Column({ nullable: true, length: 256 })
|
||||
updated_by: string;
|
||||
|
||||
// Waktu soft delete
|
||||
@Column({ nullable: true })
|
||||
@DeleteDateColumn()
|
||||
deleted_at: Date;
|
||||
|
||||
// User yang melakukan soft delete
|
||||
@Column({ nullable: true, length: 256 })
|
||||
deleted_by: string;
|
||||
}
|
||||
173
src/entity/emr/emr_emergency_transfers.ts
Normal file
173
src/entity/emr/emr_emergency_transfers.ts
Normal file
@ -0,0 +1,173 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn, OneToMany } from "typeorm";
|
||||
import { Room } from "../room";
|
||||
import { EmrBoardingRoom } from "./emr_boarding_rooms";
|
||||
import { EmrEmergencyTransferMedication } from "./emr_emergency_transfer_medications";
|
||||
import { EmrEmergencyTransferDiagnostic } from "./emr_emergency_transfer_diagnostics";
|
||||
import { EmrEmergencyTransferClinicalIntervention } from "./emr_emergency_transfer_clinical_interventions";
|
||||
import { EmrEmergencyTransferPatientCondition } from "./emr_emergency_transfer_patient_conditions";
|
||||
import { User } from "../users";
|
||||
import { EmrDiagnosis } from "./emr_diagnosis";
|
||||
import { TransferMethodType, TransferRiskType } from "../../types/emr";
|
||||
import { EmrEmergencyTransferAttachedDevice } from "./emr_emergency_transfer_attached_devices";
|
||||
|
||||
@Entity("emr_emergency_transfers", { schema: "emr" })
|
||||
export class EmrEmergencyTransfer {
|
||||
// Primary key data transfer antar unit
|
||||
@PrimaryGeneratedColumn("uuid")
|
||||
id: string;
|
||||
|
||||
// Asal ruang rawat
|
||||
@ManyToOne(() => Room, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
origin_room: Room;
|
||||
|
||||
// Ruang rawat selanjutnya (tujuan pindah)
|
||||
@ManyToOne(() => EmrBoardingRoom, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
destination_room: EmrBoardingRoom;
|
||||
|
||||
// Tanggal masuk / jam
|
||||
@Column({ type: "timestamp", nullable: true })
|
||||
admission_datetime: Date;
|
||||
|
||||
// Tanggal pindah / jam
|
||||
@Column({ type: "timestamp", nullable: true })
|
||||
transfer_datetime: Date;
|
||||
|
||||
// Indikasi masuk
|
||||
@Column({ nullable: true, type: "text" })
|
||||
admission_indication: string;
|
||||
|
||||
// DPJP utama
|
||||
@ManyToOne(() => User, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
primary_attending_physician: User;
|
||||
|
||||
// DPJP tambahan (rawat bersama)
|
||||
@Column({ nullable: true, type: "text", array: true })
|
||||
additional_attending_physicians: string[];
|
||||
|
||||
// Diagnosis utama
|
||||
@ManyToOne(() => EmrDiagnosis, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
primary_diagnosis: EmrDiagnosis;
|
||||
|
||||
// Diagnosis sekunder
|
||||
@Column({ nullable: true, type: "text", array: true })
|
||||
secondary_diagnoses: string[];
|
||||
|
||||
// Alasan pemindahan: kondisi memburuk / tidak stabil
|
||||
@Column({ nullable: true, type: "boolean", default: false })
|
||||
transfer_reason_condition_worsening: boolean;
|
||||
|
||||
// Alasan pemindahan: butuh tenaga ahli / tenaga kurang
|
||||
@Column({ nullable: true, type: "boolean", default: false })
|
||||
transfer_reason_staff_needed: boolean;
|
||||
|
||||
// Alasan pemindahan: fasilitas / peralatan lebih baik
|
||||
@Column({ nullable: true, type: "boolean", default: false })
|
||||
transfer_reason_facility_needed: boolean;
|
||||
|
||||
// Alasan pemindahan: pemeriksaan penunjang
|
||||
@Column({ nullable: true, type: "boolean", default: false })
|
||||
transfer_reason_supporting_exam: boolean;
|
||||
|
||||
// Alasan pemindahan: lain-lain (checkbox)
|
||||
@Column({ nullable: true, type: "boolean", default: false })
|
||||
transfer_reason_other: boolean;
|
||||
|
||||
// Alasan pemindahan: keterangan lain-lain
|
||||
@Column({ nullable: true, type: "text" })
|
||||
transfer_reason_other_text: string;
|
||||
|
||||
// Riwayat kesehatan
|
||||
@Column({ nullable: true, type: "text" })
|
||||
medical_history: string;
|
||||
|
||||
// Metode pemindahan pasien
|
||||
@Column({ nullable: true, default: "stretcher" })
|
||||
transfer_method: TransferMethodType;
|
||||
|
||||
// Risiko selama transfer
|
||||
@Column({ nullable: true })
|
||||
transfer_risk: TransferRiskType;
|
||||
|
||||
// Risiko selama transfer: keterangan lain-lain
|
||||
@Column({ nullable: true, type: "text" })
|
||||
transfer_risk_other_text: string;
|
||||
|
||||
// Risiko jatuh
|
||||
@Column({ nullable: true, type: "text" })
|
||||
fall_risk: string;
|
||||
|
||||
// Nyeri
|
||||
@Column({ nullable: true, type: "text" })
|
||||
pain: string;
|
||||
|
||||
// Persetujuan pasien/keluarga (ya/tidak)
|
||||
@Column({ nullable: true, type: "boolean", default: false })
|
||||
transfer_consent: boolean;
|
||||
|
||||
// Nama pemberi persetujuan (jika keluarga)
|
||||
@Column({ nullable: true, type: "text" })
|
||||
consenter_name: string;
|
||||
|
||||
// Hubungan pemberi persetujuan dengan pasien
|
||||
@Column({ nullable: true, type: "text" })
|
||||
consenter_relationship: string;
|
||||
|
||||
// Kategori transfer pasien (0/1/2/3)
|
||||
@Column({ nullable: true, type: "text" })
|
||||
category_patient: string;
|
||||
|
||||
// TTD pasien / keluarga (path/base64 sesuai implementasi)
|
||||
@Column({ nullable: true, type: "text" })
|
||||
patient_or_family_signature: string;
|
||||
|
||||
// TTD petugas pendamping
|
||||
@Column({ nullable: true, type: "text" })
|
||||
staff_signature: string;
|
||||
|
||||
// Turunan data prosedur yang dilakukan
|
||||
@Column({ nullable: true, type: "text" })
|
||||
procedure: string;
|
||||
|
||||
// Turunan data pemeriksaan diagnostik
|
||||
@OneToMany(() => EmrEmergencyTransferDiagnostic, (row) => row.emergency_transfer, { onDelete: "NO ACTION" })
|
||||
diagnostics: EmrEmergencyTransferDiagnostic[];
|
||||
|
||||
// Turunan data obat yang diberikan saat transfer
|
||||
@OneToMany(() => EmrEmergencyTransferMedication, (row) => row.emergency_transfer, { onDelete: "NO ACTION" })
|
||||
medications: EmrEmergencyTransferMedication[];
|
||||
|
||||
// Turunan data alat yang terpasang di pasien
|
||||
@OneToMany(() => EmrEmergencyTransferAttachedDevice, (row) => row.emergency_transfer, { onDelete: "NO ACTION" })
|
||||
attached_devices: EmrEmergencyTransferAttachedDevice;
|
||||
|
||||
// Turunan data tindakan klinis (infus, oksigen, dll)
|
||||
@OneToMany(() => EmrEmergencyTransferClinicalIntervention, (row) => row.emergency_transfer, {
|
||||
onDelete: "NO ACTION",
|
||||
})
|
||||
clinical_interventions: EmrEmergencyTransferClinicalIntervention[];
|
||||
|
||||
@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;
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn } from "typeorm";
|
||||
import { InpatientRoomBed } from "./inpatient_room_beds";
|
||||
import { Room } from "./room";
|
||||
|
||||
@Entity("inpatient_room_bed_details")
|
||||
export class InpatientRoomBedDetail {
|
||||
@ -13,15 +14,17 @@ export class InpatientRoomBedDetail {
|
||||
@Column({ type: "timestamp", nullable: true })
|
||||
admission_datetime: Date;
|
||||
|
||||
@ManyToOne(() => Room, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
origin_room: Room;
|
||||
|
||||
@ManyToOne(() => Room, { onDelete: "NO ACTION" })
|
||||
@JoinColumn()
|
||||
destination_room: Room;
|
||||
|
||||
@Column({ type: "timestamp", nullable: true })
|
||||
transfer_datetime: Date;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
origin_care_unit: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
destination_care_unit: string;
|
||||
|
||||
@Column({ nullable: true, type: "text" })
|
||||
admission_indication: string;
|
||||
|
||||
|
||||
@ -27,6 +27,13 @@ export * from "../entity/emr/emr_pharmacy_order";
|
||||
export * from "../entity/emr/emr_pharmacy_order_activity";
|
||||
export * from "../entity/emr/emr_registration_emergency_responsible";
|
||||
export * from "../entity/emr/emr_discharge_status_emergency";
|
||||
export * from "../entity/emr/emr_emergency_transfers";
|
||||
export * from "../entity/emr/emr_emergency_transfer_medications";
|
||||
export * from "../entity/emr/emr_emergency_transfer_attached_devices";
|
||||
export * from "../entity/emr/emr_emergency_transfer_diagnostics";
|
||||
export * from "../entity/emr/emr_emergency_transfer_clinical_interventions";
|
||||
export * from "../entity/emr/emr_emergency_transfer_patient_conditions";
|
||||
export * from "../entity/emr/emr_emergency_transfer_procedures";
|
||||
export * from "../entity/emr/emr_physical_examination_emergency";
|
||||
export * from "../entity/emr/emr_doctor_order_emergency";
|
||||
export * from "../entity/emr/emr_atenatal_care";
|
||||
|
||||
14
src/types/emr.ts
Normal file
14
src/types/emr.ts
Normal file
@ -0,0 +1,14 @@
|
||||
export enum TransferMethodType {
|
||||
"Wheelchair" = "wheelchair",
|
||||
"Stretcher" = "stretcher",
|
||||
"Bed" = "bed",
|
||||
}
|
||||
|
||||
export enum TransferRiskType {
|
||||
"RespiratoryArrest" = "respiratory_arrest",
|
||||
"CardiacArrest" = "cardiac_arrest",
|
||||
"Vomiting" = "vomiting",
|
||||
"Bleeding" = "bleeding",
|
||||
"Seizure" = "seizure",
|
||||
"Other" = "other",
|
||||
}
|
||||
Reference in New Issue
Block a user