diff --git a/internal/satusehat/usecase/diagnosticreport/dto.go b/internal/satusehat/usecase/diagnosticreport/dto.go index a7af73b..f1072f9 100644 --- a/internal/satusehat/usecase/diagnosticreport/dto.go +++ b/internal/satusehat/usecase/diagnosticreport/dto.go @@ -27,7 +27,7 @@ type DiagnosticReportRequest struct { PerformerID string `json:"performer_id,omitempty"` PerformerName string `json:"performer_name,omitempty"` - ResultObservationIDs []string `json:"result_observation_ids,omitempty"` + ResultObservationIDs string `json:"result_observation_ids,omitempty"` ResultObservationSystem []string `json:"result_observation_system,omitempty"` ResultObservationCode []string `json:"result_observation_code,omitempty"` ResultObservationDisplay []string `json:"result_observation_display,omitempty"` @@ -37,7 +37,7 @@ type DiagnosticReportRequest struct { SpecimenCode []string `json:"specimen_code,omitempty"` SpecimenDisplay []string `json:"specimen_display,omitempty"` - BasedOnIDs []string `json:"based_on_service_request_ids,omitempty"` + BasedOnIDs string `json:"based_on_service_request_ids,omitempty"` BasedOnSystem []string `json:"based_on_service_request_system,omitempty"` BasedOnCode []string `json:"based_on_service_request_code,omitempty"` BasedOnDisplay []string `json:"based_on_service_request_display,omitempty"` diff --git a/internal/satusehat/usecase/diagnosticreport/mapper.go b/internal/satusehat/usecase/diagnosticreport/mapper.go index 1591626..5550adf 100644 --- a/internal/satusehat/usecase/diagnosticreport/mapper.go +++ b/internal/satusehat/usecase/diagnosticreport/mapper.go @@ -73,11 +73,9 @@ func MapRequestToFHIR(req DiagnosticReportRequest) satusehat.FHIRPayload { payload.Set("performer", []map[string]interface{}{perf}) } - if len(req.ResultObservationIDs) > 0 { - results := make([]map[string]interface{}, 0, len(req.ResultObservationIDs)) - for _, id := range req.ResultObservationIDs { - results = append(results, map[string]interface{}{"reference": "Observation/" + id}) - } + if req.ResultObservationIDs != "" { + results := make([]map[string]interface{}, 0, 1) + results = append(results, map[string]interface{}{"reference": "Observation/" + req.ResultObservationIDs}) payload.Set("result", results) } if len(req.SpecimenIDs) > 0 { @@ -87,11 +85,9 @@ func MapRequestToFHIR(req DiagnosticReportRequest) satusehat.FHIRPayload { } payload.Set("specimen", specs) } - if len(req.BasedOnIDs) > 0 { - basedOns := make([]map[string]interface{}, 0, len(req.BasedOnIDs)) - for _, id := range req.BasedOnIDs { - basedOns = append(basedOns, map[string]interface{}{"reference": "ServiceRequest/" + id}) - } + if req.BasedOnIDs != "" { + basedOns := make([]map[string]interface{}, 0, 1) + basedOns = append(basedOns, map[string]interface{}{"reference": "ServiceRequest/" + req.BasedOnIDs}) payload.Set("basedOn", basedOns) } if len(req.ImagingStudyIDs) > 0 { diff --git a/internal/satusehat/usecase/servicerequest/dto.go b/internal/satusehat/usecase/servicerequest/dto.go index 4dfa48f..32049b6 100644 --- a/internal/satusehat/usecase/servicerequest/dto.go +++ b/internal/satusehat/usecase/servicerequest/dto.go @@ -6,18 +6,18 @@ type ServiceRequestRequest struct { OrganizationID string `json:"organization_id,omitempty"` ServiceRequestID string `json:"service_request_id,omitempty"` PatientID string `json:"patient_id,omitempty"` - PatientName string `json:"patient_name,omitempty"` - EncounterID string `json:"encounter_id,omitempty"` - RequesterID string `json:"requester_id,omitempty"` - PerformerID string `json:"performer_id,omitempty"` - RequesterName string `json:"requester_name,omitempty"` - PerformerName string `json:"performer_name,omitempty"` - Status string `json:"status,omitempty" binding:"omitempty,oneof=draft active on-hold revoked completed entered-in-error unknown"` - Intent string `json:"intent,omitempty" binding:"omitempty,oneof=proposal plan directive order original-order reflex-order filler-order instance-order option"` - Code string `json:"code,omitempty"` - System string `json:"system,omitempty"` - Display string `json:"display,omitempty"` - AuthoredOn time.Time `json:"authored_on,omitempty"` + PatientName string `json:"patient_name,omitempty"` + EncounterID string `json:"encounter_id,omitempty"` + RequesterID string `json:"requester_id,omitempty"` + PerformerID string `json:"performer_id,omitempty"` + RequesterName string `json:"requester_name,omitempty"` + PerformerName string `json:"performer_name,omitempty"` + Status string `json:"status,omitempty" binding:"omitempty,oneof=draft active on-hold revoked completed entered-in-error unknown"` + Intent string `json:"intent,omitempty" binding:"omitempty,oneof=proposal plan directive order original-order reflex-order filler-order instance-order option"` + Code []string `json:"code,omitempty"` + System string `json:"system,omitempty"` + Display string `json:"display,omitempty"` + AuthoredOn time.Time `json:"authored_on,omitempty"` } type ServiceRequestPatchRequest []map[string]interface{} diff --git a/internal/satusehat/usecase/servicerequest/mapper.go b/internal/satusehat/usecase/servicerequest/mapper.go index 40549fe..3df5389 100644 --- a/internal/satusehat/usecase/servicerequest/mapper.go +++ b/internal/satusehat/usecase/servicerequest/mapper.go @@ -27,7 +27,7 @@ func MapRequestToFHIR(req ServiceRequestRequest) satusehat.FHIRPayload { payload.Set("intent", req.Intent) } - if req.Code != "" { + if len(req.Code) > 0 { system := "http://snomed.info/sct" if req.System != "" { system = req.System