Описание процесса синхронизации лаборатории

Две системы участника: МИС и ЛИС. ЛИС ведет на своей стороне справочник лабораторий и услуг которые они оказывают. Чтобы МИС имел доступ к этим данным, ЛИС реализует на своей стороне 2 метода: Получение справочника лабораторий и Получение справочника услуг. Оба метода описаны ниже на этой странице в разделе Методы на стороне ЛИС.

Алгоритм обновления данных лабораторий и услуг в МИС

МИС получает от ЛИС список лабораторий с уникальными идентификаторами и с привязкой к отделению методом Получение справочника лабораторий. 

По каждой лаборатории из ответа происходит следующий процесс:

  1. МИС ищет отделение по ОИД в бд. 
    1. Если отделения нет, то создается новая запись
      1. МИС убирает из ОИД последний сегмент и по полученному ОИД подразделения ищет его в справочнике.
        1. Если не найдено, то ошибка. Создания или обновления лаборатории не происходит
        2. Если найдено, то создаем отделение по данным из полей Department.OID, Department.Code и Department.Name. Такое отделение помечено в бд в поле Rem как "ЛИС".
    2. Если отделение есть, но оно находится в закрытом подразделении или подразделение относится к закрытой МО, то ошибка. Создания или обновления лаборатории не происходит.
    3. Если отделение есть и все валидации выше пройдены то переходим к шагу 2
  2. МИС ищет лабораторию по Guid
    1. Если лаборатория не найдена, то создаем новую используя данные из полей Guid, Name и Department(указываем ссылку на отделение).
    2. Если лаборатория найдена, то производим ее обновление меняя имя и отделение на те что были переданы в ответе. Если лаборатория была закрыта, то мы также ее пере открываем.
  3. МИС выполняет запрос к методу Получение справочника услуг. Услуги очищаются от дублей по коду услуги
  4. МИС ищет среди них по кодам те услуги, которые не привязаны к лаборатории
    1. Если новых услуг на добавление не найдено, то заканчиваем обновление по лаборатории.
    2. Если новые услуги найдены, то по каждой такой услуге выполняем поиск в справочнике услуг по коду
      1. Если не найдено, то ошибка и выход.
      2. Если найдено, то создаем связь между услугой и лабораторией.
  5. МИС ищет среди существующих услуг лаборатории те, которых нет в ответе метода.
    1. Если такие услуги найдены, то связь между ними и лабораторией удаляется.


Важно

Чтобы избежать дублей лабораторий при одновременной работе нескольких служб синхронизаций, ЛПУ необходимо закрывать лаборатории в конкурирующей(старой) системе при переходе на новую.

Также следует передавать в ответе метода Получение справочника лабораторий только те лаборатории, которые ведутся в новой системе ЛИС и больше не ведутся в старой.

В случае одновременной синхронизации одной и той же лаборатории или данных отделений в двух разных ЛИС могут возникать конкурентные обновления и коллизии. 

Методы на стороне ЛИС

Получение справочника лабораторий от ЛИС

МИС получает от ЛИС справочник лабораторий путём выполнения GET запроса в сервис ЛИС

Адрес запроса

GET: {{url}}/Laboratory

где url - Хост + путь 

Заголовки запроса

Заголовок

Значение

AuthorizationApiKey - ключ авторизации

Ответ сервера

В случае успешного выполнения сервер вернет ответ в формате JSON со следующими данными:

№ п/пНаименованиеТип данныхОписаниеОбязательное полеКомментарий
1

Guid

СтрокаУникальный идентификатор лаборатории в системе+По этому идентификатору происходит поиск существующей лаборатории.
2

Name

СтрокаНаименование лаборатории+В случае создания новой лаборатории ее название берем из этого поля.
3

Department

ОбъектОтделение к которому относится лаборатория+
3.1

Department.OID

СтрокаОИД отделения по ФРМО+OID должен состоять из 14 сегментов, первый сегмент OID должен быть в диапазоне от 0 до 2.Следующие сегменты могут быть равны 0 или быть числами, начиная с 1
3.2

Department.Code

СтрокаКод отделения +
3.3

Department.Name

СтрокаНаименование отделения+


Пример в формате JSON
[
  {
    "Guid": "1a23b456-789c-1d23-4e56-789f01234567",
    "Name": "Лаборатория 1",
    "Department":
     {
    	"guid": "0fe618ed-f577-45bc-a8b4-9b7d8141d75c",
    	"code": "1",
    	"name": "Клиническая лаборатория",
    	"oid": "1.2.643.5.1.13.13.12.2.31.11500.0.294005.213941"
	 }
  },
  {
    "Guid": "2a34b567-890d-2e34-5f67-890g12345678",
    "Name": "Лаборатория 2",
    "Department":
     {
    	"guid": "0fe618ed-f577-45bc-a8b4-9b7d8141d75c",
    	"code": "1",
    	"name": "Клиническая лаборатория",
    	"oid": "1.2.649.5.1.13.13.12.2.31.11039.0.29.213941"
	 }
  },
  ..........
]

Получение справочника услуг на стороне ЛИС

После получения справочника лабораторий МИС получает от ЛИС справочник услуг по лабораториям путем выполнения GET запроса в сервису ЛИС

Адрес запроса

GET: {{url}}/HealthCareService?laboratory={laboratory}

где url - Хост + путь 

Заголовки запроса

Заголовок

Значение

AuthorizationApiKey - ключ авторизации

Параметры запроса

Параметр

Тип

Описание

По умолчанию

Обязательный

Комментарий

laboratoryqueryГуид лаборатории
+


Ответ сервера

В случае успешного выполнения сервер вернет ответ в формате JSON со следующими данными:

Наименование

Тип данных

Описание

Обязательное поле

Комментарий

CodeСтрокаКод услуги+согласно регионального справочника
DescriptionСтрокаНаименование услуги

+



Пример в формате JSON
 [
  {
    "Code": "Код услуги 1",
    "Description": "Описание услуги 1"
  },
  {
    "Code": "Код услуги 2",
    "Description": "Описание услуги 2"
  },
  {
    "Code": "Код услуги 3",
    "Description": "Описание услуги 3"
  },
  ........
]

Получение отделений, лабораторий и оказываемых лабораториями услуг в МИС

Методы ниже находятся на стороне МИС. ЛИС не нужно реализовывать на своей стороне эти методы. 

Они возвращают текущее состояние справочников на стороне МИС.

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

Получение отделений методом Получение списка отделений - API Docs - Confluence (softrust.ru)

Получение лаборатории методом Получение справочника лабораторий - API Docs - Confluence (softrust.ru)

Получение услуг методом Получение справочника медицинских услуг - API Docs - Confluence (softrust.ru)