Files
satusehat-worker/internal/satusehat/usecase/immunization/mapper.go
T
2026-04-14 01:21:54 +00:00

34 lines
1.0 KiB
Go

package immunization
import (
"service/internal/interfaces/satusehat"
"time"
)
func MapRequestToFHIR(req ImmunizationRequest) satusehat.FHIRPayload {
payload := satusehat.NewFHIRPayload("Immunization").
Set("status", req.Status).
Set("vaccineCode", map[string]interface{}{
"coding": []map[string]interface{}{
{"system": "http://sys-ids.kemkes.go.id/kfa", "code": req.VaccineCode, "display": req.VaccineDisplay},
},
}).
Set("patient", map[string]interface{}{"reference": "Patient/" + req.PatientID, "display": req.PatientName}).
Set("encounter", map[string]interface{}{"reference": "Encounter/" + req.EncounterID}).
Set("occurrenceDateTime", req.OccurrenceDateTime.Format(time.RFC3339)).
Set("primarySource", req.PrimarySource).
Set("performer", []map[string]interface{}{
{
"actor": map[string]interface{}{
"reference": "Practitioner/" + req.PractitionerID,
"display": req.PractitionerName,
},
},
})
if req.LotNumber != "" {
payload.Set("lotNumber", req.LotNumber)
}
return payload
}