SNOMED CT Post-Coordination support
Ontoserver includes support for SNOMED CT post-coordinated expressions (PCEs). Support is optionally enabled by setting the configuration parameter ontoserver.feature.postcoordination
to true
.
When processing PCEs, Ontosever will rewrite them to a semantically equivalent form. Largely this involves stripping whitespace and re-ordering of the PCE’s sub-expressions to avoid unnecessary and insignificant variation. For example, the two expressions 123456789 + 987654321
and 987654321 + 123456789
might be rewritten to the equivalent PCE 123456789+987654321
.
The following sections provide specific details:
CodeSystem/$validate-code
andValueSet/$validate-code
/$closure
andCodeSystem/$subsumes
/CodeSystem/$lookup
- Expression Libraries
Note, due to potential issues with the integreity of the associated transformations, close-to-user form is not supported by Ontoserver. This is primarily due to the uncertain semantics of the proposed transformation algorithm that operate outside of Description Logic semantics such as:
- name matching which does not preserve subsumption of attribute names
- merging groups non-logical transformation (noting that example 2 is also wrong)
- merging ungrouped attributes suffers from similar problems to the previous item
$validate-code
When called with a PCE, the CodeSystem/$validate-code
operation will check the syntax of the PCE and the validity of each referenced SNOMED CT concept within the PCE.
The ValueSet/$validate-code
operation will additionally check that the PCE is a member of the expansion1 of the supplied ValueSet.
$closure and $subsumes
PCEs may be supplied to the /$closure
operation and the result will return subsumes
and equivalent
relationships as is appropriate.
Either or both codes passed to the CodeSystem/$subsumes
operation my be PCEs. Ontoserver will then determine the subsumption relationship between the two parameters.
$lookup
When called with a PCE, the expression’s will be validated as per CodeSystem/$validate-code
and if okay, then the result will include a stylised and automatically generated display
string.
Expression Libraries
A library of PCEs may be maintained in the form of a CodeSystem supplement for SNOMED CT.
The following is an example of such a supplement:
{ "resourceType": "CodeSystem", "url": "http://example.com/pce-library", "content": "supplement", "supplements": "http://snomed.info/sct|http://snomed.info/sct/787778008/version/20200131", "concept": [{ "code": "421720008 + 7946007", "display": "Spray dose form AND Drug suspension" }, { "code": " 397956004 |Prosthetic arthroplasty of the hip| : 363704007 |Procedure site| = ( 24136001 |Hip joint structure| : 272741003 |Laterality = 7771000 |Left| )", "display": "Prosthetic arthroplasty of left hip" }] }
Any ValueSet that explicitly includes the supplement via the supplement extension: http://hl7.org/fhir/StructureDefinition/valueset-supplement
, will then potentially include the PCEs. This means that, assuming they match the ValueSet’s compose criteria, they will be included in the ValueSet’s expansion, and their display text and any designations will be used for matching with $expand
’s filter
parameter.
Note, Ontoserver requires that CodeSystem supplements specify the specific version of the CodeSystem they are supplementing.
1 A ValueSet expansion will only include PCEs if they are also a member of a referenced CodeSystem supplement.