Профиль соответствия для сообщения ORU^R01 с образцом HAPI

Я не могу проверить сообщения ORU_R01 и ADT_A04 (HL7 v2.3.1) с помощью HAPI API (версия 2.2) на соответствие сгенерированному профилю соответствия из MWB (Message Workbench).

  • Первая проблема связана с именем, присвоенным группе сегментов MWB в профиле соответствия для сообщения ORU_R01, где PATIENT_RESULT — это имя группы сегментов, сгенерированное MWB (Message Workbench), и < strong>PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI — это способ, которым HAPI ссылается на ту же группу сегментов в своем API.
  • Если я заменю PATIENT_RESULT на PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI в профиле, тогда профиль станет действительным для синтаксического анализатора API HAPI.

Ниже приведены журналы проверки для вышеупомянутой проблемы:

  1. ValidationException - PATIENT_RESULT не найдено в сообщении
  2. ValidationException — структура PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI отображается в сообщении, но не в профиле.

Вторая проблема заключается в сегменте OBX для типа данных, который будет использоваться в поле OBX.5. Поскольку мое сообщение содержит несколько OBX, а также имеет несколько типов данных, скажем NM и ST в поле OBX.2. Таким образом, я не могу иметь фиксированный тип данных для OBX.5 в профиле соответствия, поэтому я попробовал «VARIES», предоставленный HAPI API для заполнителя типа данных в профиле соответствия в объявлении типа данных OBX.5. Но это тоже не сработало.

Ниже приведены журналы проверки для вышеупомянутой проблемы:

  1. ValidationException — тип данных HL7 NM не соответствует типу данных профиля РАЗЛИЧИВАЕТСЯ в OBX-5

  2. ValidationException - тип данных HL7 ST не соответствует типу данных профиля РАЗЛИЧНО в OBX-5


Ниже сообщение:

  • MSH|^~\&|aa|bb|cc|3910|200903230934||ORU^R01^ORU_R01|75535037-123781|P^T|2.3.1
  • ЭВН|A31|200903230934
  • PID|1||29^^||Test300^Leticia^^^^^L||19770202|M||
  • OBX||NM|abc||121||||||F||
  • OBX||ST|def||jaiswal||||||F||

Ниже приведен фрагмент профиля:

    <SegGroup Name="**PATIENT_RESULT**" LongName="PATIENT_RESULT" Usage="R" Min="1" Max="*">
        <SegGroup Name="**PATIENT**" LongName="PATIENT" Usage="O" Min="0" Max="1">
            <Segment Name="**PID**" LongName="patient identification segment" Usage="R" Min="1" Max="1">
                <Field Name="Set ID - PID" Usage="O" Min="0" Max="1" Datatype="SI" Length="4" ItemNo="00104">

    <Segment Name="OBX" LongName="observation/result segment" Usage="O" Min="0" Max="*">

        <Field Name="Set ID - OBX" Usage="O" Min="0" Max="1" Datatype="SI" Length="4" ItemNo="00569">
            <Reference>OBX-1</Reference>
        </Field>
        <Field Name="Value Type" Usage="R" Min="1" Max="1" Datatype="ID" Length="3" Table="0125" ItemNo="00570">
            <Reference>OBX-2</Reference>
        </Field>
        <Field Name="Observation Identifier" Usage="R" Min="1" Max="1" Datatype="CE" Length="1000" ItemNo="00571">
            <Reference>OBX-3</Reference>
            <Component Name="identifier" Usage="O" Datatype="ST" Length="1000">
                <Reference>OBX-3-1</Reference>
            </Component>
            <Component Name="text" Usage="O" Datatype="ST" Length="1000">
                <Reference>OBX-3-2</Reference>
            </Component>
            <Component Name="name of coding system" Usage="O" Datatype="ST" Length="3">
                <Reference>OBX-3-3</Reference>
            </Component>
            <Component Name="alternate identifier" Usage="O" Datatype="ST" Length="3">
                <Reference>OBX-3-4</Reference>
            </Component>
            <Component Name="alternate text" Usage="O" Datatype="ST" Length="3">
                <Reference>OBX-3-5</Reference>
            </Component>
            <Component Name="name of alternate coding system" Usage="O" Datatype="ST" Length="3">
                <Reference>OBX-3-6</Reference>
            </Component>
        </Field>
        <Field Name="Observation Sub-ID" Usage="O" Min="1" Max="1" Datatype="ST" Length="20" ItemNo="00572">
            <Reference>OBX-4</Reference>
        </Field>
        <Field Name="Observation Value" Usage="O" Min="0" Max="1" Datatype="**VARIES**" Length="65536" ItemNo="00573">
            <Reference>OBX-5</Reference>
        </Field>

