validator_cli.jar зависает или прерывает без сообщения при использовании определенных кэшированных пакетов с параметром-ig

#hapi #hapi-fhir

Вопрос:

У меня возникли проблемы с получением автономного валидатора HAPI командной строки ( validator_cli.jar ) для проверки ресурсов с помощью определенных пакетов, загруженных с simplifier.net.

Необходимые пакеты и их зависимости были установлены в кэше пакетов FHIR в соответствии с обычными инструкциями, приведенными на simplifier.net страницы пакетов, т. е. через fhir install <package> <version> . Ручная проверка кэша (@ %userprofile%/.fhir/пакеты) не показывает никаких отклонений; содержимое показано в конце этого поста. package.json и fhirpkg.lock.json находятся в рабочем каталоге процесса валидатора, хотя валидатору, похоже, это безразлично.

Командная строка, используемая для вызова валидатора, является:

 <java.exe> -jar <validator_cli.jar> <resource> -tx n/a -version 4.0.1 -ig [package]
 

Объекты в угловых скобках являются заполнителями для полных путей к рассматриваемым файлам; символы кавычек автоматически добавляются вызывающим, если в именах файлов обнаружены пробелы. [package] это каноническое имя пакета, необязательно включающее версию.

С приведенной выше схемой вызова проверка работает должным образом для некоторых пакетов, но не для других. Примером, который работает, является de.abda.eRezeptAbgabedaten#1.0.3 (проект eRezeptAbgabedaten @ simplifier.net).

Примерами, которые не работают, являются de.gematik.erezept-workflow.r4#1.0.2 и de.gkvsv.eRezeptAbrechnungsdaten#1.0.3. Для них валидатор загружает все соответствующие пакеты, а затем либо завершает работу с кодом выхода 1, либо зависает навсегда, без указания того, что он делает. В любом случае строка «Проверка» не отображается, и результат один и тот же, независимо от наличия параметра-profile.

 FHIR Validation tool Version 5.3.14 (Git# d17a8da923f9). Built 2021-05-14T15:06:07.75Z (9 days old)
  Java:   1.8.0_101 from C:Program FilesJavajre1.8.0_101 on amd64 (64bit). 7264MB available
  Paths:  Current = d:devFHIRCLI, Package Cache = C:UsersKnightOwl.fhirpackages
  Params: d:devCLRApoTIE-Rezept-BeispieldatenABDAeRezeptAbrechnungsdaten-1.0.3529d741c-7ad8-41d8-97c3-9aabbdd084b2.xml -tx n/a -version 4.0.1 -debug -ig de.gkvsv.eRezeptAbrechnungsdaten#1.0.3
Loading
  Load FHIR v4.0 from hl7.fhir.r4.core#4.0.1 - 4575 resources (00:05.0071)
  Load hl7.terminology#2.1.0 - 3767 resources (00:01.0358)
  Terminology server null - Version n/a: No Terminology Server (00:00.0000)
  Load de.basisprofil.r4#0.9.13 - 128 resources (00:00.0161)
  Load de.abda.eRezeptAbgabedaten#1.0.3 - 49 resources (00:00.0066)
  Load KBV.Basis#1.1.3 - 68 resources (00:00.0081)
  Load KBV.ITA.FOR#1.0.3 - 14 resources (00:00.0068)
  Load KBV.ITA.ERP#1.0.1 - 28 resources (00:00.0051)
  Load de.gematik.erezept-workflow.r4#1.0.2

-> exit code 1
 

The validator built into the Firely Terminal ( fhir validate ) does not exhibit these problems, though, even though it uses the same package cache.

Note: it is possible that de.gematik.erezept-workflow.r4#1.0.2 is poisoned in some way and that it causes the other package to fail because it is among its dependencies.

Any tips on finding out what’s wrong with the poisonous package, so I can clean it up for validation use? Unfortunately the validator itself doesn’t give any hints, even with -debug .

Note: the resource I used above is the first example resource from project eRezeptAbrechnungsdaten, package de.gkvsv.eRezeptAbrechnungsdaten#1.0.3. Here’s the output of fhir cache :

 de.abda.eRezeptAbgabedaten@1.0.3
de.basisprofil.r4@0.9.13
de.gematik.erezept@workflow.r4#1.0.2
de.gkvsv.eRezeptAbrechnungsdaten@1.0.3
hl7.fhir.core@4.0.1
hl7.fhir.r4.core@4.0.1
hl7.fhir.r4.elements@4.0.1
hl7.fhir.r4.examples@4.0.1
hl7.fhir.r4.expansions@4.0.1
hl7.fhir.r5.core@current
hl7.fhir.xver@extensions#0.0.4
hl7.terminology@2.1.0
KBV.Basis@1.1.3
KBV.ITA.ERP@1.0.1
KBV.ITA.FOR@1.0.3
 

P.S.: двоичный поиск выявил два ядовитых файла в пакете de.gematik.erezept-workflow.r4#1.0.2. createOperation.json вызывает прерывание валидатора с кодом выхода 1 (без какого-либо сообщения об ошибке) во время процесса загрузки пакета. StructureDefinition-MedicationDispense-ERxMedicationDispense.json приводит к зависанию валидатора во время процесса загрузки пакета. Проверка работает нормально после удаления этих двух файлов из кэша пакетов и удаления .index.json . Однако нам также придется проверить ErxMedicationDispense ресурсы, поэтому удаление двух ядовитых файлов не является средством правовой защиты; оно имеет только диагностическое значение.