Шлюз-обмен между старой Больницей и новой. Выгрузка СЭМД для РЭМД

05.06.24

Интеграция - Перенос данных 1C

Обмен 1С=1С: веб-сервис без собственного XDTO. Старые версии 1С:Больницы: 1С:Медицина.Больница версии 1.1.3.1 или 1С:Медицина.Больница версии 1.1.4.2 1С Платформа для старой версии 1С:Больница 8.3.20.1789. Современные версии 1С:Больницы: 1С:Медицина.Больница версии 2.0.12.16 или 1С:Медицина.Больница версии 2.0.14.1. 1С Платформа для новой версии 1С:Больница 8.3.22.1923 (и выше).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
расширения_вебСервис_безXDTO-обработка_для Боль1и Боль2:
.rar 275,87Kb
0
0 Скачать (10 SM) Купить за 4 550 руб.
МоеШМД и ТиповыеПримерыШМД_для разработки:
.rar 1,38Mb
3
3 Скачать (1 SM) Купить за 1 850 руб.
Удалить массово медицинский документ
.epf 9,64Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Знакомая на практике ситуация, когда конфигурацию так "замучали", что она уже не поддается обновлению((...А по приказу Минздрава необходимо отправлять медицинские документы (СЭМД) в РЭМД (ЕГИСЗ). Да, в ручном режиме, конечно, можно через промед набивать, но если есть существующая база данных с необходимыми значениями (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=&quot;ВашСервер1с&quot;;Ref=&quot;hospital_2v&quot;;usr=&quot;ВашПользователь&quot;;Pwd=&quot;ЕгоПароль&quot;;"
		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. РуководствоПользователя

https://its.1c.ru/db/instrpoly3#content:1423:hdoc:issogl2_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%BC%D0%B5%D0%BD%D0%B0_%D1%81_%D1%84%D1%80%D0%BC%D0%BE_%D1%84%D1%80%D0%BC%D1%80

//1с.Медицина.Больница ред.2. РуководствоПользователя

https://its.1c.ru/db/instrhosp20/content/766/hdoc

//1.Медицина.Подсистема «Электронные медицинские карты» - инструкция по ШМД

https://its.1c.ru/db/medmethod#content:224:hdoc:issogl2_%D0%BC%D0%B0%D0%BA%D0%B5%D1%82_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0  

===================================================================

*Веб.сервис без XDTO, как конструкция, использованная в данном проекте, - будет интересен не только "одиноким безумцам 1с, связавшимся с медициной", но и всем желающим разработчикам/программистам 1с, поэтому в основную загрузку с расширением добавлю текстовый файл, в котором будет код модуля веб.сервиса без XDTO.

===================================================================

п.с. специально оставила свои пометки в коде, вдруг вам не нужна будет загрузка-обменка, а просто пожелаете управляемыми формами запускать ШМД или другое. Так что это не "помарочное" написание кода, а заметки для себя и других, так сказать зарисовки для творчества)

===================================================================

В 1.загрузке: два расширения, одно для Боль1, второе для Боль2.

Во 2.загрузке отдельно моя обработка "МоеШМД" для СЭМДа "Протокол консультаций ред.3" + примеры-шаблоны ШМД из типовой Боль2 для разработки своих ШМД.

===================================================================

Добавила обработку массового удаления медицинских документов. !интерактивно удаляет-сразу, поэтому проверьте на черновике. Использование на свой страх и риск.

Обычное удаление мед.доков - требует пройтись по регистрам и другим связанным документам, в данной обработке подтягиваю всю связку и удаляю, после чего удаляю мед.док.

===================================================================

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.174

веб.сервис без XDTO сериализация 1с медицина 1с Больница 1с Поликлиника обмен между конфигурациями обновление нетиповой конфигурации программирование 1с 1с специалист РЭМД ЕГИСЗ СЭМД Федеральные веб сервисы ШМД web.config default.vrd сервер 1с клиент-серверный xml управляемые формы

См. также

SALE! 20%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141463    798    297    

419

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    166425    332    277    

373

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    23985    169    51    

127

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    51179    228    69    

185

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36568    94    66    

89

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171154    303    257    

378

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186854    589    509    

526

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    80631    312    250    

264
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. jan-pechka 426 11.04.24 13:18 Сейчас в теме
Обнаружилась ошибка: когда переносила свою обработку "моеШМД" в расширение, то в параметрах формы: Параметр с типом "справочник ШаблоныМедицинскихДокументов" -> превратился в тип строка...Обязательно нужно этот параметр вернуть в тип "справочник ШаблоныМедицинскихДокументов"
Прикрепленные файлы:
2. rolin555 52 02.05.24 15:42 Сейчас в теме
без 1С Медицина реально в своей самописке для стоматологий запустить обмен?
3. jan-pechka 426 03.05.24 08:14 Сейчас в теме
(2)Конечно. Только в этом случае вам мало пригодится конструкция веб.сервиса без XDTO, т.к. в вашей самописке и принимающей типовой конфе - будут сильно отличаться структуры объектов....Проще тогда написать на XDTO.
4. jan-pechka 426 17.05.24 08:02 Сейчас в теме
Важно: при обновлении 1с.Медицина 2.0 до версии 2.0.14.1 перестали приниматься СЭМДы в промышленной среде РЭМДа, Текст ошибки из асинхронного ответа:
Ошибка = 'Отсутствует информация о подразделении организации', Код = 'NO_DEPARTMENT'

При формировании пакета (ФедеральныеВебСервисы.Запрос.Исходящий.registerDocumentRequest) -начала исчезать запись о Подразделении, в котором работает врач-Исполнитель (спр.Сотрудники - Подразделение OID Минздрава заполнен в соответствии с ФРМО). Сам пакет формируется непосредственно при запуске регламентированного задания "Отправка заявок на регистрацию в РЭМД". xml-пакет можно увидеть в Журнале регистраций.

Проблема оказалась, что в обновлениях 1с-разработчики решили на этот раз брать не просто подразделение сотрудника(врача), но идти от этого подразделения врача в справочнике Структура предприятий - по иерархической матрешки до самого верха:
например: подразделение врача "Терапевтическое отделение", его родитель "Амбулаторно-диагностическое", а родитель Амбулаторного - непостредственно сама организация, которую в справочнике "Структура предприятия" - никто OIDами не заполняет......Да и если заполнить этот OID, то пакет будет все равно некорректный, т.к. будет тэг <organization> с проставленным OID организации, который берется из справочника "Организации", и в следующем тэге <department> OID вновь организации....все же правильно будет указывать OID именно подразделения, в котором работает врач и эта информация есть в ФРМО....
Отсюда, нужно просто заремарить типовой код, пришедший с обновлением в модуле менеджера документа МедицинскийДокумент в функции ПолучитьСвойстваДокументаДляРЭМД (я в расширении это сделала):

&Вместо("ПолучитьСвойстваДокументаДляРЭМД")
Функция Шлюз_ПолучитьСвойстваДокументаДляРЭМД(ДокументСсылка, ТребуемыеРеквизиты = Неопределено) Экспорт
	Если НЕ ЗначениеЗаполнено(ТребуемыеРеквизиты) Тогда 
		ТребуемыеРеквизиты = 
			"Пациент,МедицинскаяКарта,Дата,ДатаПодписи,Автор,Подписант,Организация,Подразделение,КодТипаДокументаРЭМД,Описание,ТипДокументаВИМИС,
			|СписокСотрудниковОбязанныхПодписать,СтруктурированныеДанныеДокумента"
		;
	КонецЕсли;
	
	Если ТипЗнч(ДокументСсылка) = Тип("СправочникСсылка.Файлы") Тогда
		// Ссылка на тело МД.
		МДСсылка_ = НайтиМДПоCDAДокументу(ДокументСсылка);
		Если Не ЗначениеЗаполнено(МДСсылка_) Тогда
			ВызватьИсключение стрШаблон("Не удалось найти документ МедицинскийДокумент по ссылке на cda файл: %1", ДокументСсылка);
		КонецЕсли;
		CDAСсылка_ = ДокументСсылка;
	Иначе
		МДСсылка_ = ДокументСсылка;
		CDAСсылка_ = Неопределено; // Возможно, тут стоит получить основной CDA.
	КонецЕсли;
	
	Результат_ = Новый Структура(ТребуемыеРеквизиты);
	
	СтруктураПолученияРеквизитов_ = Новый Структура();
	РеквизитыВыполненияМД_ = Неопределено;
	Если Результат_.Свойство("Пациент") Тогда
		СтруктураПолученияРеквизитов_.Вставить("Пациент");
	КонецЕсли;
	
	Если Результат_.Свойство("МедицинскаяКарта") Тогда
		СтруктураПолученияРеквизитов_.Вставить("МедицинскаяКарта");
	КонецЕсли;

	Если Результат_.Свойство("Описание") Тогда
		Если ЗначениеЗаполнено(CDAСсылка_) Тогда
			Запрос_ = Новый Запрос;
			Запрос_.Текст =
				"ВЫБРАТЬ
				|	СтатусыМедицинскихДокументов.ЗаголовокМД КАК ЗаголовокМД
				|ИЗ
				|	РегистрСведений.СтатусыМедицинскихДокументов КАК СтатусыМедицинскихДокументов
				|ГДЕ
				|	СтатусыМедицинскихДокументов.ТелоМедДокумента = &ТелоМедДокумента";
			Запрос_.УстановитьПараметр("ТелоМедДокумента", CDAСсылка_);
			Выборка_ = Запрос_.Выполнить().Выбрать();
			Если Выборка_.Следующий() Тогда
				Результат_.Описание = Выборка_.ЗаголовокМД;
			КонецЕсли;
		Иначе
			// Старое поведений для обратной совместимости.
			СтруктураПолученияРеквизитов_.Вставить("Описание", "Заголовок");
		КонецЕсли;
	КонецЕсли;

	Если Результат_.Свойство("Дата") Тогда
		Если Неопределено = РеквизитыВыполненияМД_ Тогда 
			РеквизитыВыполненияМД_ = ШаблоныМедицинскихДокументовПереопределяемый.ПолучитьРеквизитыВыполнения(МДСсылка_);
		КонецЕсли;
		Результат_.Дата = РеквизитыВыполненияМД_.ДатаВыполнения;
	КонецЕсли;
	
	Если Результат_.Свойство("ДатаПодписи") Тогда
		Если Неопределено = РеквизитыВыполненияМД_ Тогда 
			РеквизитыВыполненияМД_ = ШаблоныМедицинскихДокументовПереопределяемый.ПолучитьРеквизитыВыполнения(МДСсылка_);
		КонецЕсли;
		Результат_.ДатаПодписи = РеквизитыВыполненияМД_.ДатаВыполнения;
	КонецЕсли;
	
	Если Результат_.Свойство("Автор") Тогда 
		Если Неопределено = РеквизитыВыполненияМД_ Тогда 
			РеквизитыВыполненияМД_ = ШаблоныМедицинскихДокументовПереопределяемый.ПолучитьРеквизитыВыполнения(МДСсылка_);
		КонецЕсли;
		Результат_.Автор = РеквизитыВыполненияМД_.Исполнитель;
	КонецЕсли;

	Если Результат_.Свойство("Подписант") Тогда 
		Если Неопределено = РеквизитыВыполненияМД_ Тогда 
			РеквизитыВыполненияМД_ = ШаблоныМедицинскихДокументовПереопределяемый.ПолучитьРеквизитыВыполнения(МДСсылка_);
		КонецЕсли;
		Результат_.Подписант = РеквизитыВыполненияМД_.Исполнитель;
	КонецЕсли;

	Если Результат_.Свойство("СписокСотрудниковОбязанныхПодписать") Тогда 
		Результат_.СписокСотрудниковОбязанныхПодписать = ПолучитьСписокСотрудниковОбязанныхПодписатьМД(МДСсылка_);
	КонецЕсли;

	Если Результат_.Свойство("Подразделение") Тогда
		
	КонецЕсли;
	
	Если Результат_.Свойство("Организация") Тогда
		СтруктураПолученияРеквизитов_.Вставить("ПолученОтМО");
		СтруктураПолученияРеквизитов_.Вставить("Организация");
	КонецЕсли;

	Если Результат_.Свойство("Подразделение") Тогда
		СтруктураПолученияРеквизитов_.Вставить("Пациент");
		СтруктураПолученияРеквизитов_.Вставить("Дата");
		СтруктураПолученияРеквизитов_.Вставить("УсловияОказанияПомощи");
	КонецЕсли;

	Если ЗначениеЗаполнено(СтруктураПолученияРеквизитов_) Тогда 
		РеквизитыДокумента_ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(МДСсылка_, СтруктураПолученияРеквизитов_);
		ЗаполнитьЗначенияСвойств(Результат_, РеквизитыДокумента_);
	КонецЕсли;
	
	Если Результат_.Свойство("Организация") Тогда
		Результат_.Организация = ВыбратьЗаполненное(РеквизитыДокумента_.ПолученОтМО, РеквизитыДокумента_.Организация);
	КонецЕсли;

	Если Результат_.Свойство("КодТипаДокументаРЭМД") Тогда
		Результат_.КодТипаДокументаРЭМД = КодТипаДокументаРЭМД(МДСсылка_, CDAСсылка_);
	КонецЕсли;

	Если Результат_.Свойство("Подразделение") Тогда
		Если ОбщиеМеханизмыПовтИсп.ИспользоватьСтационарныеУсловия()
			И (РеквизитыДокумента_.УсловияОказанияПомощи = Перечисления.УсловияМедицинскойПомощи.Стационарная
				Или РеквизитыДокумента_.УсловияОказанияПомощи = Перечисления.УсловияМедицинскойПомощи.ДневнойСтационар)
		Тогда
			Результат_.Подразделение = ОбщегоНазначения.ОбщийМодуль("ОбщегоНазначенияСтационар").ПолучитьПоследнееОтделениеПациента(
				РеквизитыДокумента_.Пациент, 
				РеквизитыДокумента_.Дата
			);
			
			Если ЗначениеЗаполнено(Результат_.Подразделение) Тогда
				Результат_.Подразделение = Справочники.СтруктураПредприятия.ПолучитьПодразделениеПоОтделению(Результат_.Подразделение);
			КонецЕсли;
			
		Иначе
			// Возьмем подразделение исполнителя.
			Запрос_ = Новый Запрос(
				"ВЫБРАТЬ
				|	МедицинскийДокументИсполнители.Исполнитель.Подразделение КАК Подразделение
				|ИЗ
				|	Документ.МедицинскийДокумент.Исполнители КАК МедицинскийДокументИсполнители
				|ГДЕ
				|	МедицинскийДокументИсполнители.Ссылка = &Ссылка
				|	И МедицинскийДокументИсполнители.ОтветственныйЗаНазначение"
			);
			Запрос_.УстановитьПараметр("Ссылка", МДСсылка_);
			Выборка_ = Запрос_.Выполнить().Выбрать();
			Если Выборка_.Следующий() И ЗначениеЗаполнено(Выборка_.Подразделение) Тогда
				Результат_.Подразделение =  Выборка_.Подразделение;
				
				//_16.05.24-заремарила типовой код Обновляшек, т.к. НЕ нужно самое высшее подразделение-Организацию-нужно подразделение Исполнителя-врача
				//Если ЗначениеЗаполнено(Результат_.Подразделение) Тогда
				//	Результат_.Подразделение = Справочники.СтруктураПредприятия.ПолучитьПодразделениеПоОтделению(Результат_.Подразделение);
				//КонецЕсли;

			КонецЕсли;
		КонецЕсли;
	КонецЕсли;

	Если Результат_.Свойство("ТипДокументаВИМИС") Тогда
		Запрос_ = Новый Запрос(
			"ВЫБРАТЬ
			|	ТД.АтрибутCode КАК АтрибутCode,
			|	ТД.codeSystem КАК codeSystem,
			|	ТД.ТипДокументаВИМИС КАК ТипДокументаВИМИС
			|ПОМЕСТИТЬ втТипыДокументов
			|ИЗ
			|	&ТипыДокументов КАК ТД
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ ПЕРВЫЕ 1
			|	СтатусыМД.АтрибутCode КАК АтрибутCode,
			|	СтатусыМД.codeSystem КАК codeSystem,
			|	ТипыВИМИС.ТипДокументаВИМИС КАК ТипДокументаВИМИС
			|ИЗ
			|	РегистрСведений.СтатусыМедицинскихДокументов КАК СтатусыМД
			|		ЛЕВОЕ СОЕДИНЕНИЕ втТипыДокументов КАК ТипыВИМИС
			|		ПО (ТипыВИМИС.АтрибутCode = СтатусыМД.АтрибутCode)
			|			И (ТипыВИМИС.codeSystem = СтатусыМД.codeSystem)
			|ГДЕ
			|	(&НеОтборПоCDA
			|			ИЛИ СтатусыМД.ТелоМедДокумента = &CDAСсылка)
			|	И (&НеОтборПоМД
			|			ИЛИ СтатусыМД.МедицинскийДокумент = &МДСсылка)"
		);
		Запрос_.УстановитьПараметр("ТипыДокументов", Перечисления.ТипДокументаВИМИС.ТаблицаТиповСЭМДпоТипуВИМИС());
		Запрос_.УстановитьПараметр("НеОтборПоCDA", НЕ ЗначениеЗаполнено(CDAСсылка_));
		Запрос_.УстановитьПараметр("CDAСсылка", CDAСсылка_);
		Запрос_.УстановитьПараметр("НеОтборПоМД", НЕ ЗначениеЗаполнено(МДСсылка_));
		Запрос_.УстановитьПараметр("МДСсылка", МДСсылка_);

		Выборка_ = Запрос_.Выполнить().Выбрать();
		Если Выборка_.Следующий() Тогда
			Результат_.ТипДокументаВИМИС = Выборка_.ТипДокументаВИМИС;
			Если НЕ ЗначениеЗаполнено(Выборка_.АтрибутCode) ИЛИ НЕ ЗначениеЗаполнено(Выборка_.codeSystem) Тогда 
#Если НЕ ВнешнееСоединение Тогда
				ФедеральныеВебСервисыВИМИСТриггерныеТочки.ЗаписатьВЖурналРегистрации(
					СтрШаблон("Не удалось получить <code,codeSystem> для документа '%1', файл '%2'.", МДСсылка_, CDAСсылка_), 
					УровеньЖурналаРегистрации.Ошибка, 
					МДСсылка_
				);
#КонецЕсли
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Если Результат_.Свойство("СтруктурированныеДанныеДокумента") Тогда
		
		Если Результат_.Свойство("КодТипаДокументаРЭМД") Тогда
			КодТипаДокументаРЭМД_ = Результат_.КодТипаДокументаРЭМД;
		Иначе
			КодТипаДокументаРЭМД_ = КодТипаДокументаРЭМД(МДСсылка_, CDAСсылка_);
		КонецЕсли;
		
		Если КодТипаДокументаРЭМД_ = "5" Или КодТипаДокументаРЭМД_ = "6" Или КодТипаДокументаРЭМД_ = "7" Тогда
			// PDF документы.
			Автор_ = Неопределено;
			Результат_.Свойство("Автор", Автор_);
			
			Результат_.СтруктурированныеДанныеДокумента = СтруктурированныеДанныеДокумента(МДСсылка_, КодТипаДокументаРЭМД_, Автор_);
			
		КонецЕсли;
		
	КонецЕсли;

	
	Возврат Результат_;
КонецФункции

Показать
5. lenokv_07 24.07.24 13:56 Сейчас в теме
Добрый день. Помогите, пожалуйста, частные МО, кто работает с РЭМД. Куда вы ставите ВИПНЭТ ?
Пробуем на сервер, 1с не работат , хотя все порты открыли.
Поделитесь, пожалуйста, у кого как это все работат.
6. jan-pechka 426 06.08.24 12:37 Сейчас в теме
(5) для настройки прямого обмена -ViPNet не нужен, а как-только вы запросите сервисы, которые будут возвращать снилс/полисОМС или электронную мед карту(ЭМД) пациента с сайта ЕГИСЗ, - то здесь без него никак... (требование ЕГИСЗ). у нас на конкретном локальном компе стоит, там где врач может запросить данные с сервисов (не на сервере).
7. lenokv_07 07.08.24 08:17 Сейчас в теме
Спасибо.Будем ставить на локальный
8. user1675982 09.09.24 10:58 Сейчас в теме
Тоже нужно сделать обмен между текущей Поликлиникой и новой базой Поликлиника 3.0.15 для выгрузки в ЕГИСЗ. Можете помочь?
jan-pechka; +1 Ответить
Оставьте свое сообщение