Оглавление 
Ошибки логики запроса на регистрацию
Ошибки проверки медработника (ФРМР)
Ошибки проверки организации (ФРМО)
Ошибки проверки пациента (ГИП)
Ошибки валидации файла СЭМД по 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 недопустим