From cf2ade9ecc937a02a1d0e020a1d28b92b29eae6c Mon Sep 17 00:00:00 2001 From: avicenan Date: Wed, 13 May 2026 17:12:42 +0900 Subject: [PATCH 1/6] feat(public): counter table for count object row --- src/entity/counter.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/entity/counter.ts diff --git a/src/entity/counter.ts b/src/entity/counter.ts new file mode 100644 index 0000000..6eddb31 --- /dev/null +++ b/src/entity/counter.ts @@ -0,0 +1,29 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from "typeorm"; + +@Entity("counter") +export class Counter { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ + nullable: false, + length: 128, + unique: true, + type: "varchar", + }) + key: string; + + @Column({ + nullable: false, + type: "bigint", + }) + value: string; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; +} From ea608d79e9617e29149bc2143ecaeb0d10031911 Mon Sep 17 00:00:00 2001 From: avicenan Date: Wed, 13 May 2026 17:24:32 +0900 Subject: [PATCH 2/6] fix(counter): exporting counter clsss --- src/schema/public.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/schema/public.ts b/src/schema/public.ts index 89fea2b..ccd022b 100644 --- a/src/schema/public.ts +++ b/src/schema/public.ts @@ -54,6 +54,7 @@ export * from "../entity/ward"; export * from "../entity/responsible_party_consent"; export * from "../entity/foster_care_history"; export * from "../entity/notification"; +export * from "../entity/counter"; export * from "../types/public"; export * from "../types/action"; From edcb74f0c817ae1b66a9e8beeb78f94038506713 Mon Sep 17 00:00:00 2001 From: avicenan Date: Wed, 13 May 2026 19:47:15 +0900 Subject: [PATCH 3/6] fix(patient): make first and last name nullable --- src/entity/emr/emr_patient.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/entity/emr/emr_patient.ts b/src/entity/emr/emr_patient.ts index f9e0c9d..6742904 100644 --- a/src/entity/emr/emr_patient.ts +++ b/src/entity/emr/emr_patient.ts @@ -21,10 +21,10 @@ export class EmrPatient { @Column({ nullable: true, length: 64 }) passport_number: string; - @Column({ nullable: false, length: 256 }) + @Column({ nullable: true, length: 256 }) first_name: string; - @Column({ nullable: false, length: 256 }) + @Column({ nullable: true, length: 256 }) last_name: string; @Column({ nullable: true, length: 256 }) From 4b554ca78d31197030aa68c0b5f5fedc874181c9 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 14 May 2026 11:10:17 +0900 Subject: [PATCH 4/6] feat(regis):add referral_hospital on emr regis --- src/entity/emr/emr_registration.ts | 120 ++++++++++++++--------------- 1 file changed, 57 insertions(+), 63 deletions(-) diff --git a/src/entity/emr/emr_registration.ts b/src/entity/emr/emr_registration.ts index 6d8c7a6..8d78122 100644 --- a/src/entity/emr/emr_registration.ts +++ b/src/entity/emr/emr_registration.ts @@ -1,15 +1,4 @@ -import { - Entity, - PrimaryGeneratedColumn, - Column, - CreateDateColumn, - UpdateDateColumn, - DeleteDateColumn, - ManyToOne, - JoinColumn, - OneToOne, - ManyToMany -} from "typeorm"; +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn, OneToOne, ManyToMany } from "typeorm"; import { RegistrationType } from "../../types/registration_type"; import { RegistrationStatus } from "../../types/registration_status"; @@ -18,6 +7,7 @@ import { PatientGuarantor } from "../patient_guarantor"; import { EmrRegistrationOutpatient } from "./emr_registration_outpatient"; import { EmrRegistrationEmergency } from "./emr_registration_emergency"; import { EmrRegistrationEmergencyResponsible } from "./emr_registration_emergency_responsible"; +import { RefferalHospital } from "../refferal_hospital"; /** * Registrasi base: data umum untuk semua tipe (rawat jalan, rawat inap, emergency, hemodialysis). @@ -26,75 +16,79 @@ import { EmrRegistrationEmergencyResponsible } from "./emr_registration_emergenc */ @Entity("emr_registrations", { schema: "emr" }) export class EmrRegistration { - @PrimaryGeneratedColumn("uuid") - id: string; + @PrimaryGeneratedColumn("uuid") + id: string; - @OneToOne(() => EmrRegistrationEmergencyResponsible, (emergency) => emergency.emrregistration) - emergency_responsible: EmrRegistrationEmergencyResponsible; + @OneToOne(() => EmrRegistrationEmergencyResponsible, (emergency) => emergency.emrregistration) + emergency_responsible: EmrRegistrationEmergencyResponsible; - @OneToOne(() => EmrRegistrationOutpatient, (out) => out.registration) - outpatient: EmrRegistrationOutpatient; + @OneToOne(() => EmrRegistrationOutpatient, (out) => out.registration) + outpatient: EmrRegistrationOutpatient; - @OneToOne(() => EmrRegistrationEmergency, (emergency) => emergency.registration) - emergency: EmrRegistrationEmergency; + @OneToOne(() => EmrRegistrationEmergency, (emergency) => emergency.registration) + emergency: EmrRegistrationEmergency; - @ManyToOne(() => EmrPatient, { onDelete: "NO ACTION" }) - @JoinColumn() - patient: EmrPatient; + @ManyToOne(() => EmrPatient, { onDelete: "NO ACTION" }) + @JoinColumn() + patient: EmrPatient; - @Column({ nullable: true, type: "text" }) - cancellation_reason: string; + @Column({ nullable: true, type: "text" }) + cancellation_reason: string; - @ManyToOne(() => PatientGuarantor, { onDelete: "NO ACTION" }) - @JoinColumn() - guarantor: PatientGuarantor; + @ManyToOne(() => PatientGuarantor, { onDelete: "NO ACTION" }) + @JoinColumn() + guarantor: PatientGuarantor; - @Column({ - type: "varchar", - length: 32, - nullable: false, - }) - registration_type: RegistrationType; + @Column({ + type: "varchar", + length: 32, + nullable: false, + }) + registration_type: RegistrationType; - @Column({ type: "date", nullable: false }) - registration_date: Date; + @Column({ type: "date", nullable: false }) + registration_date: Date; - @Column({ type: "text", nullable: true }) - reason_notes: string; + @Column({ type: "text", nullable: true }) + reason_notes: string; - @Column({ nullable: false, length: 32 }) - status: RegistrationStatus; + @Column({ nullable: false, length: 32 }) + status: RegistrationStatus; - @Column({ type: "date", nullable: true }) - visit_date: Date; + @Column({ type: "date", nullable: true }) + visit_date: Date; - @Column({ nullable: true, type: "text" }) - fullname: string; + @Column({ nullable: true, type: "text" }) + fullname: string; - @Column({ nullable: true, type: "date" }) - birthdate: Date; + @Column({ nullable: true, type: "date" }) + birthdate: Date; - @Column({ nullable: true, type: "text" }) - idcard: string; + @Column({ nullable: true, type: "text" }) + idcard: string; - @Column() - @CreateDateColumn() - created_at: Date; + @ManyToOne(() => RefferalHospital, { onDelete: "NO ACTION", nullable: true }) + @JoinColumn({ name: "referral_hospital_id" }) + referral_hospital: RefferalHospital; - @Column({ nullable: true, length: 256 }) - created_by: string; + @Column() + @CreateDateColumn() + created_at: Date; - @Column({ nullable: true }) - @UpdateDateColumn() - updated_at: Date; + @Column({ nullable: true, length: 256 }) + created_by: string; - @Column({ nullable: true, length: 256 }) - updated_by: string; + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; - @Column({ nullable: true }) - @DeleteDateColumn() - deleted_at: Date; + @Column({ nullable: true, length: 256 }) + updated_by: string; - @Column({ nullable: true, length: 256 }) - deleted_by: string; + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ nullable: true, length: 256 }) + deleted_by: string; } From 41739b6d6c01440871c57d62c2bfd59c4f159fe8 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 14 May 2026 11:57:44 +0900 Subject: [PATCH 5/6] feat(regis): add patient category type --- src/entity/emr/emr_registration.ts | 3 +++ src/schema/emr.ts | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/entity/emr/emr_registration.ts b/src/entity/emr/emr_registration.ts index 8d78122..d69a069 100644 --- a/src/entity/emr/emr_registration.ts +++ b/src/entity/emr/emr_registration.ts @@ -71,6 +71,9 @@ export class EmrRegistration { @JoinColumn({ name: "referral_hospital_id" }) referral_hospital: RefferalHospital; + @Column({ nullable: true, type: "text" }) + patient_category: string; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/schema/emr.ts b/src/schema/emr.ts index 69bdd49..d91ae38 100644 --- a/src/schema/emr.ts +++ b/src/schema/emr.ts @@ -51,4 +51,5 @@ export * from "../types/pharmacy_order_status"; export * from "../types/prescription_pharmacy_status"; export * from "../types/radiology_order_status"; export * from "../types/laboratory_order_status"; -export * from "../enum/consciousness" +export * from "../enum/consciousness"; +export * from "../types/patient_category"; From 5f060a3c4f82489bb3b74c22d1673e8b52b3bd1f Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 14 May 2026 11:58:14 +0900 Subject: [PATCH 6/6] feat(regis): add patient category type --- src/entity/emr/emr_registration.ts | 3 +++ src/schema/emr.ts | 3 ++- src/types/patient_category.ts | 11 +++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/types/patient_category.ts diff --git a/src/entity/emr/emr_registration.ts b/src/entity/emr/emr_registration.ts index 8d78122..d69a069 100644 --- a/src/entity/emr/emr_registration.ts +++ b/src/entity/emr/emr_registration.ts @@ -71,6 +71,9 @@ export class EmrRegistration { @JoinColumn({ name: "referral_hospital_id" }) referral_hospital: RefferalHospital; + @Column({ nullable: true, type: "text" }) + patient_category: string; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/schema/emr.ts b/src/schema/emr.ts index 69bdd49..d91ae38 100644 --- a/src/schema/emr.ts +++ b/src/schema/emr.ts @@ -51,4 +51,5 @@ export * from "../types/pharmacy_order_status"; export * from "../types/prescription_pharmacy_status"; export * from "../types/radiology_order_status"; export * from "../types/laboratory_order_status"; -export * from "../enum/consciousness" +export * from "../enum/consciousness"; +export * from "../types/patient_category"; diff --git a/src/types/patient_category.ts b/src/types/patient_category.ts new file mode 100644 index 0000000..3cec1e7 --- /dev/null +++ b/src/types/patient_category.ts @@ -0,0 +1,11 @@ +/** + * Workflow kategori pendaftaran pasien. + * Existing: pasien sudah lama daftar + * New: pasien baru dari pendaftaran pasien + * Foreigner: pasien asing + */ +export enum PatientCategory { + EXISTING = "existing", + NEW = "new", + FOREIGNER = "foreigner", +}