Интеграция МИС с порталом Medihost.ru

Главная → Интеграция МИС с порталом Medihost.ru

Версия статьи в формате PDF

На портале Medihost.ru предусмотрены возможность импорта расписания клиники из МИС (медицинской информационной системы) и возможность экспорта заявок в МИС.

Протокол взаимодействия

Взаимодействие осуществляется по протоколу http, данные передаются в XML формате.

Экспорт

Сервис экспорта находится по адресу:

http://www.medihost.ru/services/export.php

Скрипту передаются параметры:

client_key - уникальный идентификатор клиники, выдается администратором портала

start - UNIXTIMESTAPM даты, с которой нужен экспорт

end - UNIXTIMESTAPM даты, по которую нужен экспорт (если не задано, то выдает все, начиная с даты start)

Скрипт экспортирует заявки на приём, записанные через портал Medihost.ru для последующего просмотра и подтверждения этих заявок в МИС.

Импорт

Сервис импорта находится по адресу:

http://www.medihost.ru/services/import.php

Скрипту передается методом POST поле xml, содержащее данные из МИС.

Скрипт импортирует ресурсы и группы ресурсов, расписания приёма, информацию о занятости ресурсов, а также изменения в заявках.

Формат и структура данных

Общая структура XML:

Тег

Назначение

<MediExchange>

Используется для передачи идентификатора клиники

            <ResourceGroups>

 

                        <rg />

Группы ресурсов. Экспортируются из МИС. При импорте заменяют ранее импортированные группы.

            </ResourceGroups>

 

            <Resources>

 

                        <r />

Ресурсы. Экспортируются из МИС. При импорте заменяют ранее импортированные ресурсы.

            </Resources>

 

            <Schedules>

 

                        <s><time_rules /></s>

Расписания ресурсов. Экспортируются из МИС. При импорте заменяют ранее импортированные расписания.

            </Schedules>

 

            <Appointments>

 

                        <a />

Информация о занятости ресурсов из МИС. Экспортируются из МИС. При импорте могут заменять или обновлять ранее импортированные записи.

            </Appointments>

 

            <Orders>

 

                        <o />

Заявки на прием портала Medihost.ru. Экспортируются с портала. Из МИС импортируются изменения (например, изменение статуса заявки – подтверждена/отклонена)

            </Orders>

 

</MediExchange>

 

Атрибуты тега MediExchange

ClientKey – уникальный идентификатор клиники, выдается администратором портала

Атрибуты тега ResourceGroupsrg

id – числовой идентификатор группы

name - наименование группы

pos - порядок группы (для упорядочивания при отображении)

Атрибуты тега Resourcesr

id – числовой идентификатор ресурса

group_id – id группы

name – название ресурса

time_step - шаг расписания в минутах

pos - порядок ресурса

Атрибуты тега Scheduless

id – числовой идентификатор

date – дата (в формате ДД.ММ.ГГГГ)

resource_id – id ресурса

Атрибуты тега Schedulesstime_rules

w_start - время начала работы (в формате ЧЧ:ММ)

w_end - время окончания работы (в формате ЧЧ:ММ)

b_start - время начала перерыва (в формате ЧЧ:ММ)

b_end - время окончания перерыва (в формате ЧЧ:ММ)

Если нет перерыва, атрибуты b_startTime и b_endTime не заполняются.

Атрибуты тега Appointments

SyncMode – режим синхронизации: full - полная синхронизация (ранее импортированные записи удаляются перед синхронизацией); diff – только обновление и добавление записей (ключом являются поля tablename и id)

Атрибуты тега Appointmentsa

tablename – название таблицы в МИС

id – числовой идентификатор

resource_id – id ресурса

ReceptionDateTime - дата и время приёма (в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС)

Duration - длительность приёма в минутах

Title – отображаемый текст в ячейке расписания (например «Иванов И.И. – первичный прием», или «Совещание»)

Атрибуты тега Orderso

id – идентификатор заявки

status - статус заявки (0 - поступила, 1 - принята, 3 - отклонена)

user_id – id пользователя, подавшего заявку (не обязательно тот, кого записывают)

