Интеграция с сервером Честного Знака - транспортный уровень

Игорь18 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
27.06.2020

С 01.07.2020 в РФ вводится обязательная маркировка лекарств. Занимется этим https://честныйзнак.рф/ (далее ЧЗ). 

Нужно для клиники сделать виндовую службу, которая обеспечит обмен данными между расположенным в интернете сервером ЧЗ, и расположенным в локальной сети MS SQL Server.

.

Т.е. служба работает, раз в Х секунд проверяет наличие новых документов в определенных таблицах в SQL Server. Если я в SQL Server добавил в заданную таблицу xml документ, например "Накладная приема лекарств", то служба должна передать его на сервер ЧЗ. 

Раз в Y минут служба проверяет наличие новых документов на сервере ЧЗ, и при наличии, загружает их, и кладет в SQL Server.

При появлении в таблице в SQL Server новой записи "получить справочник Х", служба получает из ЧЗ справочник Х.

Визуализация, обработка и формирование документов не нужна, нужен транспортный уровень. Т.е. авторизация, ЭЦП, получение данных, отправка данных, постраничное получение, интервалы между запросами, логирование, устойчивость к ошибкам, обработка ошибок. 

.

Язык разработки MS C#. В качестве базы данных используется MS SQL Server 2008R2 Express. 

.

Требуемые навыки, и используемые инструменты:

• Бесплатная редакция MS C# (нужно будет поднять и настроить на предоставленном компе)

• MS SQL Server 2008 R2 Express (добавление объектов в существующую базу)

• Клиентская часть REST API сервисов, HTTP, HTTPS, SSL (RSA и ГОСТ), УКЭП aka ЭЦП

• Для организации доступа, желателен постоянный внешний ip

.

Работа сдается в виде исходных кодов. У Вас будет удаленный доступ к двум компьютерам. На компьютере #1 (билд сервер) производится компиляция службы, после чего служба ставится на компьютер #2, и там поверяется ее работа. 

.

ЧЗ предоставляет открытый тестовый стенд, и два варианта доступа к системе: рабочий, и "песочницу". Для "песочницы", и доступа к рабочему серверу ЧЗ нужна постоянная (не тестовая) УКЭП, УКЭП точно будет на компьютере #2, под вопросом - на компьютере #1 (это важно?). 

.

Собственником кода является Заказчик.

Инструменты общения во время разработки - телеграмм и скайп.

Требуется аккуратное оформление кода, наличие комментариев, при необходимости - пояснения что и как в коде работает.

Правила оформления кода - будут предоставлены отдельным документом, если в этом будет необходимость.

Потребуются пояснения и, возможно, демонстрация, по настройке сертификатов, ЭЦП, и прочей обвязки, нужной для работы службы.

По времени, я предполагаю, на работу нужно около недели рабочего времени. Это моя оценка объема работ, а не требование по срокам.

Оплата в рублях. Предпочтительно ЯД, или Сбер, но можно обсудить. Безопасная сделка не используется.

Стоимость я предполагаю около 30 тыс, зависит от предложений. Предполагаю, что могу ошибаться как в меньшую, так и в большую сторону.

Оплата после завершения работ, возможно разбиение на этапы. 

.

Насколько я понимаю описание https://честныйзнак.рф/upload/iblock/200/IS-_Markirovka_.-MDLP.-Protokol-obmena-interfeysnogo-urovnya.pdf, логика ЧЗ такая, что во всех многообразных функциях и обращениях к серверу ЧЗ, все значимые данные компонуются в json/xml, и передаются как одно целое. Это означает, что мы можем вынести формирование xml / json / get строки за пределы разрабатываемой службы. То есть Вам, как разработчику, не надо будет отдельно программировать каждый из упомянутых в "Протоколе обмена" методов. Допустим, есть метод 7.5.1. "Получение объекта ФИАС по идентификатору адресного объекта". Служба берет из MS Sql: Адресную строку "Endpoint: GET //reestr/fias/addrobj/{addrobj}", тип метода get/post, json со всеми параметрами (подготовленный за пределами службы, в данном случае пустой). И посылает в ЧЗ, не зная, что это за метод, и не кодируя его параметры. Ответ тоже приходит в формате json, и разборку полученного json на отдельные параметры тоже выносим за пределы службы.

Отдельно стоят методы, в которых отсылаются xml документы, потому что надо преобразовать в base64, и это преобразование желательно возложить на службу.

в "Протоколе обмена..." говорится, что документы большого объема пересылаются через WebDAV. В этом же документе в п. "5.5. Получение информации об ограничении размера небольших документов" говорится, что сейчас большим считается документ размером более 1 Мб. Накладные, и т.п. документы в формате xml занимают в разы меньше места, чем 1 Мб. Соответственно, исходим из предположения, что WebDAV НЕ нужен.

Этапы:

1. Обсудить и согласовать список используемых компонентов, если таковые потребуются. Если нужны платные компоненты, об этом желательно сказать до начала работ.

2. Поднять на виртуальном сервере #1 MS студию для C#, при необходмиости - установить и настроить нужные компоненты. 

3. Подключение к серверам и авторизация.

4. "Простые" get запросы в ЧЗ без параметров. 

5. Методы, где нужно преобразовывать xml в base64. Логирование, отладка, устойчивость работы.

6. Тестовая работа, исправление найденных недостатков

7. Гарантийное сопровождение (обсудить срок)

.

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

Более детальное ТЗ, структура данных для sql, и т.п., будет формироваться в процессе работы.

.

Краткая инструкция по быстрому старту для изучения API, инструкция по подключению к тестовому стенду.

https://честныйзнак.рф/upload/iblock/25b/Kratkaya_instruktsiya_po_bystromu_startu_dlya_izucheniya_API.pdf

.

ИС "Маркировка". МДЛП. Протокол обмена интерфейсного уровня.

https://честныйзнак.рф/upload/iblock/200/IS-_Markirovka_.-MDLP.-Protokol-obmena-interfeysnogo-urovnya.pdf

.

Подборка документов от ЧЗ для разработчиков

https://честныйзнак.рф/business/projects/medicines/documents/for_developers/

Заявки фрилансеров