Интеграция МИС с порталом Medihost.ru
Главная → Интеграция МИС с порталом Medihost.ru
На портале 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>