Прочитать сообщение HL7 без указания типа сообщения, типа события или версии

Мне нужно прочитать сообщение HL7, разделенное каналом, в пользовательскую структуру Java, которая представляет структуру сообщения. Мне нужно делать все это без использования каких-либо типов сообщений, типов событий или методов или классов, зависящих от версии, потому что мне нужен этот код для работы независимо от того, какой тип сообщения HL7 читается. Я не хочу писать ридер для каждого отдельного сообщения и типа события. Мне нужно получить все сегменты и подполя. Я много смотрел на HAPI, чтобы увидеть, есть ли у него готовое решение для этой проблемы, но я ничего не нашел.

Есть ли способ расширить класс HAPI или выполнить итерацию по базовой структуре сообщений, которую HAPI создает из анализатора, чтобы решить эту проблему?

Кроме того, любые хорошие ресурсы по HAPI будут оценены.

2 ответа

Взгляните на библиотеку HL7X для Java. Эта библиотека предлагает вам преобразовать любой HL7 в XML. Он не зависит от MessageType, EventType или версии (большая разница для HAPI).

Пример:

MSH|^~\&|||||20121116122025||ADT^A01|5730224|P|2.5||||||UNICODE UTF-8
EVN|A01|20130120151827
PID||0|123||Name^Firstname^^^^||193106170000|w
PV1||E|

Превращается в

<?xml version="1.0" encoding="UTF-8"?>
<HL7X>
<HL7X>
    <MSH>
        <MSH.1>^~\&amp;</MSH.1>
        <MSH.6>20121116122025</MSH.6>
        <MSH.8>
            <MSH.8.1>ADT</MSH.8.1>
            <MSH.8.2>A01</MSH.8.2>
        </MSH.8>
        <MSH.9>5730224</MSH.9>
        <MSH.10>P</MSH.10>
        <MSH.11>2.5</MSH.11>
        <MSH.17>UNICODE UTF-8</MSH.17>
    </MSH>
    <EVN>
        <EVN.1>A01</EVN.1>
        <EVN.2>20130120151827</EVN.2>
    </EVN>
    <PID>
        <PID.2>0</PID.2>
        <PID.3>123</PID.3>    
        <PID.5>
            <PID.5.1>Name</PID.5.1>
            <PID.5.2>Firstname</PID.5.2>
        </PID.5>
        <PID.7>193106170000</PID.7>
        <PID.8>F</PID.8>
    </PID>
    <PV1>
        <PV1.2>E</PV1.2>            
    </PV1>
</HL7X>

Затем вы можете получить свою информацию из XML на основе строк или проанализировать ее с помощью любого компоновщика XMLDocument.

С помощью HAPI можно анализировать сообщения общим способом, хотя вы можете обнаружить, что кодируете некоторые дополнительные данные и выводите некоторые из них, поскольку они не предназначены для такого использования.

Под этим я подразумеваю, что это на самом деле поддерживается, просто у вас не будет преимуществ от многих более продвинутых функций HAPI.

С использованием классов Terser, Varies, GenericComposite и GenericPrimitives мне удалось быстро запустить и запустить общий универсальный парсер. Это довольно простой ум, но он делает то, что мне нужно.

Далее я хочу взглянуть на MessageVisitor, чтобы увидеть, не могу ли я выполнить часть работы менее хакерским способом (читать, не полагаясь на то, что так много раз).

Удачи, Надеюсь это поможет

Другие вопросы по тегам