Files
satusehat-service/internal/worker/satusehat/observation/mapper.go
T
2026-04-14 01:23:34 +00:00

43 lines
1.4 KiB
Go

package observation
import (
"encoding/json"
"fmt"
"time"
)
// MapToInternalAPI memetakan data database menjadi payload untuk Internal API GoPrint
// TODO: Sesuaikan dengan JSON Payload yang dibutuhkan oleh internal endpoint Observation Anda
func MapToInternalAPI(dbData *ObservationDB, orgID string) map[string]interface{} {
// Format Waktu
waktuPeriksa := time.Now()
if dbData.TglPeriksa.Valid {
waktuPeriksa = dbData.TglPeriksa.Time
}
payload := map[string]interface{}{
"observation_id": fmt.Sprintf("%d", dbData.IdxPemeriksaan),
"encounter_id": fmt.Sprintf("%d", dbData.IdxDaftar),
"organization_id": orgID,
"patient_id": dbData.NoMR.String, // Sebaiknya diganti dengan IHS Number di Service
"code": dbData.KodePemeriksaan.String,
"value": dbData.Nilai.String,
"unit": dbData.Satuan.String,
"effective_date": waktuPeriksa.Format(time.RFC3339),
}
return payload
}
// MapToSyncLog membuat struktur data log histori untuk disimpan ke tabel database
func MapToSyncLog(idx int64, fhirID string, reqPayload interface{}, respBody []byte, status string, errMsg string) ObservationSyncLog {
reqBytes, _ := json.MarshalIndent(reqPayload, "", " ")
return ObservationSyncLog{
IdxPemeriksaan: idx,
ObservationID: fhirID,
RequestPayload: string(reqBytes),
ResponsePayload: string(respBody),
Status: status,
ErrorMessage: errMsg,
}
}