user_name – имя пользователя, подавшего заявку (не обязательно тот, кого записывают)

order_date – когда подана заявка (в формате ДД.ММ.ГГГГ)

mw_resource_id – идентификатор ресурса в МИС (для ресурсов, импортированных из МИС)

resource_name – название ресурса

resource_id – идентификатор ресурса на портале

reception_datetime – дата и время приёма (в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС)

duration – длительность приёма в минутах

type – тип заявки (у заявок на запись всегда = 3, остальные на данный момент не экспортируются)

name1 – фамилия

name2 – имя

name3 – отчество

aim – цель записи

phone – телефон

city – город

address – адрес

email – email

comment – комментарий

LastChangedOn – дата последнего изменения (в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС)

Порядок взаимодействия

Часть ресурсов портала (или все ресурсы) и их расписания управляются из МИС. Для этого из МИС формируется XML с разделами MediExchange, ResourceGroups, Resources, Schedules, Appointments и передаются скрипту import.php.

Экспорт ResourceGroups, Resources, Schedules предлагается осуществлять раз в сутки или раз в неделю (в зависимости от частоты изменения расписания приёмов и списка ресурсов). Раздел Schedules предлагается заполнять расписаниями на месяц вперед.

Изменение импортированных ресурсов возможно только из МИС. Для удаления ресурса необходимо заново импортировать ресурсы.

Экспорт Appointments предлагается осуществлять раз в 30 минут (можно меньше, в зависимости от частоты записи пациентов в МИС) в режиме SyncMode="diff"; и раз в час в режиме SyncMode="full" (в зависимости от частоты удаления записей в МИС).

Для синхронизации заявок предлагается импортировать заявки в МИС через скрипт export.php; после изменения заявок в МИС экспортировать низменные заявки (Orders) и передавать их скрипту import.php

Для того чтобы клиника имела возможность синхронизировать расписания МИС и портала Medihost.ru, клинике требуется получить у администратора портала Medihost.ru уникальный идентификатор клиники (client_key).

Образец XML экспортируемого из МИС