С уважением, Амар Джайсвал


person Amar Jaiswal    schedule 18.05.2015    source источник
comment
Какой вопрос вы задаете?   -  person Gabe    schedule 18.05.2015
comment
Извините, если цель вопроса не ясна. API-интерфейс hapi дает мне ошибки проверки для профиля соответствия, который я создал из MWB. Способ, которым MWB присваивает имена группе сегментов в профиле соответствия, скажем, PATIENT_RESULT, на что hapi жалуется как: ValidationException — структура PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI появляется в сообщении, но не в профиле. И это потому, что когда hapi анализирует сообщение ORU, у него есть группа сегментов под PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI после сегмента MSH.   -  person Amar Jaiswal    schedule 18.05.2015
comment
И второй вопрос: в OBX.5 (5-е поле сегмента OBX) значение должно соответствовать типу данных, определенному в поле OBX.2 того же сегмента. Но у меня есть несколько сегментов OBX с разными типами данных, каждый для поля OBX.2, и тип данных OBX.5, определенный как VARIES, даже тогда проверка не проходит, за исключением, как показано ниже: тип данных HL7 NM не соответствует типу данных профиля VARIES в ОБХ-5   -  person Amar Jaiswal    schedule 18.05.2015
comment
Возможно, вы могли бы опубликовать свое сообщение, чтобы мы знали, о чем вы говорите.   -  person Gabe    schedule 18.05.2015
comment
1. Проблема заключается в том, что несколько OBX в одном сообщении с разными типами данных в OBX.2, где OBX.5 в профиле соответствия также ожидает определения типа данных, поэтому требуется динамическое переключение между типами данных... Что невозможно через профиль, поэтому я использовал VARIES в качестве заполнителя для типа данных, предоставляемого HAPI API v2.2.   -  person Amar Jaiswal    schedule 19.05.2015
comment
Привет, Гейб, я реструктурировал вопрос, также добавил используемое сообщение, а также фрагмент профиля соответствия.   -  person Amar Jaiswal    schedule 19.05.2015


Ответы (2)


Я думаю, что вы должны использовать ST в качестве типа данных для OBX.5, потому что я не думаю, что есть какой-либо способ сказать MWB, что ему нужно искать в OBX.2 фактический тип данных.

person Gabe    schedule 19.05.2015
comment
Привет, Гейб. На самом деле этот поиск и проверка выполняются API-интерфейсом HAPI, который проверяет сообщение на основе профиля соответствия. Вот почему HAPI представил тип данных-заполнитель как VARIES. Но, похоже, в HAPI есть ошибка, которая не поддерживает то, что должно... НО не уверен... - person Amar Jaiswal; 20.05.2015
comment
@AmarJaiswal осмелится просмотреть исходный код HAPI в отладчике, и если вы обнаружите неправильное место, опубликуйте патч. На мой взгляд, это лучший на сегодняшний день ответ на ваш вопрос, основанный на богатстве знаний, которые вы уже накопили. Кроме того, в комментариях к исходному коду HAPI может быть некоторая важная информация (по крайней мере, когда реализация типа данных была полна ими) - person xmojmr; 25.05.2015

Существует обходной путь для проблемы с именами групп сегментов. (т.е. первая проблема, которую я опубликовал ранее)

Необходимо внести изменения в регулярное выражение '([A-Z]|)+' файла message_profile.xml по адресу ca\uhn\hl7v2\conf\parser в банке hapi-base.

то есть заменить регулярное выражение '([A-Z]|)+' имени группы сегментов на '([A-Z0-9]|)+' в message_profile.xml и перестроить банку для hapi-base.

Теперь ProfileException не будет вызываться при использовании PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI в качестве имени группы сегментов.

person Amar Jaiswal    schedule 27.05.2015