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.

Note, due to potential issues with the integrity 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

Supported PCE operations

Open allClose all

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.

See https://ontoserver.csiro.au/docs/6/postcoordination.html#validate-code for more details.

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.

See https://ontoserver.csiro.au/docs/6/postcoordination.html#subsumption for more details.

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.

See https://ontoserver.csiro.au/docs/6/postcoordination.html#lookup for more details.

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.

See https://ontoserver.csiro.au/docs/6/postcoordination.html#libraries for more details.


1 A ValueSet expansion will only include PCEs if they are also a member of a referenced CodeSystem supplement.