Marco Strauch <strauc...@googlemail.com>: Apr 17 01:41AM -0700
Hi,
I am trying to validate an Observation of profile ISiK blood pressure
having a snomed-ct code for the body site.
Here is the example provided by ISiK.
{
"resourceType": "Observation",
"id": "ISiKBlutdruckExample",
"meta": {
"profile": [
"https://gematik.de/fhir/isik/v2/VitalwerteUndKoerpermasse/StructureDefinition/ISiKBlutdruck"
,
"http://fhir.de/StructureDefinition/observation-de-vitalsign-blutdruck"
]
},
"category": [
{
"coding": [
{
"system":
"http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs",
"display": "Vital Signs"
}
]
}
],
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "85354-9",
"display": "Blood pressure panel with all children optional"
}
],
"text": "Systolischer und Diastolischer Blutdruck"
},
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8480-6"
}
]
},
"valueQuantity": {
"system": "http://unitsofmeasure.org",
"value": 107,
"code": "mm[Hg]",
"unit": "mmHg"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8462-4"
}
]
},
"valueQuantity": {
"system": "http://unitsofmeasure.org",
"value": 60,
"code": "mm[Hg]",
"unit": "mmHg"
}
}
],
"status": "final",
"subject": {
"reference": "Patient/AYczIkDmA.CdsOkJZEio"
},
"effectiveDateTime": "2012-09-17",
"interpretation": [
{
"coding": [
{
"code": "L",
"system":
"http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"display": "low"
}
],
"text": "Below low normal"
}
],
*"bodySite": {*
* "coding": [*
* {*
* "code": "368209003",*
* "system": "http://snomed.info/sct",*
* "display": "Right arm"*
* }*
* ]*
* }*
}
The problematic part is the "bodySite" coding. This is not specially
profiled by ISiK but by FHIR. This Coding must use the "ValueSet
'SNOMEDCTBodyStructures'" specified by FHIR R4. This value set includes
all codes were concept IsA 442083009. In the ISiK example the code is below
the given concept and shall be correct.
So now lets come to my problem:
When I am using the *DefaultProfileValidationSupport* in combination with
the *InMemoryTerminologyServerValidationSupport* this Body Site Code will
be ignored during validation because the content of the loaded code system
is "*Not-Present*".
For the method "*isCodeSystemSupported*" the
*DefaultProfileValidationSupport* will always return "false" and then the
code system is being fetched by the
*InMemoryTerminologyServerValidationSupport* using the loaded code System
list of the *DefaultProfileValidationSupport* and then checks if the
content is "*not-present*" then return *false* for "*isCodeSystemSupported*"
[image: Screen 1.jpg]
So in that case the snomed-ct code is not being validated and no validation
error occurs.
But I am getting another validation result when I use the
*NpmPackageValidationSupport* (what is a derivation of
*PrePopulatedValidationSupport*) in combination with the "
*InMemoryTerminologyServerValidationSupport*".
Using the *NpmPackageValidationSupport* I load all NPM Packages for ISiK,
HL7-FHIR-DE and fhir-core-r.4 and put it togheter with the *InMemoryTerminologyServerValidationSupport
and the "**SnapshotGeneratingValidationSupport**" into the
ValidationSupportChain*.
Now when the validation is checking if the codesystem exists using "
*IValidationSupport.**isCodeSystemSupported*" the "
*PrePopulatedValidationSupport*" will always return true if the code system
was loaded by the definitions of the package. So the *fetchCodeSystem* of
the "*InMemoryTerminologyServerValidationSupport*" will not be used.
But "*isCodeSystemSupported*" will not check the value of content for "
*not-present*". So the code of the snomed-ct system will now be checked and
follow validation error is being returned.
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "processing",
"diagnostics":
"Validation failed für \"http://snomed.info/sct#368209003\"",
"location": [
"Observation.bodySite.coding[0]",
"Line 1, Col 859"
]
}
]
}
[image: Screen 2.jpg]
So there is a different handling when using the "
*NpmPackageValidationSupport*" insteadof the "
*DefaultProfileValidationSupport*". Is that intentional or a bug?
And my last question is. How can I enforce that the code of the body site
will be validated correctly?
Because ISiK and FHIR do not provide the specific snomed codes for valid
values of the given value set and I have not found a validator than can
validate against the snomed conecpt code.
I hope someone can help me and bring light into darkness.
Regards
Marco
|