Integration with the Terminology Registry

Introduction

The Terminology Registry is a piece of software with which authorized personnel could manage the medical terminology dictionary to be used in the clinical practice. Authorized personnel could perform among others, actions like adding a new term to the registry or modifying existing terms. The Terminology Registry is designed in such a way that these changes could be published to client systems online (ie. as soon as they happen).

The Terminology Registry server is implemented using OpenMRS. It uses OpenMRS' concept dictionary to manage the set of clinical terms. 

The integration technology that the Terminology Registry server uses to publish changes is based on Atom Feeds. Every change to terms would result in a new event being published to the feed. The feed document would contain meta information such as the author, id and the last updated time. The feed document also contains a list of entries for every event like adding a term or modifying an existing term in the same order in which they occurred. The content of each entry is the URL using which the entity that changed could be fetched from the Terminology Registry server. It is important to know that the URL will return the entity as a whole and not only the fields that changed. The logic to figure out the fields that changed and merging is the responsibility of the consumer. 

 

For more details on the feed protocol, please refer here

Below is an example of such a feed
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 <title>Patient AOP</title>
 <link rel="self" type="application/atom+xml" href="http://172.18.46.53:9080/openmrs/ws/atomfeed/diagnosis/recent" />
 <link rel="via" type="application/atom+xml" href="http://172.18.46.53:9080/openmrs/ws/atomfeed/diagnosis/2" />
 <link rel="prev-archive" type="application/atom+xml" href="http://172.18.46.53:9080/openmrs/ws/atomfeed/diagnosis/1" />
 <author>
   <name>OpenMRS</name>
 </author>
 <id>bec795b1-3d17-451d-b43e-a094019f6984+2</id>
 <generator uri="https://github.com/ICT4H/atomfeed">OpenMRS Feed Publisher</generator>
 <updated>2014-07-28T06:08:41Z</updated>
 <entry>
   <title>Diagnosis</title>
   <category term="Diagnosis" />
   <id>tag:atomfeed.ict4h.org:83898e4e-05d9-4f37-a530-8f753035234b</id>
   <updated>2014-07-24T04:08:41Z</updated>
      <content type="application/vnd.atomfeed+xml"><![CDATA[/openmrs/ws/rest/v1/concept/aa21a8a6-7903-4d5e-af05-c1caae1abbf5?v=custom:(uuid,description,name:(uuid,name,locale,conceptNameType),datatype,set,version,retired,names,answers,setMembers,mappings:(uuid,conceptReferenceTerm,conceptMapType))]]></content>
 </entry>
</feed>

 

Feed URLs

The Terminology Registry server exposes a feed which will publish events related to any concept in general. The Terminology Registry server also publishes one feed for each type of concept (ie, one feed per concept class). Entities that are related to concept like concept reference terms also have their own feeds.The following is a list of the urls for all the feeds that are published by the Terminology Registry server.

  • /openmrs/ws/atomfeed/concept/recent - The feed that publishes events related to all concepts
  • /openmrs/ws/atomfeed/diagnosis/recent - The feed that publishes events related to all diagnosis
  • /openmrs/ws/atomfeed/conceptreferenceterm/recent - The feed that publishes events related to all concept reference terms.