From 80ee7f54bc2e5b9fbd3938b8b46a6a41600276bc Mon Sep 17 00:00:00 2001 From: vanilia Date: Tue, 2 Dec 2025 14:34:39 +0700 Subject: [PATCH] add helper for t_diagnosadanterapi --- .../domain/references/clinical/clinical.go | 4 +- internal/infra/sync-cfg/sync-cfg.go | 2 +- internal/infra/sync-cfg/tycovar.go | 6 +- .../simgos-sync-plugin/new/division/plugin.go | 2 +- .../new/encounter/plugin.go | 2 +- .../new/installation/plugin.go | 2 +- .../simgos-sync-plugin/new/patient/plugin.go | 2 +- .../new/specialist/plugin.go | 2 +- .../simgos-sync-plugin/new/unit/plugin.go | 2 +- .../new/encounter/case.go | 5 +- .../simgos-sync-use-case/new/soapi/case.go | 2 +- .../simgos-sync-use-case/new/soapi/helper.go | 87 ++++++++++++++++--- 12 files changed, 92 insertions(+), 26 deletions(-) diff --git a/internal/domain/references/clinical/clinical.go b/internal/domain/references/clinical/clinical.go index 523cfdb7..39b2e56d 100644 --- a/internal/domain/references/clinical/clinical.go +++ b/internal/domain/references/clinical/clinical.go @@ -325,8 +325,8 @@ type SoapiSrc struct { type EarlyMedicValue struct { Vaccinated bool `json:"vaccinated,omitempty"` - CaseStatus string `json:"case-status,omitempty"` - EncounterStatus string `json:"encounter-status,omitempty"` + CaseStatus int `json:"case-status,omitempty"` + EncounterStatus int `json:"encounter-status,omitempty"` PrimaryComplain string `json:"pri-complain,omitempty"` CurrentDiseaseHistory string `json:"cur-disea-hist,omitempty"` SpO2 int `json:"spo2,omitempty"` diff --git a/internal/infra/sync-cfg/sync-cfg.go b/internal/infra/sync-cfg/sync-cfg.go index a6a5d703..8ea63dac 100644 --- a/internal/infra/sync-cfg/sync-cfg.go +++ b/internal/infra/sync-cfg/sync-cfg.go @@ -8,7 +8,7 @@ import ( func SetConfig() { a.ParseSingleCfg(&O) - if O.Host == "" || O.Prefix == "" { + if O.TargetHost == "" || O.Prefix == "" { panic("config sync host and prefix empty") } lo.I.Println("sync url config loaded, status: DONE!!") diff --git a/internal/infra/sync-cfg/tycovar.go b/internal/infra/sync-cfg/tycovar.go index 6ae230fb..199ee4d4 100644 --- a/internal/infra/sync-cfg/tycovar.go +++ b/internal/infra/sync-cfg/tycovar.go @@ -3,7 +3,7 @@ package synccfg var O SyncUrlCfg = SyncUrlCfg{} type SyncUrlCfg struct { - Prefix string `yaml:"prefix"` - Host string `yaml:"host"` - Enable bool `yaml:"enable"` + Prefix string `yaml:"prefix"` + TargetHost string `yaml:"targetHost"` + Enable bool `yaml:"enable"` } diff --git a/internal/use-case/simgos-sync-plugin/new/division/plugin.go b/internal/use-case/simgos-sync-plugin/new/division/plugin.go index 54c1403c..a116225c 100644 --- a/internal/use-case/simgos-sync-plugin/new/division/plugin.go +++ b/internal/use-case/simgos-sync-plugin/new/division/plugin.go @@ -163,5 +163,5 @@ func Delete(input *e.DeleteDto) error { } func getPrefixEndpoint() string { - return fmt.Sprintf("%s%s/v1/division", sync.O.Host, sync.O.Prefix) + return fmt.Sprintf("%s%s/v1/division", sync.O.TargetHost, sync.O.Prefix) } diff --git a/internal/use-case/simgos-sync-plugin/new/encounter/plugin.go b/internal/use-case/simgos-sync-plugin/new/encounter/plugin.go index a6334fdb..cc5a45bb 100644 --- a/internal/use-case/simgos-sync-plugin/new/encounter/plugin.go +++ b/internal/use-case/simgos-sync-plugin/new/encounter/plugin.go @@ -68,5 +68,5 @@ func CancelSwitchUnit(input *e.ApproveCancelUnitDto) error { } func getPrefixEndpoint() string { - return fmt.Sprintf("%s%s/v1/encounter", sync.O.Host, sync.O.Prefix) + return fmt.Sprintf("%s%s/v1/encounter", sync.O.TargetHost, sync.O.Prefix) } diff --git a/internal/use-case/simgos-sync-plugin/new/installation/plugin.go b/internal/use-case/simgos-sync-plugin/new/installation/plugin.go index f2495139..386996ce 100644 --- a/internal/use-case/simgos-sync-plugin/new/installation/plugin.go +++ b/internal/use-case/simgos-sync-plugin/new/installation/plugin.go @@ -163,5 +163,5 @@ func Delete(input *e.DeleteDto) error { } func getPrefixEndpoint() string { - return fmt.Sprintf("%s%s/v1/installation", sync.O.Host, sync.O.Prefix) + return fmt.Sprintf("%s%s/v1/installation", sync.O.TargetHost, sync.O.Prefix) } diff --git a/internal/use-case/simgos-sync-plugin/new/patient/plugin.go b/internal/use-case/simgos-sync-plugin/new/patient/plugin.go index 309e1d18..90ce343f 100644 --- a/internal/use-case/simgos-sync-plugin/new/patient/plugin.go +++ b/internal/use-case/simgos-sync-plugin/new/patient/plugin.go @@ -203,5 +203,5 @@ func GenerateNomrPatient() (*string, error) { } func getPrefixEndpoint() string { - return fmt.Sprintf("%s%s/v1/patient", sync.O.Host, sync.O.Prefix) + return fmt.Sprintf("%s%s/v1/patient", sync.O.TargetHost, sync.O.Prefix) } diff --git a/internal/use-case/simgos-sync-plugin/new/specialist/plugin.go b/internal/use-case/simgos-sync-plugin/new/specialist/plugin.go index 892d7a17..a83b366a 100644 --- a/internal/use-case/simgos-sync-plugin/new/specialist/plugin.go +++ b/internal/use-case/simgos-sync-plugin/new/specialist/plugin.go @@ -163,5 +163,5 @@ func Delete(input *e.DeleteDto) error { } func getPrefixEndpoint() string { - return fmt.Sprintf("%s%s/v1/specialist", sync.O.Host, sync.O.Prefix) + return fmt.Sprintf("%s%s/v1/specialist", sync.O.TargetHost, sync.O.Prefix) } diff --git a/internal/use-case/simgos-sync-plugin/new/unit/plugin.go b/internal/use-case/simgos-sync-plugin/new/unit/plugin.go index e854d898..db8678f2 100644 --- a/internal/use-case/simgos-sync-plugin/new/unit/plugin.go +++ b/internal/use-case/simgos-sync-plugin/new/unit/plugin.go @@ -163,5 +163,5 @@ func Delete(input *e.DeleteDto) error { } func getPrefixEndpoint() string { - return fmt.Sprintf("%s%s/v1/unit", sync.O.Host, sync.O.Prefix) + return fmt.Sprintf("%s%s/v1/unit", sync.O.TargetHost, sync.O.Prefix) } diff --git a/internal/use-case/simgos-sync-use-case/new/encounter/case.go b/internal/use-case/simgos-sync-use-case/new/encounter/case.go index 59e7e345..969e8ff3 100644 --- a/internal/use-case/simgos-sync-use-case/new/encounter/case.go +++ b/internal/use-case/simgos-sync-use-case/new/encounter/case.go @@ -320,11 +320,14 @@ func UpdateStatus(input e.Encounter) (*d.Data, error) { tx := db.NewTx() err = tx.Simgos.Transaction(func(tx *gorm.DB) error { - // Step 2: Update Simgos + // Step 2: Update TPendaftaran if err = UpdateTPendaftaranData(input, simgos, "update-status", &event, tx); err != nil { return err } + // Step 3: Update TDiagnosadanterapi + // TODO: update diagnosadanterapi + return nil }) diff --git a/internal/use-case/simgos-sync-use-case/new/soapi/case.go b/internal/use-case/simgos-sync-use-case/new/soapi/case.go index 488e0f64..4124b7f6 100644 --- a/internal/use-case/simgos-sync-use-case/new/soapi/case.go +++ b/internal/use-case/simgos-sync-use-case/new/soapi/case.go @@ -14,7 +14,7 @@ import ( elog "simrs-vx/internal/domain/sync-entities/log" ) -const source = "division" +const source = "soapi" func Create(input e.CreateDto) (*d.Data, error) { var ( diff --git a/internal/use-case/simgos-sync-use-case/new/soapi/helper.go b/internal/use-case/simgos-sync-use-case/new/soapi/helper.go index 5ef86ae3..90dbd4ff 100644 --- a/internal/use-case/simgos-sync-use-case/new/soapi/helper.go +++ b/internal/use-case/simgos-sync-use-case/new/soapi/helper.go @@ -6,21 +6,88 @@ package soapi import ( "encoding/json" - erc "simrs-vx/internal/domain/references/common" + "fmt" + ere "simrs-vx/internal/domain/references/encounter" "strconv" - e "simrs-vx/internal/domain/main-entities/soapi" - soapi "simrs-vx/internal/domain/references/clinical" + ercl "simrs-vx/internal/domain/references/clinical" + erc "simrs-vx/internal/domain/references/common" + + es "simrs-vx/internal/domain/main-entities/soapi" + esimgos "simrs-vx/internal/domain/simgos-entities/t-diagnosadanterapi" esyncLog "simrs-vx/internal/domain/sync-entities/log" esync "simrs-vx/internal/domain/sync-entities/soapi" ) -func setDataEarlyMedic(input e.Soapi) (data esimgos.DiagnosaDanTerapi) { - value := soapi.EarlyMedicValue{} +func setDataEarlyMedic(input es.Soapi) (data esimgos.DiagnosaDanTerapi) { + value := ercl.EarlyMedicValue{} _ = json.Unmarshal([]byte(*input.Value), &value) - data.Idxdaftar = toPtr(uint(input.Employee_Id)) + data.Idxdaftar = *input.Encounter_Id + data.TekananDarah = fmt.Sprintf("%v/%v", value.SystolicBloodPressure, value.DiastolicBloodPressure) + + data.GolonganDarah = value.BloodType + if value.BloodType == "" { + data.GolonganDarah = "X" + } + + data.TinggiBadan = float64(value.Height) + data.BeratBadan = float64(value.Weight) + data.Diagnosa = value.EarlyMedicDiagnose + data.Terapi = value.Therapy + data.Anamnesa = value.PrimaryComplain + + if e := input.Encounter; e != nil { + if p := e.Patient; p != nil { + data.Nomr = *p.Number + } + + data.Tanggal = e.VisitDate + data.Kdpoly = stringtouint(*e.Unit_Code) + data.Kddokter = stringtouint(*e.Appointment_Doctor_Code) + + if e.Class_Code == ere.ECAmbulatory { + data.Rajal = 1 + } + + } + + if e := input.Employee; e != nil { + if u := e.User; u != nil { + data.Nip = u.Name + } + } + + // TODO : status, tindakan_mdeis (?) + data.KunjunganBl = uint(value.EncounterStatus) + data.KasusBl = uint(value.CaseStatus) + + data.PemeriksaanFisik = value.PhysicalExamination + data.RiwayatPasien = value.CurrentDiseaseHistory + + if value.Vaccinated { + data.SudahVaksin = "YA" + } else { + data.SudahVaksin = "TIDAK" + } + + data.DenyutJantung = strconv.Itoa(value.Pulse) + data.Pernapasan = strconv.Itoa(value.RespiratoryRate) + data.Suhu = strconv.Itoa(value.Temperature) + data.Sp02 = strconv.Itoa(value.SpO2) + + if o := value.ExpectedOutcome; len(o) > 0 { + expectedOutput := []string{} + + for _, v := range o { + expectedOutput = append(expectedOutput, v.Name) + } + + jsonData, _ := json.MarshalIndent(value.ExpectedOutcome, "", " ") + data.TargetCapaian = string(jsonData) + } + return } @@ -52,11 +119,7 @@ func setDataSimxLink(simxId, simgosId uint) (data esync.SoapiLink) { return } -func toPtr(v uint) *uint { - return &v -} -func stringtouint(v string) *uint { +func stringtouint(v string) uint { u, _ := strconv.Atoi(v) - point := uint(u) - return &point + return uint(u) }