What's the big idea?

Medication terminologies like AMT, dm+d, RxNorm...etc. come in different formats with different content models. Wouldn't it be nice if there was an easy way of using these medication terminologies through a common API that abstracted away complexity?

That's the idea behind Medserve, to make using and implementing medicines terminologies easier.

What is Medserve?

Medserve is an experiment, a prototype, aimed at exposing medication terminologies through a common easy to use API. More than that, the Medication resources also provide an opportunity to merge in other useful content from other sources - for example Pharmaceutical Benefits Scheme data to save developers the effort of looking up maps and reading yet another data source format.

HL7 FHIR's Medication resource and associated resources API and Medication specific parameters makes a really great candidate.

How does it work?

The implementation is broken down into two pieces, a process which maps between medication terminologies (at this point only AMT) and Medication resources, and a server built using the excellent HAPI RESTful Server containerised as a Docker image.

However there is also a command line tool which can pipe drug terminology release data through the resouce generator(s) and output FHIR resources as files, or push them at a FHIR server using batch create operations.

The server's endpoint http://medserve.online/fhir provides access to the resources and the FHIR resource search API with Medication specific parameters.

A sample Postman collection shows how the parameters can be used, click the "Run in Postman" button to get started.


The Medication resources include a number of extensions which are briefly described below (more documentation coming soon!)

  • Brand - currently the Medication resource allows only a Boolean is-brand element, this extension provides for a brand name or code(s)
  • Basis of Strength Substance - AMT uses a "Basis of Strength Substance" which the strength of an ingredient is stated in terms of, this is a modifier extension because the strength cannot be correctly interpreted without it
  • Subsidy - an experiment to pull in useful subsidy content, at this stage using PBS data with AMT
  • Concept type - a code from a set of categories akin to the AMT concept classes CTPP, TPP, MPP...etc. but deliberately not AMT specific so it can also be used to line up across AMT, RxNorm, dm+d etc. This operates like a tag that indicates what level of granularity the Medication resource is representing – e.g. a generic drug or a trade package.
  • Parents - this provides details of the hierarchy of parents above a medication sourced from the terminology as a useful set of pre-processed data.

Parameters have also been added to the Medication search operation to support these extensions. The Postman collection provides examples of how to use these extended parameters to search based on the extension content in combination with the standard Medication resource search parameters.


These extensions, in fact the whole thing is an attempt to create useful content for developers. Feedback is definitely sought on the relative usefulness of the extensions or any aspect of the services.

Medserve is open for collaboration on GitHub at https://github.com/AuDigitalHealth/medserve. To collaborate or contribute refer to the contributing guide, but in essence, please feel free to raise an issue or open a pull request.