<MediExchange ClientKey="9DDDE578-5179-4CC4-A2A0-F681618ED9EA">
  <ResourceGroups>
    <rg id="1" name="Врач-кардиолог" pos="0"/>
    <rg id="2" name="Врач-терапевт" pos="0"/>
    <rg id="3" name="Врач-терапевт участковый" pos="0"/>
    <rg id="4" name="Врач-хирург" pos="0"/>
    <rg id="5" name="Врач-гинеколог" pos="0"/>
    <rg id="6" name="Врач-дерматолог" pos="0"/>
    <rg id="7" name="Врач-гастроэнтеролог" pos="0"/>
    <rg id="8" name="Врач-уролог" pos="0"/>
    <rg id="9" name="Медсестра" pos="0"/>
    <rg id="10" name="Врач-УЗИ" pos="0"/>
    <rg id="-99999" name="Кабинеты" pos="1"/>
  </ResourceGroups>
  <Resources>
    <r id="393" name="Баева" time_step="30" pos="0"/>
    <r id="391" name="Баранов" time_step="30" group_id="7" pos="0"/>
    <r id="422" name="Бурдин В. С." time_step="30" group_id="7" pos="0"/>
    <r id="383" name="Мягков С. В." time_step="30" group_id="7" pos="0"/>
    <r id="369" name="Нестеров О. П." time_step="30" pos="0"/>
    <r id="451" name="Добров П. С." time_step="30" group_id="5" pos="0"/>
    <r id="441" name="Мусина О. С." time_step="30" group_id="1" pos="0"/>
    <r id="412" name="Рокотов В. П." time_step="30" group_id="1" pos="0"/>
    <r id="396" name="Костин" time_step="30" pos="0"/>
    <r id="355" name="Птеренко М. С." time_step="30" pos="0"/>
    <r id="372" name="Сергеев В. М." time_step="30" pos="0"/>
    <r id="440" name="Бурдин" time_step="30" pos="0"/>
    <r id="434" name="Василевский" time_step="30" pos="0"/>
    <r id="380" name="Ларинов П. М." time_step="30" group_id="2" pos="0"/>
    <r id="427" name="Гамова" time_step="30" pos="0"/>
    <r id="409" name="Дарьялова" time_step="30" pos="0"/>
    <r id="415" name="Дроздова" time_step="30" pos="0"/>
    <r id="390" name="Жиров" time_step="30" pos="0"/>
    <r id="416" name="Земцова" time_step="30" pos="0"/>
    <r id="402" name="Золотов" time_step="30" pos="0"/>
    <r id="424" name="Иванченко" time_step="30" pos="0"/>
    <r id="403" name="Кадышева" time_step="30" pos="0"/>
    <r id="389" name="Кириленко" time_step="30" pos="0"/>
    <r id="398" name="Китаев" time_step="30" pos="0"/>
    <r id="421" name="Комаров" time_step="30" pos="0"/>
    <r id="420" name="Конев" time_step="30" pos="0"/>
    <r id="432" name="Конкина" time_step="30" pos="0"/>
    <r id="411" name="Корнеева" time_step="30" pos="0"/>
    <r id="410" name="Лазевич" time_step="30" pos="0"/>
    <r id="399" name="Ливитин" time_step="30" pos="0"/>
    <r id="425" name="Мигунов" time_step="30" pos="0"/>
    <r id="428" name="Мишина" time_step="30" pos="0"/>
    <r id="444" name="Нестеров" time_step="30" pos="0"/>
    <r id="433" name="Никулин" time_step="30" pos="0"/>
    <r id="408" name="Носова" time_step="30" pos="0"/>
    <r id="407" name="Орлов" time_step="30" pos="0"/>
    <r id="401" name="Осипов" time_step="30" pos="0"/>
    <r id="426" name="Павлов" time_step="30" pos="0"/>
    <r id="392" name="Панина" time_step="30" pos="0"/>
    <r id="397" name="Паршин" time_step="30" pos="0"/>
    <r id="439" name="Потапова" time_step="30" pos="0"/>
    <r id="452" name="Прокопьев В.В." time_step="30" pos="0"/>
    <r id="437" name="Радимов" time_step="30" pos="0"/>
    <r id="423" name="Разина" time_step="30" pos="0"/>
    <r id="417" name="Райман" time_step="30" pos="0"/>
    <r id="445" name="Ряпушкина" time_step="30" pos="0"/>
    <r id="394" name="Савченко" time_step="30" pos="0"/>
    <r id="418" name="Соколов" time_step="30" pos="0"/>
    <r id="431" name="Тимохин" time_step="30" pos="0"/>
    <r id="430" name="Токарева" time_step="30" pos="0"/>
    <r id="419" name="Фадеев" time_step="30" pos="0"/>
    <r id="438" name="Федосов" time_step="30" pos="0"/>
    <r id="395" name="Филатов" time_step="30" pos="0"/>
    <r id="404" name="Хазова" time_step="30" pos="0"/>
    <r id="413" name="Харченко" time_step="30" pos="0"/>
    <r id="443" name="Майоров С. В." time_step="30" group_id="10" pos="0"/>
    <r id="436" name="Остожев" time_step="30" group_id="10" pos="0"/>
    <r id="442" name="Васильков П. О." time_step="30" group_id="4" pos="0"/>
    <r id="406" name="Марков" time_step="30" group_id="4" pos="0"/>
    <r id="388" name="Мякинина М. А." time_step="30" group_id="4" pos="0"/>
    <r id="400" name="Захарова" time_step="30" pos="0"/>
    <r id="-2013" name="Бассейн" time_step="30" group_id="-99999" pos="1"/>
    <r id="-90" name="Кабинет УЗИ №2" time_step="30" group_id="-99999" pos="1"/>
    <r id="-91" name="Кабинет врача - гастроэнтеролога" time_step="30" group_id="-99999" pos="1"/>
    <r id="-92" name="Кабинет врача - кардиолога" time_step="30" group_id="-99999" pos="1"/>
    <r id="-93" name="Кабинет врача - хирурга" time_step="30" group_id="-99999" pos="1"/>
    <r id="-96" name="Кабинет оториноларинголога" time_step="30" group_id="-99999" pos="1"/>
    <r id="-97" name="Процедурный кабинет" time_step="30" group_id="-99999" pos="1"/>
    <r id="-98" name="Кабинка 1" time_step="30" group_id="-99999" pos="1"/>
    <r id="-99" name="Кабинка 2" time_step="30" group_id="-99999" pos="1"/>
  </Resources>
  <Schedules>
    <s id="1" date="01.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="2" date="02.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="3" date="05.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="4" date="06.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="5" date="07.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="6" date="08.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="7" date="09.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="8" date="12.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="9" date="13.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="10" date="14.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="11" date="15.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="12" date="16.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="13" date="19.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="14" date="20.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="15" date="21.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="16" date="22.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="17" date="23.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="18" date="26.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="19" date="27.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="20" date="28.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="21" date="29.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="22" date="30.07.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="23" date="02.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="24" date="03.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="25" date="04.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="26" date="05.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="27" date="06.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="28" date="09.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="29" date="10.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="30" date="11.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="31" date="12.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="32" date="13.08.2010" resource_id="393">
      <time_rules w_startTime="7:00" w_endTime="18:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="33" date="01.07.2010" resource_id="422">
      <time_rules w_startTime="7:00" w_endTime="21:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="34" date="02.07.2010" resource_id="422">
      <time_rules w_startTime="8:00" w_endTime="16:00"/>
    </s>
    <s id="35" date="03.07.2010" resource_id="422">
      <time_rules w_startTime="7:00" w_endTime="21:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="36" date="04.07.2010" resource_id="422">
      <time_rules w_startTime="8:00" w_endTime="16:00"/>
    </s>
    <s id="37" date="05.07.2010" resource_id="422">
      <time_rules w_startTime="7:00" w_endTime="21:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="38" date="06.07.2010" resource_id="422">
      <time_rules w_startTime="8:00" w_endTime="16:00"/>
    </s>
    <s id="39" date="07.07.2010" resource_id="422">
      <time_rules w_startTime="7:00" w_endTime="21:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="40" date="08.07.2010" resource_id="422">
      <time_rules w_startTime="8:00" w_endTime="16:00"/>
    </s>
    <s id="41" date="09.07.2010" resource_id="422">
      <time_rules w_startTime="7:00" w_endTime="21:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
    <s id="42" date="10.07.2010" resource_id="422">
      <time_rules w_startTime="8:00" w_endTime="16:00"/>
    </s>
    <s id="43" date="11.07.2010" resource_id="422">
      <time_rules w_startTime="7:00" w_endTime="21:00" b_startTime="13:00" b_endTime="14:00"/>
    </s>
  </Schedules>
  <Appointments SyncMode="full">
    <a tablename="SchedEvent" id="8" resource_id="383" ReceptionDateTime="30.06.2010 12:00:00" Duration="60" Title="Печеркина М.И. - повторный прием"/>
  </Appointments>
  <Orders>
    <o ID="1" Status="0" user_id="1" user_name="имя пользователя" order_date="01.07.2010" MW_Resource_ID="369" Resource_Name="Нестеров О. П." Resource_ID="1" Reception_Datetime="01.07.2010 17:00:00" Duration="30" Type="3" Name1="фамилия" Name2="имя" Name3="отчество" Aim="цель" Phone="телефон" City="город" Address="адрес" Email="mlab@medwork.ru" LastChangedOn="01.07.2010 12:11:02"/>
    <o ID="2" Status="1" user_id="1" user_name="username" order_date="01.07.2010" MW_Resource_ID="-90" Resource_Name="Кабинет УЗИ №2" Resource_ID="2" Reception_Datetime="01.07.2010 17:00:00" Duration="20" Type="3" Name1="иванов" Name2="иван" Name3="иванович" Aim="цель" Phone="телефон" City="город" Address="адрес" Email="счастье@ru" LastChangedOn="01.07.2010 12:11:03"/>
  </Orders>
</MediExchange>