Коллеги, продолжаем разбирать интеграционные задачи. Сегодня у нас на очереди – настройка выгрузки протокола осмотра врача-специалиста в подсистему ВИМИС АкиНео (региональный компонент Санкт-Петербурга). Документ формируется на основе приёма (осмотра) врача-специалиста и передаётся в РЭМД как СЭМД-beta с кодом 341. Разберём все шаги: тип действия, свойства, идентификации, проверки и сам XML-шаблон.
Что такое ВИМИС АкиНео и зачем это в МИС
ВИМИС АкиНео – это региональная подсистема Санкт-Петербурга, которая собирает и хранит протоколы осмотров врачей-специалистов. В неё должны выгружаться данные из МИС медицинских организаций города.
Формируемый документ – «Прием (осмотр) врача-специалиста» (код вида медицинской документации 341). В региональной системе он идентифицируется как СЭМД-beta ВИМИС АкиНео. Идентификатор формата CDA – 159.
Для корректной выгрузки потребуется:
- Настроить тип действия с нужными свойствами.
- Сопоставить свойства с секциями CDA через параметр «Секция CDA».
- Настроить идентификации (организация, тип действия, услуги, справочники).
- Добавить проверки в основной шаблон печати.
- Обеспечить формирование регионального идентификатора пациента.
Шаг 1. Настройка типа действия
Создайте новый тип действия (или скопируйте существующий протокол осмотра). Назовём его, например, «Прием (осмотр) врача-специалиста (ВИМИС АкиНео)».
Основные параметры
- Код для отчётов –
OtherDocuments(обязательно, иначе CDA не сформируется). - Идентификатор документа – настраиваем через счётчик. Зайдите в «Настройки → Счётчики», создайте новый счётчик с произвольным кодом (например,
VIMIS_AkiNeo_ID) и настройте формат номера (можно включить год, месяц, порядковый номер). В типе действия в свойстве «Идентификатор документа» выберите этот счётчик.
Идентификация типа действия
На вкладке «Идентификация» добавьте запись:
- Внешняя система –
1.2.643.2.69.1.1.1.195.Cda(классификатор электронных медицинских документов. Формат Cda). - Код –
159.
Это ключ, по которому система поймёт, что этот тип действия формирует именно СЭМД-beta для ВИМИС АкиНео.
Связь с номенклатурной услугой
На вкладке «Основная информация» в поле «Номенклатурная услуга» выберите соответствующую услугу (например, «Прием (осмотр) врача-акушера-гинеколога повторный»). Сама услуга должна иметь идентификацию по справочнику 1.2.643.5.1.13.13.11.1070 (номенклатура медицинских услуг). Если такой услуги нет – создайте её и добавьте идентификацию.
Настройка свойств и секций CDA
В типе действия создайте свойства, которые будут хранить данные для выгрузки. Для каждого свойства в параметре «Секция CDA» укажите соответствующий код из таблицы ниже.
Полный перечень секций (обязательные отмечены «1» в столбце «Обязат-ть»):
| Назначение секции | Код секции CDA | Обязат-ть | Тип свойства | Примечания |
|---|---|---|---|---|
| Жалобы | COMPLAINTS | 0 | Text | |
| Анамнез заболевания | ANAM | 1 | Text | Можно использовать несколько свойств с одинаковым кодом – они объединятся в одну секцию |
| Анамнез жизни | ANAMZ | 1 | Text | То же – несколько свойств с одинаковым кодом |
| Эпидемиологический анамнез | EPIDANAM | 0 | Text | |
| Пульс (1/мин) | PULSE | 0 | Integer | |
| Артериальное давление систолическое (мм.рт.ст.) | PRESSURES | 0 | Integer | |
| Артериальное давление диастолическое (мм.рт.ст.) | PRESSURED | 0 | Integer | |
| Температура тела (°C) | TEMP | 0 | Double | |
| Сатурация (%) | SATURATION | 0 | Integer | |
| Общее состояние пациента | CONDIT | 1 | Справочник | Значения по OID 1.2.643.5.1.13.13.11.1006: Удовлетворительное, Средней тяжести, Тяжелое, Крайне тяжелое, Терминальное, Клиническая смерть |
| Данные осмотра | OBJECT | 1 | Text | Можно использовать несколько свойств – они объединятся |
| Оценка сознания | CONSCIOUS | 0 | Справочник | Значения по OID 1.2.643.5.1.13.13.11.1531: Ясное, Спутанное, Заторможенное, Отсутствует (коматозное) |
| Дата установления диагноза | DIAGDATE | 1 | Date | |
| Клинический диагноз (текст) | DIAGN | 1 | Text | |
| Рекомендации | RECOM | 0 | Text | |
| Заключение | CONCL | 1 | Text | Можно несколько свойств – объединятся |
Важно: Поля с типом «Справочник» должны иметь выпадающий список с соответствующими значениями. Настройте их заранее в справочниках МИС.
Умолчания типа действия
На вкладке «Умолчания» установите опцию:
«МКБ и морфология по умолчанию» → «Вводится непосредственно»
Это позволит врачу при осмотре вводить код МКБ вручную (хотя лучше брать из диагноза в случае обслуживания).
Шаг 2. Настройка типа события
Для случая обслуживания (обращения), к которому привязан осмотр, у типа события должен быть заполнен «Код ЕГИСЗ». Обычно это код по справочнику видов медицинской помощи или обращений. Уточните в вашем регионе, какой код нужен для амбулаторного приёма (скорее всего, 1 или 2). Без этого кода CDA может не пройти валидацию.
Шаг 3. Настройка идентификаций (внешних систем)
Чтобы МИС и ВИМИС АкиНео «понимали» друг друга, нужно сопоставить объекты.
Организация
У вашей медицинской организации (в карточке организации, вкладка «Идентификация») должна быть заполнена идентификация по справочнику MDR308 (Регистр МО РФ). Это код, который используется для формирования уникальных идентификаторов в CDA (root и extension). Без него документ не будет принят.
Номенклатурная услуга
У услуги, выбранной в типе действия, должна быть идентификация по справочнику 1.2.643.5.1.13.13.11.1070 (Номенклатура медицинских услуг). Код услуги должен соответствовать коду в федеральном справочнике.
Должность врача
У врача (сотрудника) должна быть идентификация по OID 1.2.643.5.1.13.13.11.1002 (справочник должностей). Желательно также иметь идентификацию по звёздочному OID для наименования должности.
Шаг 4. Обеспечение регионального идентификатора пациента
Для выгрузки в ВИМИС АкиНео требуется региональный идентификатор пациента (не тот, что в вашей МИС, а единый по Санкт-Петербургу). Для этого необходимо:
- Ревизия ИЭМК не ниже 28080. Уточните у администратора вашей ИЭМК текущую ревизию. Если ниже – обновите.
- Глобальные настройки. Проверьте, есть ли в глобальных настройках запись с кодом
ExtendedMseUrl. Если нет – создайте её со значением:http://${dbServerName}/extendedmse/api - Основной шаблон печати. В начало шаблона (или перед вызовом CDA) добавьте следующие строки:
{: from library.Utils import forceString}
{: clientGlobalIdNetrika = readUrl("http://"+forceString(dbServerName)+"/extendedmse/api?fromtemplate=1&clientid="+forceString(client.id), timeout=50)}
Это позволит получить глобальный идентификатор пациента из внешнего сервиса.
- Конфиг ИЭМК. Убедитесь, что в конфигурационном файле ИЭМК прописаны параметры:
gDefaultMpiUrl– адрес MPI (регионального регистра пациентов).gMpiToken– токен для доступа.
Без этого в XML-шаблоне вместо clientGlobalIdNetrika будет пустота, и идентификатор пациента сформируется неверно.
Шаг 5. Проверки заполнения обязательных данных
В печатный шаблон (тот, который формирует PDF-версию протокола) необходимо добавить проверки, чтобы пользователь не мог сформировать CDA, если не заполнены критически важные поля.
Дата выдачи документа
<!--Проверка на наличие даты выдачи документа, удостоверяющего личность-->
{if: not client.document.date}
{: from PyQt4.QtGui import QMessageBox as mb}
{mb.critical(None, u'Проверка заполнения данных', u'ВНИМАНИЕ!\n\n' + u'Не заполнена дата выдачи документа, удостоверяющего личность пациента.\n', mb.Ok, mb.Ok)}
{exit(0)}
{end:}
СНИЛС пациента
<!--Проверка на наличие СНИЛС пациента-->
{if: not client.SNILS}
{: from PyQt4.QtGui import QMessageBox as mb}
{mb.critical(None, u'Проверка заполнения данных', u'ВНИМАНИЕ!\n\n' + u'Не заполнен СНИЛС пациента.\n', mb.Ok, mb.Ok)}
{exit(0)}
{end:}
Полис ОМС
<!--Проверка на наличие полиса ОМС пациента-->
{if: not client.compulsoryPolicy.number}
{: from PyQt4.QtGui import QMessageBox as mb}
{mb.critical(None, u'Проверка заполнения данных', u'ВНИМАНИЕ!\n\n' + u'Не заполнены данные о полисе ОМС пациента.\n', mb.Ok, mb.Ok)}
{exit(0)}
{end:}
Адрес фактического проживания
<!--Проверка на наличие адреса проживания пациента-->
{if: not client.locAddress}
{: from PyQt4.QtGui import QMessageBox as mb}
{mb.critical(None, u'Проверка заполнения данных', u'ВНИМАНИЕ!\n\n' + u'Не заполнен адрес проживания пациента.\n', mb.Ok, mb.Ok)}
{exit(0)}
{end:}
Эти проверки встроены прямо в шаблон печати. Если какое-то поле пустое – пользователь увидит сообщение и CDA не сформируется.
Шаг 6. Ссылка на XML-шаблон в основном шаблоне печати
В том же основном шаблоне печати (где вы формируете PDF протокола) добавьте строку, которая подключает XML-шаблон:
{: addSupplement('xml', formatByTemplate('VIMIS_AkiNeo', 'CDA')) }
Здесь:
'VIMIS_AkiNeo'– имя шаблона печати, в котором хранится XML-документ (файлВИМИС АкиНео.xml).'CDA'– контекст этого шаблона.
Убедитесь, что XML-шаблон загружен в МИС и имеет правильное имя.
Шаг 7. Дополнительные требования к данным
Для успешной выгрузки необходимо, чтобы в случае обслуживания (обращении) были выполнены условия:
- Случай обслуживания закрыт – проставлена дата выполнения (дата окончания случая).
- Диагноз должен быть выставлен по справочнику
1.2.643.2.69.1.1.1.165(видимо, региональный справочник диагнозов). Убедитесь, что в вашей МИС диагнозы пациента имеют коды именно из этого справочника.
Заключение
Настройка выгрузки протоколов в ВИМИС АкиНео – задача не самая простая, но она необходима для интеграции с региональной системой Санкт-Петербурга. Следуйте шагам:
- Создайте тип действия с идентификатором 159 и кодом отчётов
OtherDocuments. - Добавьте свойства с кодами секций CDA по таблице.
- Настройте идентификации: организация (MDR308), услуга (1070), должность (1002).
- Обеспечьте получение глобального идентификатора пациента через
clientGlobalIdNetrika. - Вставьте проверки в основной шаблон печати.
- Подключите XML-шаблон через
addSupplement.
После этого врачи смогут формировать протоколы осмотра, которые будут корректно передаваться в ВИМИС АкиНео.
Если у вас возникли вопросы – пишите, разберёмся.


