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, } }