Supporting the SNOMED SNAPP hackathon
September 29, 2016 7 Comments
As part of supporting this event, HL7 New Zealand is going to stand up a server that can be used for the ‘My List of Medicines’ challenge. (The other challenge – Machine Mapping – is a bit esoteric for me).
So there are a couple of things we need to do.
- Stand up a FHIR server for participants to use that can respond to appropriate requests (we’ll talk about what they will be in the next post).
- Populate that server with the sample data given on the web site
To do this, download the zip file for the server (there’s a link on the documentation page) and expand it into a folder. To run it, the following command from the command line works for me:
java -jar hapi-fhir-cli.jar run-server --allow-external-refs -f dstu3
This will start the server in STU3 mode (or the release candidate), allowing StructureDefinitions that refer to external urls. I usually create a small shell script to make this easier to run.
Next task is to install the various conformance resources (StructureDefinitions for the base resource types and ValueSets). To do this, leave the server running and open a new window. Enter the following command.
java -jar hapi-fhir-cli.jar upload-definitions -f dstu2 -t http://localhost:8080/baseDstu2
All going well, you should now have a fully featured FHIR server populated with the base conformance resources. Excellent! (And it was free!)
(By the way – you can also set up your new server to be a terminology server with a complete installation of SNOMED – we won’t do that now, but maybe a topic for another post.)
Now to populate the server with the sample data. After some thought, I decided to update clinFHIR so that when you create a new patient and ask for sample resources to be created, it will add the ones from the SNAPP site – demo data is always helpful. So all you need to do is to tell clinFHIR about your new server, set it as the data server, and create a new patient with examples. Here are the steps:
From the ‘gear’ menu at the upper right, select the ‘add server’ option. Enter a name , the location of the server and the FHIR version as shown in the following screen shot:
(Note the trailing ‘/’ in the url – that’s important).
Click the ‘test’ button that appeared on the lower right. This will attempt to retrieve the conformance resource from that server. If it succeeds, then you’ll get a message and an ‘add’ button will replace the ‘test’ button. Clicking that will add the new server to list of servers that can be accessed by this browser. (The definition is saved in the local browser cache right now – I’ll probably update that at some time to be associated with a logged in user).
Now you can dropdown the list of servers in the ‘my recent patients’ and be able to select the new server (It’s at the bottom of the list).
To create a patient, click the ‘Select Patient’ link, and in the dialog that is displayed select the ‘Add new Patient’ link to the lower left.
This will change to a screen where there is some sample data (retrieved from an on-line service) – you can just accept that or add your own demographics. Leave the ‘Generate Samples’ checkbox checked. Now click ‘Save’.
After a while (maybe 5-10 seconds) you’ll get a display like the following.
Click ‘close’ to return to the front page.
You can now view the resources that have been created for the patient. Click the ‘Details’ link (upper left) alongside the patient name, and the following screen is displayed:
(I’ve selected the List resource type, then the Medication List instance, and finally the ‘References’ tab to get a graphical view of the Medication List that was created.) I’ve blogged before about this stuff so won’t go into that here (though do note that some of the older posts may no longer be correct –clinFHIR changes rapidly!)
Before we go – click on the ‘Resource References Graph’
This will show all the resources for this patient (excluding the Patient). You can zoom and move the display to show the resources you want (remember that these are resource instances – real resources created for a patient).
So that’s all for now – we’ve set up a FHIR server and loaded it with sample data from the SNAPP site.
In the next post we’ll take a look at what kind of queries we can use when we’re ‘SNAPPing’ with SNOMED (sorry, couldn’t help myself)…
And if you’re a guru with colour – reach out (as you can see, I need help with that 🙂 )