update mapping json obeservsi dan diagnosis report

This commit is contained in:
meninjar
2026-07-29 02:19:04 +00:00
parent 0b8e59620f
commit b8e219868d
5 changed files with 829 additions and 135 deletions
@@ -27,15 +27,33 @@ type DiagnosticReportRequest struct {
PerformerID string `json:"performer_id,omitempty"`
PerformerName string `json:"performer_name,omitempty"`
ResultObservationIDs []string `json:"result_observation_ids,omitempty"`
SpecimenIDs []string `json:"specimen_ids,omitempty"`
BasedOnIDs []string `json:"based_on_service_request_ids,omitempty"`
ImagingStudyIDs []string `json:"imaging_study_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"`
SpecimenIDs []string `json:"specimen_ids,omitempty"`
SpecimenSystem []string `json:"specimen_system,omitempty"`
SpecimenCode []string `json:"specimen_code,omitempty"`
SpecimenDisplay []string `json:"specimen_display,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"`
ImagingStudyIDs []string `json:"imaging_study_ids,omitempty"`
ImagingStudySystem []string `json:"imaging_study_system,omitempty"`
ImagingStudyCode []string `json:"imaging_study_code,omitempty"`
ImagingStudyDisplay []string `json:"imaging_study_display,omitempty"`
ConclusionCodeSystem string `json:"conclusion_code_system,omitempty"`
ConclusionCode string `json:"conclusion_code,omitempty"`
ConclusionCodeDisplay string `json:"conclusion_code_display,omitempty"`
Conclusion string `json:"conclusion,omitempty"`
ObservationID string `json:"observation_id,omitempty"`
ServiceRequestID string `json:"service_request_id,omitempty"`
}
type DiagnosticReportPatchRequest []map[string]interface{}
@@ -120,5 +120,13 @@ func MapRequestToFHIR(req DiagnosticReportRequest) satusehat.FHIRPayload {
payload.Set("conclusion", req.Conclusion)
}
if req.ObservationID != "" {
payload.Set("observation", map[string]interface{}{"reference": "Observation/" + req.ObservationID})
}
if req.ServiceRequestID != "" {
payload.Set("serviceRequest", map[string]interface{}{"reference": "ServiceRequest/" + req.ServiceRequestID})
}
return payload
}
@@ -55,6 +55,13 @@ type ObservationRequest struct {
ReferenceRangeHighValue *float64 `json:"reference_range_high_value,omitempty"`
ReferenceRangeUnit string `json:"reference_range_unit,omitempty"`
ReferenceRangeText string `json:"reference_range_text,omitempty"`
ServiceRequestID string `json:"service_request_id,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"`
}
type ObservationPatchRequest []map[string]interface{}
@@ -95,6 +95,12 @@ func MapRequestToFHIR(req ObservationRequest) satusehat.FHIRPayload {
payload.Set("bodySite", map[string]interface{}{"coding": []map[string]interface{}{coding}})
}
if req.ServiceRequestID != "" {
payload.Set("basedOn", []map[string]interface{}{
{"reference": "ServiceRequest/" + req.ServiceRequestID},
})
}
switch {
case req.ValueQuantityValue != nil:
sys := req.ValueQuantitySystem