Australia have had the NCTS operating for some time now, which provides a national server exposing a FHIR terminology endpoint and the software used to host that endpoint (Ontoserver) for implementers to run locally and syndicate national content updates into whenever it suits them.
Until now the service has been focussed on providing these services and software to help with implementation of SNOMED CT-AU, including AMT, although in the near future this will expand to other national code systems. This provides services to implement SNOMED CT-AU and AMT based around CodeSystem, and implicit ValueSet and ConceptMap as defined at Using SNOMED CT with FHIR in the FHIR specification.
However this doesn't provide a particularly rich experience for drug terminologies like AMT, where a greater density of information exists and is typically desired when looking up a code. CodeSystem lookup typically provides parents, children, descriptions (of different types, definition status, and module, but this isn't the detail usually desired when dealing with medications. This differs from most of the rest of SNOMED CT content where the modelling and properties of the concepts are not usually looked up and examined as closely.
The FHIR Medication resource provides a much more comfortable, common structure to represent these concepts, and the FHIR search REST API and Medication resource specific search parameters provide an easy to use API to search drug terminologies.
For example see a CodeSystem lookup
{ "resourceType": "Parameters", "parameter": [ { "name": "name", "valueString": "SNOMED Clinical Terms Australian extension" }, { "name": "version", "valueString": "http://snomed.info/sct/32506021000036107/version/20171031" }, { "name": "display", "valueString": "Panadeine Extra uncoated tablet" }, { "name": "designation", "part": [ { "name": "language", "valueCode": "en" }, { "name": "use", "valueCoding": { "system": "http://snomed.info/sct", "code": "900000000000003001", "display": "Fully specified name" } }, { "name": "value", "valueString": "Panadeine Extra (codeine phosphate hemihydrate 15 mg + paracetamol 500 mg) uncoated tablet (trade product unit of use)" } ] }, { "name": "designation", "part": [ { "name": "language", "valueCode": "en" }, { "name": "use", "valueCoding": { "system": "http://snomed.info/sct", "code": "900000000000013009", "display": "Synonym" } }, { "name": "value", "valueString": "Panadeine Extra uncoated tablet" } ] }, { "name": "property", "part": [ { "name": "code", "valueCode": "parent" }, { "name": "value", "valueCode": "30425011000036101" } ] }, { "name": "property", "part": [ { "name": "code", "valueCode": "parent" }, { "name": "value", "valueCode": "52803011000036102" } ] }, { "name": "property", "part": [ { "name": "code", "valueCode": "parent" }, { "name": "value", "valueCode": "9851000168109" } ] }, { "name": "property", "part": [ { "name": "code", "valueCode": "sufficientlyDefined" }, { "name": "valueBoolean", "valueBoolean": true } ] }, { "name": "property", "part": [ { "name": "code", "valueCode": "effectiveTime" }, { "name": "valueString", "valueString": "20090630" } ] }, { "name": "property", "part": [ { "name": "code", "valueCode": "moduleId" }, { "name": "value", "valueCode": "900062011000036108" } ] } ] }
versus a Medication resource rendering of an AMT concept 52397011000036105 | Panadeine Extra uncoated tablet |
{ "resourceType": "Medication", "id": "52397011000036105", "meta": { "profile": [ "http://medserve.online/fhir/Profile/ExtendedMedication" ] }, "text": { "status": "generated", "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>Panadeine Extra uncoated tablet</p></div>" }, "extension": [ { "url": "http://medserve.online/fhir/StructureDefinition/parentMedicationResources", "extension": [ { "url": "http://medserve.online/fhir/StructureDefinition/parentMedication", "valueReference": { "reference": "Medication/52803011000036102", "display": "paracetamol 500 mg + codeine phosphate hemihydrate 15 mg tablet" } }, { "url": "http://medserve.online/fhir/StructureDefinition/medicationResourceType", "valueCoding": { "system": "http://hl7.org/fhir/medication_type", "code": "UPDSF", "display": "Unbranded product with strengths and form" } }, { "url": "http://medserve.online/fhir/StructureDefinition/parentMedicationResources", "extension": [ { "url": "http://medserve.online/fhir/StructureDefinition/parentMedication", "valueReference": { "reference": "Medication/23628011000036109", "display": "paracetamol 500 mg tablet" } }, { "url": "http://medserve.online/fhir/StructureDefinition/medicationResourceType", "valueCoding": { "system": "http://hl7.org/fhir/medication_type", "code": "UPDSF", "display": "Unbranded product with strengths and form" } }, { "url": "http://medserve.online/fhir/StructureDefinition/parentMedicationResources", "extension": [ { "url": "http://medserve.online/fhir/StructureDefinition/parentMedication", "valueReference": { "reference": "Medication/21433011000036107", "display": "paracetamol" } }, { "url": "http://medserve.online/fhir/StructureDefinition/medicationResourceType", "valueCoding": { "system": "http://hl7.org/fhir/medication_type", "code": "UPD", "display": "Unbranded product with no strengths or form" } } ] } ] }, { "url": "http://medserve.online/fhir/StructureDefinition/parentMedicationResources", "extension": [ { "url": "http://medserve.online/fhir/StructureDefinition/parentMedication", "valueReference": { "reference": "Medication/21286011000036106", "display": "paracetamol + codeine" } }, { "url": "http://medserve.online/fhir/StructureDefinition/medicationResourceType", "valueCoding": { "system": "http://hl7.org/fhir/medication_type", "code": "UPD", "display": "Unbranded product with no strengths or form" } }, { "url": "http://medserve.online/fhir/StructureDefinition/parentMedicationResources", "extension": [ { "url": "http://medserve.online/fhir/StructureDefinition/parentMedication", "valueReference": { "reference": "Medication/21821011000036104", "display": "codeine" } }, { "url": "http://medserve.online/fhir/StructureDefinition/medicationResourceType", "valueCoding": { "system": "http://hl7.org/fhir/medication_type", "code": "UPD", "display": "Unbranded product with no strengths or form" } } ] } ] } ] }, { "url": "http://medserve.online/fhir/StructureDefinition/medicationResourceType", "valueCoding": { "system": "http://hl7.org/fhir/medication_type", "code": "BPSF", "display": "Branded product with strengths and form" } }, { "url": "http://medserve.online/fhir/StructureDefinition/brand", "valueCodeableConcept": { "coding": [ { "system": "http://snomed.info/sct", "code": "9851000168109", "display": "Panadeine Extra" } ] } }, { "url": "http://medserve.online/fhir/StructureDefinition/sourceCodeSystem", "extension": [ { "url": "http://medserve.online/fhir/StructureDefinition/sourceCodeSystemUri", "valueUri": "http://snomed.info/sct" }, { "url": "http://medserve.online/fhir/StructureDefinition/sourceCodeSystemVersion", "valueString": "http://snomed.info/sct?version=http%3A%2F%2Fsnomed.info%2Fsct%2F32506021000036107%2Fversion%2F20171031" } ] } ], "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "52397011000036105", "display": "Panadeine Extra uncoated tablet" } ] }, "status": "active", "isBrand": true, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "265011000036104", "display": "uncoated tablet" } ] }, "ingredient": [ { "modifierExtension": [ { "url": "http://medserve.online/fhir/StructureDefinition/basisOfStrengthSubstance", "valueCoding": { "system": "http://snomed.info/sct", "code": "51924011000036104", "display": "codeine phosphate hemihydrate" } } ], "itemReference": { "reference": "Substance/1978011000036103", "display": "codeine" }, "amount": { "numerator": { "value": 15000, "unit": "microgram", "system": "http://snomed.info/sct", "code": "90011000036103" }, "denominator": { "value": 1, "unit": "each", "system": "http://snomed.info/sct", "code": "700001301000036101" } } }, { "itemReference": { "reference": "Substance/2442011000036104", "display": "paracetamol" }, "amount": { "numerator": { "value": 500, "unit": "mg", "system": "http://snomed.info/sct", "code": "99011000036109" }, "denominator": { "value": 1, "unit": "each", "system": "http://snomed.info/sct", "code": "700001301000036101" } } } ] }
Additionally other sources of data can be blended in to augment the drug terminology following the 80/20 rule to provide useful information that saves looking up other code systems in other formats. For example in Australia, regularly used details of the PBS subsidy or regulartory information from the TGA can be blended into the resource. This saves developers from having to look up maps to other coding systems (e.g. PBS and TGA) and then find the source data for those code systems and parse it to find the properties they need.
This potentially also creates a common implementation API (search API and Medication resource as the common format) for multiple drug terminologies. AMT, dm+d, RxNorm...etc could all be exposed in this way.
To provide this richer implementation experience and avenue for blending other information, work has gone into the concept of exposing AMT as a FHIR endpoint (running nationally or runnable locally similar to the NCTS). Other drug terminology owners are known to be considering similar approaches, or are looking for implementation APIs and services like this to make drug terminologies easier and faster to implement.
An example of this idea can be found at http://medserve.online - you'll find there's a Medication resource for each AMT concept at each of AMT's 7 levels of abstraction and they reference each other to link together. There are also a series of extensions used in this example to represent parts that can't be represented in Medication resources (e.g. basis of strength substance) and others that are present to provide useful additional information (e.g. parents).
The aim of this discussion page is to
- raise awareness of this topic and activity, and invite feedback, thoughts and comments
- facilitate and make visible collaboration should there be concurrent efforts to approach this for different drug terminologies so approaches may converge where possible
Please feel free to comment or ask questions!
9 Comments
Peter Jordan
NZ has been following this with interest since the SNAPPathon held in Wellington last year. As a high-level observation, it may not be a case of 'one size fits all' as there are some use cases that might be better addressed by the FHIR Terminology Resources (e.g. Value Sets for populating dropdown selections of prescribing terms); however, I do see advantages in using the dedicated Medication Resource model for an aggregated view of an individual medication. Either way, for cross-domain standards, there will need to be agreement on specific properties for Medication Code Systems (still 'yet to be done' for RxNorm, the only such system cited in the FHIR spec) and/or extensions for the Medication Resource.
Dion McMurtrie
Yes, the SNAPPathon was where I took the thing I'd done for AMT earlier for DSTU2 and (beginning of) STU3'd it.
There's definitely use cases better suited to FHIR Terminology Resources, and using ECL filters can be pretty powerful for searching. I don't see this as trying to replace the use of terminology resources for medications, but to augment it. The main issue even with the ECL is the expressions are different for different drug terminologies (assuming they are even SNOMED CT). So this idea is to map the drug terminologies to Medication resources rather than go through the exercise of defining all the proprietary properties of each of the drug terminologies - like the special definition for RxNorm - with the hope this will be more general.
A colleague has been working on a browser based on the resources and services at http://medserve.online as an example use of the resources and he's driven some changes to make using them easier. I'm interested in adding in other drug terminology content and seeing how the terminology system agnostic browser code can do against the Medication resources and services as the contract. If that pans out it can help decouple implementers (maybe not all of them, but most) from the specific details and variations across drug terminology products and the changes to them over time by providing a common interface. Much the same as we hope FHIR Terminology Resources can do for most SNOMED CT implementers.
It may not pan out that way, but that's the idea. I know the guys at NLM are looking at FHIR Medication resources for RxNorm similar to the AMT ones I've done. I've got a partially complete RxNorm to Medication resource translation I've been promising to complete to help that process - I started that to see how the alignment worked and tried to pick the thing most dissimilar to AMT to test that out. It actually seems to work out OK so far.
I suspect having done AMT, NZMT, and dm+d wouldn't be all that hard.
Mike Cooke
does anyone know if dm+d is being worked on as FHIR Med resource ?
thanks
Mike Cooke - nhs wales
Peter G. Williams
I'll ping Jeremy Rogersand Andrew Perryfor that one, Mike Cooke
Dion McMurtrie
I was talking to Bill Lush about this at the connectathon in Bradford, I was thinking of doing something like I've done with AMT on https://medserve.online with his help...but it is all volunteer effort in my spare time, unfortunately.
Mike Cooke
Thanks Dion - it's not an urgent need at the moment but I'm finding I'm drifting into this in some conversations in Wales so it's useful to know something is being disussed.
cheers
mike
Bill Lush
In the UK we have documented how medications and medication dose syntax should be passed using FHIR with dm+d terminology. This documentation is available on the Internet here: https://developer.nhs.uk/apis/dose-syntax-implementation/. This documentation has been clinically reviewed by the PRSB.
We are in the very early planning stages of a dm+d terminology server, which I am hoping will be a FHIR server and dm+d data can be searched for as a FHIR Medication resource. However we have a long way to go before this is live. The dm+d FHIR terminology server, in my opinion, is crucial for interoperability in the UK.
If you have any further questions feel free to get in touch.
Mike Cooke
Hi Bill - super - many thanks for this info - i'll have a look at that API doc
cheers
Mike
Dion McMurtrie
https://medserve.online has evolved since this last post with a new browser built on top of these services at https://browse.medserve.online which was a way of consuming those services to see how they were to use.
This prototype has 3 objectives
It isn't complete, but there's enough there to get the idea and see what the intentions are and where it is heading.
It would be interesting if others have had similar drivers or challenges, other solutions or approaches, or feedback on this approach which is still quite malleable.