© Группа компаний ХОСТ, www.hostco.ru, 2015-2017
Логика отправки ЭМД с описанием методов и процесса взаимодействия сервисов:
1. МИС формирует запрос методом POST/documents запрос в рег.РЭМД в сервис:
a. emds-soap-service – soap формат запроса; b. emds-service – rest формат запроса;
2. Сервис emds-service выполняет обработку запроса POST /documents/
a. Запрос был успешно обработан: - Метаданные из запроса записываются в emds.med_docs; - Документ и подписи к нему помещаются в хранилище (в формате base64); - В МИС отправляется синхронный ответ о том, что запрос принят. b. В процессе обработки запроса была найдена ошибка: - В МИС отправляется синхронный ответ с ошибкой; - В таблице med_docs_reg_flk появляется запись с ошибочным запросом;
3. Сервис emds-service ставит в очередь документ на отправку во ФРЭМД (localUid документа и дата его создания заполняются в таблице emds.emdfr_send_task);
4. Сервис emds-outbound-scheduler согласно определенному в настройках расписанию проверяет наличие ЭМД, подлежащих выгрузке в федеральный сервис по таблице emds.emdfr_send_task с условием is_done ≠ ‘true’;
5. Сервис emds-outbound-scheduler формирует запрос методом POST/documents к сервису взаимодействия с ФРЭМД – emdr;
a. Если отправка прошла успешно, в таблице emds.emdfr_send_task в поле is_done проставляется значение ‘true’; b. Если отправка прошла успешно, в таблице emds. doc_upload_status в поле status проставляется значение ‘1’;
6. Сервис emdr получает запрос от emds-outbound-scheduler и осуществляет следующие действия:
a. Формирует запрос RegisterDocumentRequest в формате xml; b. Осуществляет валидацию запроса согласно xsd схеме; c. Осуществляет подписание запроса; d. Отправляет сформированный запрос в ФРЭМД по протоколу soap; e. Заполняет поля local_uid, message_id и sent_datetime в таблице emdrxchg.register_document.
7. Сервис emdr получает синхронный ответ от ФРЭМД о том, что запрос методом RegisterDocumentRequest был получен;
8. Заполняются поля header_message_id в таблице emdrxchg.register_document (если в синхронном ответе был статус success и идентификатор документа присвоенный в ФРЭМД);
9. Получение асинхронного ответа от ФРЭМД методом SendRegisterDocumentResult;
10. Заполнение таблицы emds.med_docs поля emdr_metadata результатами обработки документа в ФРЭМД (так же заполняются поля emdrId и doc_version если документ был успешно зарегистрирован);