add helper for t_diagnosadanterapi

This commit is contained in:
vanilia
2025-12-02 14:34:39 +07:00
parent 5acd02287b
commit 80ee7f54bc
12 changed files with 92 additions and 26 deletions

No files matched your search

@@ -325,8 +325,8 @@ type SoapiSrc struct {
type EarlyMedicValue struct { type EarlyMedicValue struct {
Vaccinated bool `json:"vaccinated,omitempty"` Vaccinated bool `json:"vaccinated,omitempty"`
CaseStatus string `json:"case-status,omitempty"` CaseStatus int `json:"case-status,omitempty"`
EncounterStatus string `json:"encounter-status,omitempty"` EncounterStatus int `json:"encounter-status,omitempty"`
PrimaryComplain string `json:"pri-complain,omitempty"` PrimaryComplain string `json:"pri-complain,omitempty"`
CurrentDiseaseHistory string `json:"cur-disea-hist,omitempty"` CurrentDiseaseHistory string `json:"cur-disea-hist,omitempty"`
SpO2 int `json:"spo2,omitempty"` SpO2 int `json:"spo2,omitempty"`
+1 -1
View File
@@ -8,7 +8,7 @@ import (
func SetConfig() { func SetConfig() {
a.ParseSingleCfg(&O) a.ParseSingleCfg(&O)
if O.Host == "" || O.Prefix == "" { if O.TargetHost == "" || O.Prefix == "" {
panic("config sync host and prefix empty") panic("config sync host and prefix empty")
} }
lo.I.Println("sync url config loaded, status: DONE!!") lo.I.Println("sync url config loaded, status: DONE!!")
+3 -3
View File
@@ -3,7 +3,7 @@ package synccfg
var O SyncUrlCfg = SyncUrlCfg{} var O SyncUrlCfg = SyncUrlCfg{}
type SyncUrlCfg struct { type SyncUrlCfg struct {
Prefix string `yaml:"prefix"` Prefix string `yaml:"prefix"`
Host string `yaml:"host"` TargetHost string `yaml:"targetHost"`
Enable bool `yaml:"enable"` Enable bool `yaml:"enable"`
} }
@@ -163,5 +163,5 @@ func Delete(input *e.DeleteDto) error {
} }
func getPrefixEndpoint() string { 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)
} }
@@ -68,5 +68,5 @@ func CancelSwitchUnit(input *e.ApproveCancelUnitDto) error {
} }
func getPrefixEndpoint() string { 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)
} }
@@ -163,5 +163,5 @@ func Delete(input *e.DeleteDto) error {
} }
func getPrefixEndpoint() string { 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)
} }
@@ -203,5 +203,5 @@ func GenerateNomrPatient() (*string, error) {
} }
func getPrefixEndpoint() string { 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)
} }
@@ -163,5 +163,5 @@ func Delete(input *e.DeleteDto) error {
} }
func getPrefixEndpoint() string { 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)
} }
@@ -163,5 +163,5 @@ func Delete(input *e.DeleteDto) error {
} }
func getPrefixEndpoint() string { 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)
} }
@@ -320,11 +320,14 @@ func UpdateStatus(input e.Encounter) (*d.Data, error) {
tx := db.NewTx() tx := db.NewTx()
err = tx.Simgos.Transaction(func(tx *gorm.DB) error { 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 { if err = UpdateTPendaftaranData(input, simgos, "update-status", &event, tx); err != nil {
return err return err
} }
// Step 3: Update TDiagnosadanterapi
// TODO: update diagnosadanterapi
return nil return nil
}) })
@@ -14,7 +14,7 @@ import (
elog "simrs-vx/internal/domain/sync-entities/log" elog "simrs-vx/internal/domain/sync-entities/log"
) )
const source = "division" const source = "soapi"
func Create(input e.CreateDto) (*d.Data, error) { func Create(input e.CreateDto) (*d.Data, error) {
var ( var (
@@ -6,21 +6,88 @@ package soapi
import ( import (
"encoding/json" "encoding/json"
erc "simrs-vx/internal/domain/references/common" "fmt"
ere "simrs-vx/internal/domain/references/encounter"
"strconv" "strconv"
e "simrs-vx/internal/domain/main-entities/soapi" ercl "simrs-vx/internal/domain/references/clinical"
soapi "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" esimgos "simrs-vx/internal/domain/simgos-entities/t-diagnosadanterapi"
esyncLog "simrs-vx/internal/domain/sync-entities/log" esyncLog "simrs-vx/internal/domain/sync-entities/log"
esync "simrs-vx/internal/domain/sync-entities/soapi" esync "simrs-vx/internal/domain/sync-entities/soapi"
) )
func setDataEarlyMedic(input e.Soapi) (data esimgos.DiagnosaDanTerapi) { func setDataEarlyMedic(input es.Soapi) (data esimgos.DiagnosaDanTerapi) {
value := soapi.EarlyMedicValue{} value := ercl.EarlyMedicValue{}
_ = json.Unmarshal([]byte(*input.Value), &value) _ = 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 return
} }
@@ -52,11 +119,7 @@ func setDataSimxLink(simxId, simgosId uint) (data esync.SoapiLink) {
return return
} }
func toPtr(v uint) *uint { func stringtouint(v string) uint {
return &v
}
func stringtouint(v string) *uint {
u, _ := strconv.Atoi(v) u, _ := strconv.Atoi(v)
point := uint(u) return uint(u)
return &point
} }