Как сделать так, чтобы Firely.Terminal не уничтожал кеш пакетов FHIR?
Одним из блестящих аспектов Firely.Terminal является его способность взаимодействовать с локальным кешем пакетов FHIR (
~/.fhir
) таким образом, чтобы он был полностью совместим с инструментами HAPI, использующими кеш. К сожалению, похоже, что это уже не так.
Сегодня я обновил Firely.Terminal до версии 2.4.2, и кажется, что новая версия ходит по всему кешу пакетов FHIR, меняя файлы без запроса.
Раньше единственным изменением Firely.Terminal в существующих пакетах было создание отсутствующего файла . Для недавно установленных пакетов единственным отличием от пакета, установленного с помощью HAPI, были некоторые дополнительные поля в
.index.json
(наличие некоторых полей, содержащих нуль, которые обычно подавляются, и добавление
fhirVersion
поле).
Когда новому Firely.Terminal предлагается добавить пакет в область действия (
fhir install
) он автоматически «запекает» его, что, похоже, включает в себя такие вещи, как моментальный снимок всех ресурсов StructureDefinition и расширение всех ресурсов ValueSet. Даже ресурсы, чей контент остается невредимым, теряют временные метки. Та же участь постигнет все пакеты, перечисленные в качестве зависимостей в манифесте пакета, добавляемого в область действия.
Существует команда «отпечь» (например,
fhir unbake --package kbv.ita.for@1.0.1
), но это не работает рекурсивно. Более того, когда он говорит: «Bake успешно удален из [email protected] » (обратите внимание на ошибочное использование заглавных букв), то это откровенная ложь — содержимое каталога пакета полностью не изменилось, за исключением удаления файла.
.bake.json
.
Следовательно, единственный способ восстановить кеш пакетов до рабочего состояния — это идентифицировать все удаленные пакеты, удалить их все, а затем сослаться на них с помощью какого-либо инструмента HAPI, чтобы повторно кэшировать их.
Я бы не возражал, если бы Firely.Terminal уничтожил собственный кеш. Но он уничтожает глобальный кэш пакетов HAPI для текущего пользователя, а это просто неприемлемо.
Есть ли способ подавить деструктивное поведение Firely.Terminal? В идеале глобально (с эффектом на всю машину), но в крайнем случае подойдет секретный командный переключатель. Если это невозможно: кто-нибудь знает, какая из старых версий самая новая, которая все еще работает, и где ее взять?
Примечание: если кешированные пакеты защищены от записи, то Firely.Terminal не понимает подсказки — он все равно пытается затереть файлы и выдает кучу сообщений «отказано в доступе». Более того, он даже не останавливается при возникновении ошибки; вместо этого он продолжает свой веселый путь и уничтожает все, что можно было забыть защитить от записи.
Фон: одно из важных для нашей работы свойств кэша пакетов FHIR заключается в том, что файлы в кэше точно такие же, как и в (нормативных) опубликованных пакетах. В частности, нам нужно, чтобы профили, опубликованные без снимков, не содержали снимков, наборы значений, опубликованные без расширений, не содержали расширений и так далее. Во-первых, это позволяет убедиться, что кэшированные файлы точно такие же, как те, которые содержатся в опубликованных пакетах (или их фиксированных версиях). Во-вторых, нам нужно контролировать контекст, в котором создаются моментальные снимки профилей, расширяются наборы значений и т. д., поскольку может возникнуть необходимость в предоставлении зависимостей, отличных от тех, что объявлены в манифесте пакета. Последнее иногда необходимо, потому что управление версиями профилей/пакетов в контексте электронных рецептов в Германии немного, гм, своеобразно и может отличаться от стандартов FHIR. Чтобы это работало, все ресурсы должны создаваться/расширяться динамически (в зависимости от контекста использования), а не статически на диске. Все движется в направлении более соответствующего стандартам, но мы еще не совсем там.