Ссылка скопирована
Поиск

Справочник ошибок интеграции МИС с РЭМД ЕГИСЗ

Оглавление

Описание

Как устроены проверки РЭМД

Системные ошибки

Ошибки логики запроса на регистрацию

Ошибки электронной подписи

Ошибки проверки медработника (ФРМР)

Ошибки проверки организации (ФРМО)

Ошибки проверки пациента (ГИП)

Ошибки валидации файла СЭМД по XSD-схеме

Ошибки валидации файла СЭМД по схематрону (Schematron)

Ошибки кросс-валидации запроса и тела СЭМД

Общие рекомендации

Описание

Документ предназначен для разработчиков МИС, интегрирующихся с подсистемой «Федеральный реестр электронных медицинских документов» (РЭМД) ЕГИСЗ. Содержит коды ошибок, причины их возникновения и инструкции по устранению.

Как устроены проверки РЭМД

Процесс регистрации СЭМД состоит из двух этапов:

Этап 1 - проверка запроса на регистрацию (синхронный ответ):

  • Структура запроса по XSD-схеме
  • Регистрация и активность ИС в РЭМД
  • Логика запроса: даты, уникальность ID, связи документов
  • Действительность и формат электронных подписей
  • Соответствие подписей данным ФРМР и ФРМО
  • Справочные значения: роли, должности, вид документа
  • Сведения о пациенте

Этап 2 - проверка файла СЭМД (асинхронный ответ через registerDocumentResult):

  • Соответствие контрольных сумм
  • Кросс-валидация метаданных запроса и содержимого CDA
  • Валидация справочных значений в теле СЭМД
  • Валидация по XSD-схеме
  • Валидация по схематрону (Schematron)
Большинство ошибок валидации файла имеют код `VALIDATION_ERROR`. Для диагностики ориентируйтесь на текстовое описание после кода, а не только на сам код.

Системные ошибки - действий не требуется

Эти ошибки возникают на стороне РЭМД. МедФлекс переотправляет документы автоматически. Если ошибка повторяется больше суток - обратиться к менеджеру МедФлекса

RUNTIME_ERROR

  • Текст ошибки: Internal error / Непредвиденная ошибка
  • Причина: временный сбой на стороне РЭМД
  • Что делать: документ переотправляется автоматически. Если ошибка повторяется более суток - обратиться к менеджеру МедФлекса

INTERNAL_ERROR

  • Текст ошибки: Внутренняя ошибка системы
  • Причина: временный сбой на стороне РЭМД
  • Что делать: документ переотправляется автоматически. Если ошибка повторяется более суток - обратиться к менеджеру МедФлекса

CA_INACCESSIBILITY

  • Текст ошибки: Удостоверяющий центр сертификата недоступен
  • Причина: временная недоступность УЦ
  • Что делать: документ переотправляется автоматически. Если ошибка повторяется - проверить сертификат на e-trust.gosuslugi.ru

ASYNC_RESPONSE_TIMEOUT

  • Текст ошибки: Превышено ожидание асинхронного ответа от проверяющей системы
  • Причина: таймаут на стороне РЭМД
  • Что делать: обратиться к менеджеру МедФлекса

MIS_NOT_AVAILABLE

  • Текст ошибки: Сервис предоставляющей ИС не доступен
  • Причина: РЭМД не смог обратиться к МИС для получения файла документа через метод getDocumentFile
  • Что делать: убедиться, что МИС доступен из внешней сети. Проверить endpoint и firewall. Документ переотправляется автоматически

Ошибки логики запроса на регистрацию

NOT_UNIQUE_PROVIDED_ID

  • Текст ошибки: Документ с таким идентификатором уже зарегистрирован
  • Причина: дублирование localId документа в ИС, либо документ уже был успешно зарегистрирован ранее
  • Что делать: проверить, не был ли документ уже зарегистрирован (вызвать searchRegistryItem). Обеспечить уникальность localId в ИС. Если документ зарегистрирован - МедФлекс автоматически уточнит статус в течение часа

WRONG_CREATION_DATE

  • Текст ошибки: Дата создания документа позже даты регистрации
  • Причина: системное время сервера МИС опережает время сервера РЭМД
  • Что делать: проверить синхронизацию времени сервера МИС по NTP. Проверить часовой пояс. Убедиться, что дата создания документа не в будущем

CAN_NOT_ASSOCIATE

  • Текст ошибки: Недопустимая связь документов
  • Причина: попытка создать связь, не предусмотренную регламентом РЭМД
  • Что делать: проверить корректность формирования связей документов в запросе на регистрацию

