Преминете към основното съдържание

Управление на външен ИИ в болничната система

LOSPOR Hospital поддържа Mistral като незадължителен външен доставчик на ИИ. Водената инсталация пита дали външният ИИ да бъде разрешен, като отговорът по подразбиране е Да. Това е само разрешение на ниво система: ИИ остава недостъпен, докато болничният ИТ екип не въведе ключ за доставчика. Затова има две различни безопасни състояния:

  • DISABLED_BY_DEPLOYMENT: политиката на болницата не разрешава външен ИИ.
  • PROVIDER_NOT_CONFIGURED: политиката го разрешава, но няма използваем, защитено съхранен ключ за Mistral.

ENABLED се показва само когато и политиката, и ключът са използваеми. Политиката и ключът са независими. Изключването на ИИ запазва защитения ключ за евентуално по-късно включване. Премахването на ключа веднага прави всички функции с ИИ недостъпни, без да променя избраната политика.

Работа през страницата „Състояние“​

Само нормална сесия на системния администратор, влязъл с парола, може да променя политиката, да заменя ключа или да го премахва от /status/control. Всяко действие отново изисква текущата администраторска парола и причина. Сесия за аварийно възстановяване през конзолата няма достъп до тези действия. Промяната в PostgreSQL и одитният запис се записват в една транзакция.

Страницата показва само Mistral, избраната политика, дали доставчикът е настроен и работоспособен, и времената на последните промени. Полето за ключа винаги е празно. Ключът, неговият шифротекст, nonce, автентикационният маркер и ключът за защита никога не се показват в страницата, отговорите, SQLite, одита, описанието на възможностите или журналите.

Модели​

Всяка функция използва закрепен модел на Mistral с дата във версията, никога псевдоним -latest. Така моделът зад клинична функция се сменя само когато някой го избере.

ФункцияПо подразбиранеПредлагат се още
Предоперативен съветникmistral-small-2603mistral-medium-2508, mistral-large-2512
Разчитане на лабораторни резултати и снимки на мониторmistral-large-2512mistral-medium-2508, mistral-small-2506, ministral-14b-2512

Списъкът е от каталога на Mistral, проверен на 13 септември 2026. Добавянето на модел е промяна във версията. Модели на ИИ в /status/control избира между тях с причина и администраторска парола, а промяната се одитира като политиката. Запазено име, което по-късна версия вече не предлага, се заменя с модела по подразбиране на тази версия.

Mistral спира модели. Когато откаже настроения модел, функцията отговаря с 503 EXTERNAL_AI_MODEL_UNAVAILABLE вместо с обща грешка, а Status записва AI_PROVIDER_REQUEST_FAILED с причина model-unavailable. Изборът на друг модел в Status решава проблема; не е нужно обновяване.

Съхранение и възстановяване​

Ключът за Mistral преминава еднократно по частния маршрут от „Състояние“ към API. API веднага го защитава с AES-256-GCM, нов 96-битов nonce и фиксирана автентикирана връзка local\0MISTRAL\0v1. PostgreSQL съхранява само шифротекста, nonce, автентикационния маркер, версията на ключа и нетайния отпечатък на ключа за защита. Този отпечатък открива несъвпадение след възстановяване, без да се разчита ключът за доставчика. Отделният 32-байтов ключ за защита е достъпен само за API/инструментите чрез HOSPITAL_EXTERNAL_AI_SEAL_KEY_FILE. Той не се споделя със страницата „Състояние“ и не е ключът за шифроване на идентификаторите на пациентите.

Файлът съдържа каноничен base64 запис на точно 32 случайни байта. Архивът съдържа само неговия отпечатък sha256:<hex>. Проверката преди възстановяване трябва да спре преди промяна на базата данни, ако отпечатъкът липсва или е различен. При друг ключ възстановената база не може да удостовери и разчете ключа за доставчика. Истинският ключ се пази и възстановява с останалите защитени тайни на системата. Той никога не се поставя в архив, манифест, аргумент на команда, променлива на средата или журнал.

Предаване на незадължителния ключ при първа инсталация​

Редът с политиката се създава само ако липсва, според HOSPITAL_EXTERNAL_AI_DEFAULT (true, освен ако изрично е false, no или 0). Повторното стартиране на началната настройка при обновяване запазва и политиката, и ключа.

Водената инсталация подава незадължителния ключ само като стандартен вход към еднократната команда. Той никога не е аргумент или променлива на средата:

docker compose --profile tools run --rm -T tools \
./node_modules/.bin/tsx --conditions=react-server \
scripts/configure-hospital-external-ai.ts

Стандартният вход е един ключ за Mistral (до 4096 UTF-8 байта, допуска се един краен нов ред) или е празен. Празният вход завършва успешно с {"ok":true,"configured":false,"skipped":true}. При въведен ключ резултатът съдържа само {"ok":true,"configured":true}. Грешките връщат фиксиран код и никога не повтарят входа.

Граница преди изпращане на данни​

И четирите директни маршрута към доставчика проверяват записаната болнична политика, пълния защитен набор и съвпадащия отпечатък на ключа за защита, преди да прочетат клиничното тяло на заявката, да заредят случай за ИИ или да създадат текст/изображение за изпращане. Те проверяват отново и разчитат ключа за доставчика едва непосредствено преди връзката с Mistral. Болничният режим никога не използва резервно MISTRAL_API_KEY. Липсващ, повреден, несъвпадащ или нечетим ключ за защита води безопасно до PROVIDER_NOT_CONFIGURED.

Публичната безсървърна демонстрация няма маршрут от страницата „Състояние“ и не използва болничната таблица с политика. Нейната съществуваща настройка на доставчика остава отделна от управлението на болничната система.