[ANN] fknsrs.biz/p/hl7 - an HL7v2 parsing and processing package

192 views
Skip to first unread message

Conrad Pankoff

unread,
May 1, 2016, 1:36:26 PM5/1/16
to golang-nuts
HL7 is a protocol used inside and between medical institutions to keep patient information in sync across different departments. In many institutions, there are thousands of HL7 messages flying back and forth all day long. Every time someone is admitted, transferred, or discharged, or measurements are taken, or any of a range of other things happen, a message comes out of a computer at one end of the hospital and ends up going into a computer at the other end. I wrote a little more about the protocol as a blog post [1] - please do check it out if any of this is relevant to you!

The HL7 protocol itself is just silly. Nevertheless, to integrate with existing systems inside medical institutions, an HL7 parser is pretty much essential - so this is where this package comes in! I recently merged two smaller packages and cleaned up the API to release fknsrs.biz/p/hl7. The underlying code has been in production for a little while now, and I'd love it if it helped someone else make good things happen with medical software.

[1]: https://www.fknsrs.biz/blog/golang-hl7-library.html

Tamás Gulácsi

unread,
May 1, 2016, 4:45:26 PM5/1/16
to golang-nuts

In 10 minutes, go-fuzz found only one crasher - see  https://github.com/deoxxa/hl7/issues/1
So I think the message parser is quite solid, but fuzzing always founds something - it's easy, so use it!

Conrad Pankoff

unread,
May 1, 2016, 9:39:33 PM5/1/16
to golang-nuts
Indeed! Not only did it uncover an actual crash, but it highlighted a couple of other invalid assumptions in the parser. I've corrected the things that were obvious, and I've gotten some ideas for making the parser stricter. Hopefully making it stricter will make it catch more probably-invalid messages.

Thanks so much for taking the time to run go-fuzz on it, and thanks for introducing me to go-fuzz as a tool!

Ingo Oeser

unread,
May 2, 2016, 2:24:35 AM5/2/16
to golang-nuts
Could you add a LICENSE.txt? That would make it clear under which conditions it can be used.

A README.md containing the godoc link, a basic description with good keywords, how to contribute, which maturity level the package and the api have as well as a hello world like example would make it perfect.

Conrad Pankoff

unread,
May 2, 2016, 2:44:48 AM5/2/16
to golang-nuts
I've added a license now (BSD-3), and the start of a readme. I'll put together some examples soon. Thanks!
Reply all
Reply to author
Forward
0 new messages