Files
satusehat-worker/internal/worker/satusehat/imagingstudy/mapper.go
T
2026-04-26 08:06:57 +00:00

44 lines
1.2 KiB
Go

package imagingstudy
import (
"encoding/json"
"time"
)
// MapToInternalAPI memetakan data gabungan ke payload API Internal SatuSehat
func MapToInternalAPI(dbData *ImagingStudyDB, orgID string) map[string]interface{} {
waktu := time.Now()
if dbData.StartedDate.Valid {
waktu = dbData.StartedDate.Time
}
procedureCode := dbData.Modality.String
if procedureCode == "" {
procedureCode = "DX" // Default ke "DX" jika modality kosong
}
payload := map[string]interface{}{
"organization_id": orgID,
"accession_number": dbData.AccessionNumber.String,
"service_request_id": dbData.ServiceRequestID.String,
"patient_id": dbData.PatientIHS.String,
"encounter_id": dbData.EncounterIHS.String,
"status": "available",
"started": waktu.Format(time.RFC3339),
"procedure_code": procedureCode,
}
return payload
}
func MapToSyncLog(id string, fhirID string, reqPayload interface{}, respBody []byte, status string, errMsg string) SyncLog {
reqBytes, _ := json.Marshal(reqPayload)
return SyncLog{
ImagingStudyID: id,
SatuSehatID: fhirID,
RequestPayload: string(reqBytes),
ResponsePayload: string(respBody),
Status: status,
ErrorMessage: errMsg,
}
}