Знакомая на практике ситуация, когда конфигурацию так "замучали", что она уже не поддается обновлению((...А по приказу Минздрава необходимо отправлять медицинские документы (СЭМД) в РЭМД (ЕГИСЗ). Да, в ручном режиме, конечно, можно через промед набивать, но если есть существующая база данных с необходимыми значениями (1С:Медицина.Больница версии 1.1.3.1/1.1.4.2), то хорошо бы автоматизировать весь процесс работы с РЭМД.
"Мы сами могем":
Было принято решение: создать шлюз-обмен необходимыми данными из старой реальной 1С:Медицина.Больница версии 1.1.4.2 (далее "Боль1") в новую 1С:Медицина.Больница версии 2.0.12.16 (далее "Боль2"), а уже из нее прямым соединением с Тестовой/Промышленной средой ЕГИСЗ -> отправлять СЭМД в РЭМД.
====================================================================
Веб.сервис обмена у меня поднят на IIS, можно и Апач, здесь главное в файл web.config прописать максимальный объем загрузки данных:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="1C Web-service Extension" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\1cv8\8.3.20.1789\bin\wsisapi.dll" resourceType="Unspecified" requireAccess="None" />
</handlers>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="3000000000" />
</requestFiltering>
</security>
</system.webServer>
<location path="web.config">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="3000000000" />
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
Мой веб.сервис располагается в Источнике данных -> Боль1, а обработка, выполняющая загрузку необходимых данных в Боль2.
====================================================================
По правилам форума - нельзя выкладывать cf-ки конфигураций, поэтому организовано все в расширениях. В файле загрузки вы найдете два расширения: одно для Боль1 (веб.сервис с ПланомОбмена) и второе для Боль2 (обработка выгрузки с ПланомОбмена, общ.модуль для запуска регламентного задания + ссылка на него в заимствованном типовом регламентном задании "ЗагрузкаКурсовВалют", и мою обработку ШМД-протокол Консультаций ред.3). С расширениями возникает сразу несколько ньюансов:
1) механизм расширений начал свою деятельность с версии платформы 8.3.11, а в старой Боль1 в конфигураторе стоит совместимость с платформой 8.2.16. Поэтому в данном случае без вариантов придется конфигурацию Боль1 (если она еще ранее не снята))) снять с полной поддержки, чтобы выставить совместимость, например, с версией 8.3.15
2) добавляя мои расширения в конфигураторы - устанавливайте "Дополнение", чтобы избежать коллизий с вашими доработками-расширениями "Адаптаций". Кроме того, отключите галки "Безопасный" и "Защита" , иначе веб.сервис не сможет отработать:
3) в расширении нельзя на данный момент (возможно, разработчики в будущем сделают) добавлять свое регламентное задание....поэтому в расширении для Боль2 пришлось выкрутиться как предложили здесь "Заимствование типового регламентного задания в расширение"
4) Публикация веб.сервиса в Боль1 из расширения - то еще развлечение... Подробно описано здесь "https://xn----1-bedvffifm4g.xn--p1ai/news/2018-12-03-how-to-create-web-services-using-extensions/"
!Внимание! в обеих базах обязательно создайте одного и того же Пользователя (для начала-можно с полными правами, у меня по ролям), от имени которого будет происходить веб.обмен!
====================================================================
Сам веб.сервис организован без собственного XDTO, используется механизм Сериализовать/Десериализовать, который использует типовой встроенный в платформу пакетhttp://www.w3.org/2001/XMLSchema.
Конечно, из-за этого есть некоторые нюансы с передачей НЕСУЩЕСТВУЮЩИХ объектов в другой базе, но пришлось выкрутиться где типом "Строка", а где типом "ТаблицаЗначений". По крайней мере, мы создаем обмен между 1с.Больница=1с.Больница, просто разных версий, поэтому именно данный вариант веб.сервиса без своего XDTO просто идеален!
====================================================================
Гуру 1С, прошу меня не забрасывать тапками за мою простую идею загрузки ОЧЕНЬ больших файлов)))) Конечно, на Инфостарте есть образцы искусства загрузки частичными потоками, например, Передача больших пакетов через веб-сервисы , но мне нужно было быстро и просто)) Поэтому очень тяжелые по объему справочники/документы я на форме обработки подписываю: "Внимание, большой объем файлов!":
Как грузить по частям обозначенные объекты -инструкция на форме есть, озвучиваю: если видим на форме обработки признак, что это возможен большой файл, то сначала ставим обе галки загрузки этого справочника, потом ставим галку вверху обработки "Проверить сколько элементов к выгрузке" , жмем кнопку "Сформировать" -> видим итоговое количество, далее ставим галку на частичную загрузку и вписываем первую партию элементов, например с 1 по 100000, жмем сформировать -> в течение какого-то времени эта партия загрузится, далее указываем следующую партию: с 100001 по 200000 -> сформировать. И так до тех пор, пока не зайдет весь необходимый объем данных.
п.с. в каждой ситуации по разному, поэтому вы будите отталкиваться от самого веб.сервиса: какое количество он готов поглотить, а какое уже нужно уменьшать объем частичной загрузки.
====================================================================
В самом веб.сервисе приходилось выкручиваться: как передать Перечисления, Предопределенные и др.
====================================================================
Что означают две галки в обработке загрузки на форме: "Загружать" и "ПолнаяЗагрузка"?
Для полной загрузки - жать нужно обе галки, а для загрузки ТОЛЬКО новых и измененных объектов, которые собирает у нас ПланОбмена - жать нужно только "Загружать".
Кстати, регламентное задание, которое настроено в Боль2 - загружает именно только новые объекты или измененные. С использование регламентного задания: Боль2 будет всегда с актуальными данными.
====================================================================
!Внимание: регламентным заданием мы НЕ грузим сам медицинский документ! Его загружать только через обработку, проверив фильтры в веб.сервисе - устраивают ли они вас, т.к. там нужно указать в фильтре Код вашего ШМД из Боль1, и мы отталкиваемся, что услуги-номенклатура, которая отмечена флагом перечисления - не должны такие медицинские документы заходить по шлюзу в нашу Боль2, а у вас может быть иначе.
====================================================================
!Внимание: в расширении для Боль2 есть моя обработка "моеШМД_Протокол Консультации ред.3", после подключения расширения в Боль2 -> в пользовательском режиме установите включено константу "Использовать обработки ШМД-конфигураций", далее в справочнике "Шаблоны медицинских документов" -> подтяните обработку "моеШМД", а Код обработки ШМД укажите в конфигураторе Боль2- в расширении - в обработке Шлюз - в процедуре Загрузка медДоков.
====================================================================
ШМД....да, здесь не все просто)....
В Тестовой среде РЭМДа вы можете отправлять типовой ШМД "Протокол консультаций ред.3", причем он сделан в "форме редактора ШМД".
А вот, чтобы в Промышленной среде отправлять свои реальные медицинские документы (СЭМДы), которые у нас выгружаются из Боль1 - здесь придется пользоваться лучше самостоятельно созданным ШМД.
Мой ШМД был создан по справке ИТС Обработки ШМД с макетом
п.с. *в моем случае в Боль1 ТелоМедицинского документа так же дублировалось в реквизит "Заключение" в строковый тип, поэтому мне просто было на стороне Боль2 поймать данный текст и уже именно в Боль2 создавать по НУЖНОМУ ШМД (это моя обработка "моеШМД") тело документа в формате xml.
Да......формирование при загрузке медицинского документа его xml-Тела это еще то веселье)))
Используются механизмы управляемых форм, контроль-захват окон, короче, интересно!
===================================================================
!Внимание: когда вы загрузили обработкой "Шлюз" все необходимые справочники/документы и уже готовы к загрузке самого медицинского документа, то сначала в пользовательском режиме Боль2 проведите необходимые настройки: АРМ врача (в Пользователя врача добавьте сотрудника), в справочники Сотрудники/ФизЛица/СтруктураПредприятия добавьте СНИЛС и OID из вашего сайта ФРМО/ФРМР, иначе не сможет корректно сформироваться ШМД.
Не забываем, что в справочнике "Организация" в Боль2- нужно также указать OID из ФРМО, а также основную ЭЦП МО (медицинской организации). Эта ЭЦП МО указывается еще в м.Администрирование-Федеральные веб.сервисы-РЭМД
п.с. настоятельно рекомендую: для начала ставьте в веб.сервисе в фильтре загрузки 1шт. мед.документа, и отработайте на нем все, пока автоматически не сформируется тело медицинского документа по ШМД.
***************************************************************************************
Итак, в Боль2 у нас есть уже загруженные медицинские документы, у которых при загрузке сформировалось Тело документа по шаблону моегоШМД (Протокол Консультации ред.3), теперь начинается самое интересное))))))))))))))))))))))))))))
Добро пожаловать в РЭМД: "я, шоколадный заяц, я ласковый мерзавец, я сладкий на все 100, о,о,о")
Для прямого обмена вашей МИС (медицинской информационной системой) с сервисом РЭМД (ЕГИСЗ) вам сначала нужно подать пачку заявлений в РЭМД для подключения к тестовой среде РЭМД.
Скачать инструкции по подключению можно на официальном сайте ЕГИСЗ: Портал оперативного взаимодействия с ЕГИСЗ
Также зарегистрироваться в Тех. поддержка ЕГИСЗ <egisz@stp-egisz.ru> на портале Портал тех.поддержки ЕГИСЗ
Конечно, в телеграмме ищите канал "1с Медицина".
===================================================================
Когда вам придут идентификаторы от Тестовой среды РЭМД, вам нужно будет в Боль2 опубликовать http-сервис, который уже есть типовой конфигурации 1с.Больница 2версии:
!!!Внимание! У вас должен быть белый IP
Далее в Боль2 в м.Администрировае-ФедеральныеВебСервисы-РЭМД вносите полученные идентификаторы для Тестовой/Промышленной среды (они разные!), а так же адрес вашего опубликованного http-сервиса ФедеральныеРегистры с методом EmdrCallback - прием ответов от сервиса РЭМД.
п.с. другие методы данного http-сервиса ФедеральныеРегистры вам пригодятся, когда будите подключать следующие сервисы, например, Вызов врача на дом, Регистратура и др.
Как настроить папку на сервере, чтобы в нее складывались СЭМДы к отправке хорошо показано здесь на ютубе
!Внимание: для Тестовой среды РЭМД - обязательно установите галку "Режим отладки", для Промышленной среды - эту галку обязательно снять!!!
===================================================================
После успешного прохождения заданий в Тестовой среде РЭМД, подаете пачку заявлений в Промышленную среду РЭМДа и проходите все заново, поэтому фиксируйте логи успешных тестов в тестовой среде - они вам пригодятся в промышленной.
===================================================================
Собственно можно уже начать отправлять в РЭМД наш загруженный в Боль2 СЭМД. Для этого в ручную пока стартаните регламентное задание "Отправка заявок на регистрацию документов в РЭМД". Прилетит ошибка 405, так как для того, чтобы сервис РЭМД вам прислал в МИС ответ - ему нужен доступ к вашей МИС! Для этого в Боль2 создайте пользователя "ФедСервис", дайте ему роль "ФедРегистры", а так же в опубликованном файле http-сервиса default.vrd допишите этого пользователя:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/hospital_2v"
ib="Srvr="ВашСервер1с";Ref="hospital_2v";usr="ВашПользователь";Pwd="ЕгоПароль";"
allowexecutescheduledjobs="">
<ws pointEnableCommon="true">
Все, далее идет работа: прием/передача с РЭМДом сначала в тестовой среде, потом в промышленной, и нервы с их тех.поддержкой))) Так как для Тестовой среды - нужно самостоятельно вбить в тестовый ФРМО/ФРМО вбить врача, должность, отделение, и чтоб с организацией там путаницы не было...и много чего, не соскучитесь))))))))))))))))))))))))))))))))))
п.с. в Журнале регистрации смотрите логи отправки/получения запросов http-сервиса, если что, то именно их попросит СТП (тех.поддержка ЕГИСЗ)
п.с. в предложенных инструкциях РЭМДа они желают, чтобы в Тестовой среде проходил эксперимент со сложным СЭМДом...но дают разрешение на самый простой СЭМД - "Протокол консультаций ред.3"
п.с.!Важно: в Промышленной среде РЭМДа стоит на их стороне проверка СЭМДа по Схематрону. Поэтому смотрите всегда типовой ШМД - что (какие реквизиты) разработчики 1с предлагают к обязательному заполнению. У нас оказалось, что не заполнили в ШМД МестаОказанияМедицинскойПомощи....а СТП с такими ошибками направляют в РС ФГБУ «ЦНИИОИЗ» Минздрава России по адресу semd@nsiminzdrav.ru
....а искать придется пустые OIDы самостоятельно - глазками перебирая сформированный СЭМД.
===================================================================
!!!Важно! Чтобы ЭЦП МО подписывала корректно - нужно в Боль2 в константе "Проверять электронные подписи на сервере"!!! А после включения этой галки - вам придется ЭЦП МО воткнуть в реальный физический сервер................
п.с. Кто найдет решение для виртуального сервера - поделитесь.
===================================================================
Итак, все хорошо, все получилось: РЭМД принял СЭМД!
Теперь у нас задача писать следующий ШМД для следующих типов СЭМДов, например профосмотр, операция и др.
А вам успешного прохождения всех кругов РЭМДа!!!!!
===================================================================
Полезные справки, которые помогли в работе:
//1с.Медицина.Регион.РуководствоПользователя
https://its.1c.ru/db/medreg#content:4:hdoc:issogl1_%D1%84%D1%80%D0%BC%D0%BE_%D1%84%D1%80%D0%BC%D1%80
//1с.Медицина.Больница.РуководствоПользователя
https://kb.1cmr.ru/pages/viewpage.action?pageId=15368273
//1с.Медицина.Больница.Документация для специалистов
https://kb.1cmr.ru/pages/viewpage.action?pageId=16713606
//1с.Медицина.Поликлиника ред.3. РуководствоПользователя
//1с.Медицина.Больница ред.2. РуководствоПользователя
https://its.1c.ru/db/instrhosp20/content/766/hdoc
//1.Медицина.Подсистема «Электронные медицинские карты» - инструкция по ШМД
===================================================================
*Веб.сервис без XDTO, как конструкция, использованная в данном проекте, - будет интересен не только "одиноким безумцам 1с, связавшимся с медициной", но и всем желающим разработчикам/программистам 1с, поэтому в основную загрузку с расширением добавлю текстовый файл, в котором будет код модуля веб.сервиса без XDTO.
===================================================================
п.с. специально оставила свои пометки в коде, вдруг вам не нужна будет загрузка-обменка, а просто пожелаете управляемыми формами запускать ШМД или другое. Так что это не "помарочное" написание кода, а заметки для себя и других, так сказать зарисовки для творчества)
===================================================================
В 1.загрузке: два расширения, одно для Боль1, второе для Боль2.
Во 2.загрузке отдельно моя обработка "МоеШМД" для СЭМДа "Протокол консультаций ред.3" + примеры-шаблоны ШМД из типовой Боль2 для разработки своих ШМД.
===================================================================
Добавила обработку массового удаления медицинских документов. !интерактивно удаляет-сразу, поэтому проверьте на черновике. Использование на свой страх и риск.
Обычное удаление мед.доков - требует пройтись по регистрам и другим связанным документам, в данной обработке подтягиваю всю связку и удаляю, после чего удаляю мед.док.
===================================================================
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.174