#100DaysOfCode - Day 61: Healthcare Data Interchange
Today, I wanted to talk about healthcare data interchange, as it’s an area that I’d spent a lot of time in at my previous employer, and I find that documentation for it isn’t very accessible for new software enthusiasts looking to get into the healthcare sector.
First, it’s worth listing the various types of web services that might be used for data to be exchanged with web servers (since 1995-ish).
- SOAP (Simple Object Access Protocol): a standard developed a long time ago by microsoft based in XML, which has SOAP 1.0 (not secure), 1.1, and 1.2 versions. This was a huge advantage over then binary standards for exchange over the internet. Support can be lacking in many languages, but it has native support in .NET that keeps the user from ever having to look at ugly XML code.
- Built-in error handling
- Works well in distributed enterprise environments (REST assumes direct point-to-point communication)
- Requires processing
- REST (Representational State Transfer): a standard developed in response to SOAP, which relies much more heavily on URL formatting (querystrings) to request data, and the format is more flexible for data being sent or returned in the request or responses. It supports the (GET, POST, PUT, and DELETE) HTTP 1.1 for methods, and supports CSV, JSON and RSS data formats.
- Smaller learning curve
- No “built-in” error handling / data validation
Within those various web request standards, there may be data that’s stored in other formats beyond just those supported in SOAP or REST (of those listed, we noted XML, JSON, CSV, and RSS). In healthcare, we often see HL7 being used, but there could also be binary data, base64 data, etc. which we would need to convert if we don’t have any built-in libraries to work with the specification.
Finally, these raw data types don’t necessarily need to go through a web server to then be filtering into a database. HL7 has been around for a VERY long time, and the web has only been around since 1995. Since all healthcare data is stored in the backend to begin with, many vendors allow you to send that data directly to the servers using a whitelisted IP, a specific port to help narrow down that traffic for auditing, and some authentication.
I know this wasn’t a very structured summary of data interchange, but I hope this sort of makes sense and brings some visibility into healthcare data interchange. Comment below if you have any questions, or ping me on twitter