Импорт на терминология
Hospital не разпространява и не изтегля скрито лицензирана терминология.
Институцията получава разрешения пакет, одобрява лиценза и клиничния му обхват и
пази изходните байтове в reference-data/, извън Git и файловете на изданията.
Договор на пакета
Копирайте docs/terminology-manifest.example.json като
<пакет>/manifest.json и заменете всички примерни стойности. Строгият манифест
записва:
- ID, източник, версия, лицензна референция, одобряващ и дата на одобрение;
- всеки точен файл, ролята му, дали е задължителен и SHA-256; провереното доказателство добавя наблюдавания размер;
- минимални одобрени бройки за ICD-10, български етикети, ATC, LOINC, Athena concepts/relationships/ancestors и ConceptMap;
- задължителна цялост на връзките и поне едно намерено стандартно съответствие.
Задължителните имена са VOCABULARY.csv, DOMAIN.csv, CONCEPT.csv,
CONCEPT_RELATIONSHIP.csv, CONCEPT_ANCESTOR.csv, CONCEPT_SYNONYM.csv и един
български файл ICD10*.xlsx. Неописан/липсващ файл, различна контролна сума,
опасен път или нулево очакване се отказват преди промяна на база данни.
Пакетът, манифестът и изходните записи трябва да са истински обикновени
файлове с една твърда връзка в истинска папка на пакета; символни връзки,
допълнителни твърди връзки, подпапки и други неописани видове записи също се
отказват.
Клиничният отговорник за терминологията трябва да избере реалистичните минимални бройки от одобрения пакет. Системата не може да вземе това клинично и лицензно решение вместо болницата.
Процес през Status
Система с включен агент на сървъра показва Status → Поколения терминология.
Болничният ИТ екип първо поставя един одобрен пакет в директна подпапка на
reference-data/. Сървърът изброява само по име директните папки там, които
съдържат manifest.json, и формата за импорт ги предлага (име все пак може да
се въведе). Status никога не качва, не изтегля, не изброява и не показва самите
лицензирани файлове. Страницата показва само идентификатора и версията на активния пакет,
часа на активиране, SHA-256 на манифеста, дали има поколение за връщане и ограничено
състояние на чакащата/текущата операция.
Обикновена сесия в Status с парола и MFA може да заяви импорт, възобновяване на
точно същия пакет, връщане или окончателно приключване само след повторно
въвеждане на администраторската парола и маркиране на потвърждението за
конкретното действие. Аварийните сесии от конзолата са само за преглед. Импортът
и възобновяването приемат едно име на папка по
[A-Za-z0-9][A-Za-z0-9._-]{0,79}; не могат да се подават пътища, URL адреси,
вложени папки, команди, идентификатори на манифеста, имена на бази или изходни
файлове.
Status записва един файл с точно определени полета чрез непривилегирования си
потребител. Агентът на сървъра с права root проверява формата, възрастта, inode и
твърдите връзки,
състоянието, вида действие, името на пакета и ID срещу повторно изпълнение, след
което го свързва със scripts/terminology-host-operation.sh. Това е единственият
привилегирован диспечер за браузъра и той извиква само включените скриптове за
импорт/възобновяване/връщане/приключване. Преди операция се взема постоянното
заключване .data/io-mutation.lock, общо с архивирането и обновяването. Сурови
журнали, пътища, лицензен текст, имена на бази, идентификатори на изпълнения,
имена на файлове и данни за вход остават на сървъра; информацията към Status е
ограничена до точен списък и отхвърля допълнителни полета.
Ако сървърът спре по време на операция, агентът запазва доказателството за текущото действие, не го повтаря и отбелязва изисква оператор. Болничният ИТ екип трябва да провери защитения журнал и състоянието на терминологията от конзолата. Изрично избран режим само от конзолата също прави управлението на терминологията в Status достъпно само за преглед; командите по-долу остават поддържани.
Поддържан импорт
Планирайте период за поддръжка: контейнерите за клиничните услуги, Research, фоновата обработка, архивирането и Status се спират, за да не се загуби запис между клонирането и активирането. Изпълнете:
sudo sh /opt/lospor-hospital/current/scripts/import-terminology.sh папка-на-пакета --operator "Име на оператора"
Импортерът използва подписания образ tools и локалния tsx; не стартира
мениджър на пакети и не използва мрежата. Той проверява манифеста, свободното място в
PostgreSQL, клонира lospor в отделна база и импортира в ред:
- ICD-10/ATC и български етикети;
- включените канонични LOINC редове;
- пълните Athena vocabulary, relationships, ancestors и synonyms;
- съответствията между локални и стандартни понятия.
Следват проверки на всички минимуми, липсващи цели на връзки/предци,
референтната цялост на mapped concepts и двуезичните ICD редове. Всеки байт от
пакета се хешира отново непосредствено преди активиране. Само напълно проверено
поколение се активира. Старата база се преименува и запазва, а подготвената
получава постоянното име lospor. Ако второто преименуване се провали, първото
се връща. Преди активиране пълното доказателство с контролни суми и хешовете на
одобрените записи за минимуми/бройки се свързват със самата подготвена база.
Доказателството на сървъра трябва да съответства на този маркер, затова старо
доказателство не може да одобри по-старо възстановено поколение терминология.
При прекъсване остават pending.tsv, подготвената база, логовете,
доказателствата и непроменената действаща база. Стартирайте същия пакет с
--resume. Различен пакет не може да поеме незавършеното поколение.
Въвеждане в експлоатация, връщане и финализиране
sudo sh /opt/lospor-hospital/current/scripts/terminology-status.sh --go-live
sudo sh /opt/lospor-hospital/current/scripts/doctor.sh --go-live
Пакетът не е задължителен: версията съдържа кодовете, нужни за клинична
работа. terminology-status.sh --go-live е неуспешна, докато няма активен
одобрен манифест и действащата база не покрива договора за бройки и цялост; с
нея се проверява импортът. doctor.sh --go-live прилага тази строга проверка
само на система, в която е импортиран пакет; без пакет отчита, че се използват
включените кодове. Аварийното възстановяване прилага същото правило във
вътрешната мрежа, преди Caddy да бъде отворен отново. Ако готовността се провали след активиране,
импортерът автоматично възстановява запазеното предишно поколение база и не
разрешава клинично пускане.
В периода за преглед върнете предишното поколение с:
sudo sh /opt/lospor-hospital/current/scripts/rollback-terminology.sh --confirm
Отхвърленото поколение се запазва за анализ, а предишните доказателства се възстановяват. След приемане и когато незабавно връщане вече не е нужно, премахнете окончателно запазената база:
sudo sh /opt/lospor-hospital/current/scripts/finalize-terminology.sh --confirm-drop-rollback
Финализирането премахва запазеното поколение необратимо; връщане е възможно само
от отделно проверено резервно копие. При приключване през Status активното поколение първо се доказва
с terminology-status.sh --go-live, запазеното поколение се премахва и
готовността се доказва отново. Никоя команда не импортира лицензирана
терминология автоматично при инсталация, обновяване, CI или публикуване на
версия.