Stream: implementers
Topic: FHIR resource validation using response interceptor in HA...
Aditya (May 01 2019 at 16:40):
I am trying to validate outgoing FHIR resources using ResponseValidatingInterceptor but its not working. I followed all steps listed here : http://hapifhir.io/doc_rest_server_interceptor.html#_toc_requestresponse_validation
Lloyd McKenzie (May 01 2019 at 16:50):
Can you expand on "not working"?
Aditya (May 01 2019 at 17:02):
@Lloyd McKenzie
I have a code as shown in example where I am purposely not setting "status" which is required in Observation resource when http request is made to my server http://localhost:8080/context/fhir/resource/Observation?category=vital-signs&patient=abcdefgh
Observation obs = new Observation(); obs.getCode().addCoding().setSystem("http://loinc.org").setCode("12345-6"); obs.setValue(new StringType("This is a value"));
Then I have following code in the service which extends RestfulServer :
public void initialize() { //some code ... ResponseValidatingInterceptor responseInterceptor = new ResponseValidatingInterceptor(); responseInterceptor.addValidatorModule(new FhirInstanceValidator()); responseInterceptor.setFailOnSeverity(ResultSeverityEnum.ERROR); responseInterceptor.setAddResponseHeaderOnSeverity(ResultSeverityEnum.INFORMATION); responseInterceptor.setResponseHeaderValue("Validation on ${line}: ${message} ${severity}"); responseInterceptor.setResponseHeaderValueNoIssues("No issues detected"); }
Now at the output, I am getting "No issues detected" when ideally I should get validation error in header since observation has no status.
Thats my problem
My outgoing response in bundle through :
{ "resourceType": "Bundle", "id": "uiehfkdhsfn-sdfjs-sdff-sdfs-yugrhfjbsdf", "meta": { "lastUpdated": "2019-05-01T14:11:26.390-04:00" }, "language": "ENG", "type": "searchset", "total": 4, "link": [ { "relation": "self", "url": "http://localhost:8080/context/fhir/resource/Observation?category=vital-signs&patient=abcdefgh" } ], "entry": [ { "resource": { "resourceType": "Observation", "id": "adasdasdadasdasd.asdasdasdasdasdasd", "text": { "status": "generated", "div": "<table xmlns=\"http://www.w3.org/1999/xhtml\"><thead><tr><th>Vital</th><th>Patient Control No</th></tr></thead><tbody><tr><td>Blood Pressure Systolic:117 mm Hg</td><td>9294</td></tr></tbody></table>" }, "category": [ { "coding": [ { "system": "http://hl7.org/fhir/observation-category", "code": "vital-signs", "display": "Vital Signs" } ], "text": "vital-signs" } ], "code": { "coding": [ { "system": "http://loinc.org", "code": "8480-6", "display": "blood pressure systolic" } ], "text": "Blood Pressure Systolic" }, "subject": { "reference": "Patient/abcdefgh" }, "effectiveDateTime": "2019-04-17", "valueQuantity": { "value": 117, "unit": "mm[Hg]", "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } } ] }
Lloyd McKenzie (May 01 2019 at 17:27):
That's much better :) @James Agnew ? (Also, in the future, and if you don't get a timely response here, suggest raising on the #hapi stream.)
Aditya (May 01 2019 at 18:25):
Thanks @Lloyd McKenzie . I also added some more desription regarding the response I am sending out.
James Agnew (May 01 2019 at 20:28):
It doesn't look like you actually registered the interceptor in your code. You need to call registerInterceptor(responseInterceptor);
Last updated: Apr 12 2022 at 19:14 UTC