Files
simrsx-be/internal/use-case/simgos-sync-use-case/new/soapi/helper.go
T

126 lines
2.9 KiB
Go

/*
DESCRIPTION:
Any functions that are used internally by the use-case
*/
package soapi
import (
"encoding/json"
"fmt"
ere "simrs-vx/internal/domain/references/encounter"
"strconv"
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 es.Soapi) (data esimgos.DiagnosaDanTerapi) {
value := ercl.EarlyMedicValue{}
_ = json.Unmarshal([]byte(*input.Value), &value)
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
}
func setDataSimxLog(input *esyncLog.SimxLogDto) (data esync.SoapiSimxLog) {
// encode to JSON
jsonData, _ := json.MarshalIndent(input.Payload, "", " ")
jsonString := string(jsonData)
var status erc.ProcessStatusCode
if input.IsSuccess {
status = erc.PSCSuccess
} else {
status = erc.PSCFailed
if input.ErrMessage != nil {
data.ErrMessage = input.ErrMessage
}
}
data.Value = &jsonString
data.Date = &now
data.Status = status
return
}
func setDataSimxLink(simxId, simgosId uint) (data esync.SoapiLink) {
data.Simx_Id = simxId
data.Simgos_Id = simgosId
return
}
func stringtouint(v string) uint {
u, _ := strconv.Atoi(v)
return uint(u)
}