NOT_UNIQUE_ASSOCIATION

  • Текст ошибки: Регистрируемая связь уже существует
  • Причина: повторная попытка создать уже существующую связь между документами
  • Что делать: проверить, не была ли связь уже создана. Не дублировать запросы на создание связей

RESEND_ERROR

  • Текст ошибки: Данный документ зарегистрирован
  • Причина: повторная отправка уже зарегистрированного документа
  • Что делать: вызвать searchRegistryItem для получения сведений о регистрации. Повторная отправка не требуется

NO_DOCUMENT_KIND_ON_DATE

  • Текст ошибки: Вид документа не актуален на дату создания
  • Причина: вид СЭМД не разрешён к регистрации на указанную дату - не начался или уже закончился
  • Что делать: проверить актуальность вида документа в справочнике «Регистрируемые медицинские документы» (OID 1.2.643.5.1.13.13.11.1520) на nsi.rosminzdrav.ru

Ошибки электронной подписи

CANT_BUILD_CERT_CHAIN_TO_ACCREDITED_CA_CERT

  • Текст ошибки: Не удалось построить цепочку сертификатов до аккредитованного УЦ
  • Причина: сертификат выдан неаккредитованным УЦ, или один из сертификатов цепочки недействителен
  • Что делать: проверить аккредитацию УЦ на e-trust.gosuslugi.ru. Возможно, потребуется перевыпустить сертификат в аккредитованном УЦ

DOC_DATE_MISMATCH_CERT_NOT_AFTER

  • Текст ошибки: Сертификат недействителен на дату создания документа - срок действия истёк
  • Причина: дата создания документа позже окончания срока действия сертификата
  • Что делать: использовать актуальный сертификат. Проверить даты действия сертификата перед подписанием

DOC_DATE_MISMATCH_CERT_NOT_BEFORE

  • Текст ошибки: Сертификат не начал действовать на дату создания документа
  • Причина: дата создания документа раньше даты начала действия сертификата
  • Что делать: проверить корректность даты создания документа и дату начала действия сертификата

NO_END_ENTITY_CERTIFICATE

  • Текст ошибки: В подписи отсутствует сертификат
  • Причина: подпись сформирована без вложения сертификата в контейнер
  • Что делать: проверить настройки формирования подписи - сертификат должен включаться в контейнер ЭП

NO_SIGNATURE

  • Текст ошибки: В запросе отсутствуют подписи
  • Причина: запрос отправлен без открепленных подписей
  • Что делать: добавить требуемые подписи в запрос на регистрацию

SIGNATURE_DUPLICATION

  • Текст ошибки: Дублирование подписи сотрудника
  • Причина: в запросе присутствуют две одинаковые подписи от одного подписанта
  • Что делать: убрать лишние подписи. Правило: 1 подписант = 1 подпись

MULTIPLE_SIGNERS

  • Текст ошибки: В контейнере подписи указано более одного подписанта
  • Причина: нарушение требований к формату контейнера ЭП
  • Что делать: привести подписи к формату: 1 подпись - 1 подписант

SIGNATURE_DECODING_ERROR

  • Текст ошибки: Ошибка декодирования электронной подписи
  • Причина: повреждён или некорректно закодирован контейнер подписи
  • Что делать: проверить процедуру формирования и Base64-кодирования подписи в МИС

UNKNOWN_ALGORITHM

  • Текст ошибки: Неподдерживаемый алгоритм подписи
  • Причина: ЭП сформирована с алгоритмом, не поддерживаемым РЭМД
  • Что делать: использовать ГОСТ-алгоритмы подписи (ГОСТ Р 34.10-2012)

