Search code examples
imagehl7

extract images from HL7 files


Given a HL7 file which I know that in its TXA segment there's a byte code of an image, how can I extract that image?

I know my question might be blurry, but that's the details I have

EDIT: The TXA segment is as follows:

TXA|1|25^PathologyResultsReport|8^HTML|||||||||||||||||||908^מעבדת^פתולוגיה^^^^^^^^^^^^20110710084900|||PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPg0KPGh0bWw+PGhlYWQ+PG1ld... +PGJyLz48L3RkPjwvdHI+DQo8dHI+PHRkPg0KPC90ZD48L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo8L3RkPjxTb2ZUb3ZOZXdDb2x1bW4gLz48L3RyPjxTb2ZUb3ZOZXdMaW5lIC8+DQo8L3Rib2R5Pg0KPC90YWJsZT4NCjwvYm9keT4NCjwvaHRtbD4NCg==|

Thanks in advance


Solution

  • From reading the documentation it appears that images are stored in this form:

    OBX||TX|11490-0^^LN||^IM^TIFF^Base64^
    SUkqANQAAABXQU5HIFRJRkYgAQC8AAAAVGl0bGU6AEF1dGhvcjoAU3ViamVjdDoAS2V5d29yZHM6~
    AENvbW1lbnRzOgAAAFQAaQB0AGwAZQA6AAAAAABBAHUAdABoAG8AcgA6AAAAAABTAHUAYgBqAGUA~
    YwB0ADoAAAAAAEsAZQB5AHcAbwByAGQAcwA6AAAAAABDAG8AbQBtAGUAbgB0AHMAOgAAAAAAAAAA~
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAP4ABAABAAAAAAAAAAAB~
                                       (681 lines omitted)
    1qqQS/cFpaSVeD1QP1/SX1VJfpPSfXr+tIOKrN2aSrB8OHoH1kfz2tnPLpB/6WkksJ0w5G6WKVNe~
    vSisJQdhLdQjODpbznVXXDMPdBNhVtBNpOqqtkY60qYoJxQK17cUoS0v4ijYztCapqqYUKmIUJhJ~
    sKqoIO2opiqr7lupIMFBBhNQmtOIzG4naS7XsQuDBLFOP/gAgAgAAKMHAACcBgAACRcAALcYAAC4~
    EwAA5RoAALQXAADyBAAAnAMAAD8LAADbEQAA5CgAAJtBAABTVQAAOHAAAOyHAAA=|||||||F
    

    This looks like a simple structure, where the image data is base64 encoded and stored as a long stream, you know its an image because it has ^IM and the image type because of ^TIFF

    More specifically: When an image is sent, OBX-2 must contain the value ED which stands for encapsulated data. The components of OBX-5 must be as described below.

    1. The first component, source application, must be null.
    2. Component 2, type of data, must contain IM, indicating image data.
    3. Component 3, data subtype, must contain TIFF
    4. Component 4, encoding, must contain Base64