39 lines
1.2 KiB
Go
39 lines
1.2 KiB
Go
package condition
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// MapToInternalAPI memetakan data database menjadi payload untuk Internal API
|
|
// TODO: Sesuaikan dengan JSON Payload endpoint Condition Anda
|
|
func MapToInternalAPI(dbData *ConditionDB, orgID string) map[string]interface{} {
|
|
waktuDiagnosa := time.Now()
|
|
if dbData.TglDiagnosa.Valid {
|
|
waktuDiagnosa = dbData.TglDiagnosa.Time
|
|
}
|
|
|
|
payload := map[string]interface{}{
|
|
"condition_id": fmt.Sprintf("%d", dbData.IdxDiagnosa),
|
|
"encounter_id": fmt.Sprintf("%d", dbData.IdxDaftar),
|
|
"patient_id": dbData.NoMR.String, // Perlu diganti IHS Number di service
|
|
"code": dbData.KdICD10.String,
|
|
"display": dbData.NamaPenyakit.String,
|
|
"recorded_date": waktuDiagnosa.Format(time.RFC3339),
|
|
}
|
|
return payload
|
|
}
|
|
|
|
func MapToSyncLog(idx int64, fhirID string, reqPayload interface{}, respBody []byte, status string, errMsg string) ConditionSyncLog {
|
|
reqBytes, _ := json.MarshalIndent(reqPayload, "", " ")
|
|
return ConditionSyncLog{
|
|
IdxDiagnosa: idx,
|
|
ConditionID: fhirID,
|
|
RequestPayload: string(reqBytes),
|
|
ResponsePayload: string(respBody),
|
|
Status: status,
|
|
ErrorMessage: errMsg,
|
|
}
|
|
}
|