WRONG_SIGNATURE_FORMAT

  • Текст ошибки: Неподдерживаемый формат подписи
  • Причина: формат контейнера подписи не соответствует требованиям РЭМД
  • Что делать: проверить формат - РЭМД принимает открепленную подпись CMS (PKCS#7)

Validation_Error - дата и время подписи

  • Текст ошибки: Дата и время создания подписи МР/МО не может быть позже даты и времени поступления запроса на регистрацию
  • Причина: системные часы сервера МИС опережают время РЭМД
  • Что делать: синхронизировать время сервера по NTP. Дата подписи не может быть позже момента получения запроса РЭМД

Validation_Error - последовательность подписей

  • Текст ошибки: Дата и время создания подписи МР не может быть позже даты и времени создания подписи МО
  • Причина: подпись организации поставлена раньше подписи врача - логическая ошибка документооборота
  • Что делать: соблюдать порядок подписания: сначала подписывает МР, затем МО

Ошибки проверки медработника (ФРМР)

PERSON_NOT_FOUND

  • Текст ошибки: Медицинский работник не найден в ФРМР
  • Причина: СНИЛС или ФИО МР не найдены в ФРМР на дату создания документа
  • Что делать: проверить корректность СНИЛС и ФИО МР. Убедиться, что МР внесён в ФРМР на portalmr.egisz.rosminzdrav.ru

PERSON_CARD_NOT_FOUND

  • Текст ошибки: В ФРМР отсутствует личное дело сотрудника на дату создания документа
  • Причина: МР найден в ФРМР, но личное дело не заполнено
  • Что делать: заполнить личное дело МР в ФРМР. После внесения изменений переотправить документ

VALUE_MISMATCH_METADATA_AND_FRMR

  • Текст ошибки: Данные МР в запросе не соответствуют данным ФРМР
  • Причина: ФИО, дата рождения или иные данные МР в МИС расходятся с ФРМР
  • Что делать: сверить и исправить данные МР в МИС или ФРМР. После исправления переотправить документ

PERSON_POST_IN_FRMR_MISMATCH

  • Текст ошибки: Должность сотрудника не соответствует занимаемой им должности в организации на дату создания документа по данным ФРМР
  • Причина: в МИС указана должность, отличная от актуальной должности МР в ФРМР
  • Что делать: исправить должность МР в МИС или актуализировать её в ФРМР. Переподписать и переотправить документ

LEGAL_AUTHENTICATOR_NOT_FOUND

  • Текст ошибки: Медицинский работник, придавший документу юридическую силу, не найден в запросе на регистрацию сведений
  • Причина: подписант legalAuthenticator в теле СЭМД не совпадает с подписантом в метаданных запроса
  • Что делать: убедиться, что сотрудник, указанный как legalAuthenticator в CDA, совпадает с подписантом в метаданных запроса на регистрацию

POSITION_TO_ROLE_MISMATCH

  • Текст ошибки: На дату создания документа для указанного вида не предусмотрено подписание сотрудником с указанной ролью и должностью
  • Причина: должность МР не позволяет подписывать документ данного вида с указанной ролью
  • Что делать: проверить допустимые роли и должности в справочнике «РЭМД. Правила подписи ЭМД» (OID 1.2.643.5.1.13.13.99.2.42) на nsi.rosminzdrav.ru

NO_SPECIALITY

  • Текст ошибки: Специальность МР не соответствует допустимым для данного вида документа
  • Причина: специальность МР не входит в допустимые по справочнику правил подписи
  • Что делать: проверить допустимые специальности в справочнике «РЭМД. Правила подписи ЭМД» (OID 1.2.643.5.1.13.13.99.2.42)

NO_ROLE_POLICY_ON_DATE

  • Текст ошибки: На дату регистрации документа недоступно подписание передаваемой ролью
  • Причина: роль не была активна для данного вида документа на дату создания
  • Что делать: проверить актуальность ролей подписания в справочнике «РЭМД. Правила подписи ЭМД»

Ошибки проверки организации (ФРМО)

ORG_NOT_FOUND_IN_FRMO

  • Текст ошибки: Медицинская организация не найдена в ФРМО
  • Причина: OID МО в запросе не зарегистрирован в ФРМО
  • Что делать: проверить OID МО. Убедиться, что МО внесена в ФРМО на portalmr.egisz.rosminzdrav.ru. Проверить корректность OID в настройках МИС

VALUE_MISMATCH_METADATA_AND_CERTIFICATE

  • Текст ошибки: Несоответствие данных подписанта в запросе и в сертификате (СНИЛС, ФИО, ОГРН)
  • Причина: данные в метаданных запроса отличаются от данных в сертификате ЭП
  • Что делать: проверить совпадение ОГРН (ОГРНИП) организации в МИС и в атрибутах сертификата. При наличии нескольких филиалов убедиться, что выбран верный сертификат подписи

Validation_Error - ОГРН МО

  • Текст ошибки: ОГРН МО из СЭМД не совпадает с ОГРН МО в ФРМО
  • Причина: в теле CDA-документа указан ОГРН, отличный от зарегистрированного в ФРМО
  • Что делать: исправить ОГРН в настройках организации в МИС. Значение должно совпадать с данными ФРМО

Validation_Error - OID структурного подразделения

  • Текст ошибки: СП из запроса на регистрацию не совпадает с СП в СЭМД (providerOrganization / representedOrganization / representedCustodianOrganization)
  • Причина: OID структурного подразделения в метаданных запроса отличается от OID в теле СЭМД
  • Что делать: убедиться, что OID СП одинаков во всех секциях СЭМД (author, providerOrganization, custodian) и в запросе на регистрацию

Ошибки проверки пациента (ГИП)

NO_SNILS

  • Текст ошибки: СНИЛС пациента в составе сведений о пациенте обязателен для данного вида документов
  • Причина: СНИЛС пациента не передан, хотя для данного вида документа он обязателен
  • Что делать: добавить СНИЛС пациента в запрос. Исключения - когда СНИЛС не требуется: возраст пациента ниже установленного порога для данного вида документа; пациент является иностранным гражданином и в запросе указан ДУЛ иностранного гражданина (справочник OID 1.2.643.5.1.13.2.1.1.498)

PATIENT_MPI_MISMATCH

  • Текст ошибки: Указанное значение [ФИО / СНИЛС / дата рождения / ДУЛ пациента] не соответствует данным ГИП. Пациент найден по локальному идентификатору
  • Причина: данные пациента в МИС расходятся с ранее зарегистрированными данными в ГИП
  • Что делать: сверить данные пациента в МИС с данными ГИП. Для исправления данных в ГИП необходимо подать заявку - процесс одобряется Минздравом и занимает время. Обратиться к менеджеру МедФлекс

PATIENT_CREATION_ERROR

  • Текст ошибки: Внутренняя ошибка ГИП при создании пациента
  • Причина: ошибка на стороне федерального ГИП
  • Что делать: обратиться к менеджеру МедФлекса

Ошибки валидации файла СЭМД по XSD-схеме

XML_VALIDATION_ERROR - нарушение структуры

  • Текст ошибки: Invalid content was found starting with element / cvc-complex-type.2.4.a: Invalid content was found...
  • Причина: структура СЭМД не соответствует XSD-схеме: нарушен порядок или состав элементов. XSD чувствительна к порядку элементов
  • Что делать: сверить структуру документа с XSD-схемой из Руководства по реализации СЭМД. Исправить сопутствующие ошибки схематрона - они обычно дают более понятное описание той же проблемы. Если есть только ошибки XSD без ошибок схематрона - обратиться к менеджеру МедФлекса

XML_VALIDATION_ERROR - пустое обязательное значение

  • Текст ошибки: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type 'st'
  • Причина: передан пустой обязательный атрибут - например, @extension, @code или @root
  • Что делать: найти пустой элемент по xpath из сообщения об ошибке. Заполнить значением или добавить @nullFlavor - если элемент в Руководстве помечен как ДОЛЖЕН, а не ОБЯЗАН

Ошибки валидации файла СЭМД по схематрону (Schematron)

Validation_Error - справочник недопустим для данного вида документа

  • Текст ошибки: Для документа вида [X] недопустимо использование справочника [OID]
  • Причина: в данном элементе СЭМД использован OID справочника, не предусмотренный для этого вида документа схематроном
  • Что делать: открыть Руководство по реализации СЭМД для данного вида документа на portal.egisz.rosminzdrav.ru, найти допустимый OID справочника для проблемного элемента и заменить его

Validation_Error - справочник отсутствует или версия неверна

  • Текст ошибки: Справочник OID [...]. Справочник с указанным кодом отсутствует / Версия [...] отсутствует для данного справочника
  • Причина: указан несуществующий OID справочника или неверная версия
  • Что делать: проверить перечень допустимых справочников и их версий в Руководстве по реализации СЭМД. Если версия в @codeSystemVersion не указана - РЭМД использует последнюю

Validation_Error - элемент с кодом отсутствует в справочнике

  • Текст ошибки: Справочник OID [...], версия [...]. Элемент с кодом [...] отсутствует
  • Причина: передан код, которого нет в указанном справочнике - возможно, устаревший код или перепутан справочник
  • Что делать: проверить наличие кода в справочнике на nsi.rosminzdrav.ru. Проверить, не устарел ли код и правильный ли справочник указан в @codeSystem

Validation_Error - nullFlavor

  • Текст ошибки: Элемент X обязан/должен содержать атрибут @nullFlavor / элемент с @nullFlavor не должен содержать дочерние элементы
  • Причина: нарушены правила указания отсутствия информации
  • Что делать: ДОЛЖЕН - при отсутствии данных использовать @nullFlavor, дочерние элементы не включать. ОБЯЗАН - @nullFlavor недопустим, данные обязательны. МОЖЕТ - элемент можно не включать вовсе

Validation_Error - адрес (//addr)

  • Текст ошибки: Элемент fias:Address / fias:HOUSEGUID / postalCode
  • Причина: некорректное заполнение блока адреса
  • Что делать: при отсутствии адреса по ФИАС использовать @nullFlavor в элементе fias:Address - дочерние элементы при этом не заполнять. Допускается @nullFlavor в корневом addr - тогда вся вложенная структура не валидируется и не должна заполняться

Validation_Error - телефон (//telecom)

  • Текст ошибки: Все элементы //telecom со схемой "tel:" должны соответствовать регулярному выражению tel:+?[-0-9().]+
  • Причина: некорректный формат номера телефона
  • Что делать: использовать формат tel:+7(999)999-99-99 для физических лиц и tel:8(888)888-88-88 для организаций. Если у организации несколько номеров - указывать основной

Validation_Error - секция связанных документов (LINKDOCS)

  • Текст ошибки: Ошибка в секции LINKDOCS / отсутствуют сведения о связанном документе
  • Причина: секция LINKDOCS присутствует в СЭМД, но не заполнена
  • Что делать: если связанный документ не нужен - не включать секцию LINKDOCS в СЭМД вовсе. Для всех опциональных элементов ([0..1] и [0..*]) проще не указывать элемент, чем включать пустым

Validation_Error - должность врача (@code)

  • Текст ошибки: Элемент ClinicalDocument/author/assignedAuthor/code должен иметь значение атрибута @codeSystem равное '1.2.643.5.1.13.13.11.1002' или '1.2.643.5.1.13.2.1.1.733'
  • Причина: должность врача не указана или указана из неверного справочника
  • Что делать: проверить, что должность МР заполнена в МИС и передаётся из справочника с верным OID

Ошибки кросс-валидации запроса и тела СЭМД

Расхождение вида документа

  • Текст ошибки: Вид документа в ЭМД [X] не соответствует OID документа в запросе на регистрацию сведений [Y]
  • Причина: в запросе на регистрацию и в теле CDA указаны разные виды документа
  • Что делать: синхронизировать значение /ClinicalDocument/code/@code с полем kind в запросе registerDocument

Расхождение даты создания

  • Текст ошибки: Дата создания документа в ЭМД [...] отличается от даты создания документа в запросе на регистрацию сведений [...]
  • Причина: /ClinicalDocument/effectiveTime/@value в CDA не совпадает с creationDate в запросе
  • Что делать: убедиться, что дата в теле СЭМД и дата в метаданных запроса формируются из одного источника и совпадают

МР из СЭМД не найден в запросе

  • Текст ошибки: Медицинский работник [...] из ЭМД не найден в запросе на регистрацию сведений
  • Причина: СНИЛС или localId МР в теле СЭМД не совпадает с данными в personalSignature в запросе
  • Что делать: убедиться, что все МР, указанные в CDA (author, legalAuthenticator), присутствуют в блоке personalSignature запроса registerDocument

Расхождение МО

  • Текст ошибки: МО из запроса на регистрацию сведений [...] не совпадает с providerOrganization в СЭМД [...] / не совпадает с МО в СЭМД в составе составного ключа [...]
  • Причина: OID МО в поле organization запроса отличается от OID в теле CDA
  • Что делать: синхронизировать OID МО в запросе и во всех упоминаниях МО в CDA (author/representedOrganization, recordTarget/providerOrganization, custodian/representedCustodianOrganization)

Расхождение контрольных сумм

  • Текст ошибки: GET_DOCUMENT_FILE_ERROR - заявленная и полученная контрольные суммы не совпадают
  • Причина: файл СЭМД изменился после формирования запроса, либо передан не тот файл
  • Что делать: убедиться, что файл СЭМД, подписи и запрос формируются из одного и того же бинарного содержимого. Не изменять файл после вычисления хэша

Общие рекомендации

Тестовая среда

Тестовая среда РЭМД получает обновления схематронов и XSD-схем раньше промышленной. Рекомендуется проводить регрессионное тестирование в тестовой среде после каждого обновления Руководств по реализации СЭМД.

Журналирование

Всегда сохраняйте полный текст ответа РЭМД, включая поле message. При обращении в поддержку прикладывайте:

  • XML-файл СЭМД
  • Полный ответ РЭМД с ошибкой
  • Дату и время запроса

Автоматическая переотправка в МедФлекс

МедФлекс автоматически переотправляет документы при следующих кодах ошибок:

  • RUNTIME_ERROR
  • INTERNAL_ERROR
  • DISABLED_RMIS
  • MIS_NOT_AVAILABLE

Для всех остальных ошибок необходимо устранить причину перед повторной отправкой.

Правила nullFlavor

МОЖЕТ - элемент полностью опциональный, можно не включать в документ вовсе

ДОЛЖЕН - элемент обязателен, но данные опциональны: при отсутствии данных использовать @nullFlavor, дочерние элементы не включать

ОБЯЗАН - элемент и данные обязательны, @nullFlavor недопустим