Взаимодействие с ЛИС

Для кого данный документ

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

Данный документ описывает интеграцию для разработчиков. Все запросы являются запросами SOAP.

Предусловие

Разработчики интеграционного модуля должны выполнить следующие шаги:

  1. Получить тестовый API у SIROCA Technology.
  2. Утвердить тип авторизации.
  3. Получить логин, пароль, client_id (идентификатор приложения системе Siroca), MisID (идентификатор МИС в системе Siroca) для работы с API.
  4. Получить контракты для работы.
  5. Реализовать взаимодействие с API.
  6. Провести тестирование.

Окружение

Адрес API

Тестовое

http://{host}/LisService.svc

Получение токена
/GetToken

Нужно передать следующие параметры:
Параметры для получения токена

Параметр

Тип данных

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

login

String

True

password

String

True

client_id

String

True

В ответ должна прийти модель AccessToken:

Поле

Тип данных

Описание

access_token

String

Токен доступа

message

String

Сообщение

manager_id

Int

Не используется

life_time_seconds

Int

Время жизни в секундах

Пример запроса и получения токена

Чтобы получить токен, нужно сделать SOAP запрос на метод

http://tempuri.org/ILisService/GetToken

В Body у модели должна быть подобная структура:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
    <soapenv:Header/>
    <soapenv:Body>
        <tem:GetToken>
            <tem:login>ЛОГИН</tem:login>
            <tem:password>ПАРОЛЬ</tem:password>
            <tem:client_id>АЙДИ ОТПРАВИТЕЛЯ ПРИЛОЖЕНИЯ</tem:client_id>
        </tem:GetToken>
    </soapenv:Body>
</soapenv:Envelope>

Ответ:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <GetTokenResponse xmlns="http://tempuri.org/">
            <GetTokenResult xmlns:a="http://schemas.datacontract.org/2004/07/Ais.Business" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <a:access_token>d20iddf83jvh837py14t</a:access_token>
                <a:life_time_seconds>86400</a:life_time_seconds>
                <a:manager_id>0</a:manager_id>
                <a:message/>
            </GetTokenResult>
        </GetTokenResponse>
    </s:Body>
</s:Envelope>

Создание заказа
POST /CreateOrder2

Метод принимает следующие параметры:

Параметры создания заказа

Параметр

Тип данных

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

Order

OrderCreateRequest

True

Token

String

True

Модели, использующиеся при создании заказа:

Свойство

Тип данных

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

Описание

OrderNumber

String

True

Номер заявки из внешней системы

Person

Person

True

Клиент

Sender

String

True

Код системы отправителя

MisID

Long

True

Идентификатор внешнего сервиса в ЛИС

FinanceSourceCode

String

False

Источник финансирования

Researches

List<OrderRequestResearch>

True

Список исследований, должна быть хотя бы 1 услуга

Materials

List<Material>

False

Материалы в направлении

IsCito

Bool

True

Признак срочности

Comment

String

False

Комментарий врача

IdRecievePunkt

Int

False

Пункт забора

SenderFuncStructureID

Long

False

Код функционального подразделения отправителя

Nurse

Person

True, если в заказе есть услуги COVID

Медсестра, которая произвела забор БМ

IsResident

Bool

False

Является ли клиент резидентом страны (по умолчанию - True)

HasCovidSimptoms

Bool

False

Имеются ли симптомы COVID

MessageType

MessageType

True

Тип сообщения

Person

Свойство

Тип данных

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

Описание

MisID

String

True

Не используется

Code

String

True

ИИН клиента. Если он задан, то производит поиск существующего клиента, иначе создается клиент

LastName

String

True

Фамилия

FirstName

String

True

Имя

SecondName

String

False

Отчество

BirthDate

DateTime

True

Дата рождения

SexID

SexType

True

Пол

IsUnknownPerson

bool

True

Не используется

Telephone

String

False

Телефон

Email

String

False

Почта

Address

String

False

Адрес

JobInfo

String

False

Информация о месте работы

Еnum

Название

Значение

Описание

Female

2

Женщина

Male

3

Мужчина

MessageType - enum

Название

Значение

Описание

CreateOrderRequest

0

Запрос на создание заказа

CreateOrderResponse

1

Ответ на запрос на создание заказа

RemoveOrderRequest

2

Запрос на аннулирование заказа

RemoveOrderResponse

3

Ответ на запрос на аннулирование заказа

OrderStatusRequest

4

Запрос статуса заказа

OrderStatusResponse

5

Ответ на запрос статуса заказа

OrderResultsRequest

6

Запрос результатов заказа

OrderResultsResponse

7

Ответ на запрос результатов заказа

OrderNextResultRequest

8

Запрос на получение следующего готового заказа

OrderNextResultResponse

9

Ответ за запрос на получение следующего готового заказа

OrderResultSuccessDeliveredRequest

10

Запрос на подтверждение получения результатов

OrderResultSuccessDeliveredResponse

11

Ответ на запрос на подтверждение получения результатов

ContainerStatusResponse

14

Запрос на статус контейнера

OrderRequestResearch

Свойство

Тип данных

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

Описание

ServiceCode

String

True

Код исследования

ParameterId

Long

False

Не используется

ReferralExternalId

String

False

Не используется

Notification

String

False

Не используется

Material

Свойство

Тип данных

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

Описание

MaterialNumber

String

True

Штрихкод биоматериала

MaterialTypeID

String

True

Код биоматериала

TakeDate

DateTime

True

Дата взятия биомат.

TakePlace

String

True

Адрес взятия

Researches

List<OrderRequestResearch>

True

Список исследований

В ответ должна прийти следующая модель OrderCreateResponse:

Поле

Тип данных

Описание

MisID

Long

Идентификатор МИС

OrderNumber

String

Номер заявки

LisID

Long

Идентификатор направления в ЛИС

Warnings

List<String>

Предупреждения/ошибки

GeneratedContainers

List<MContainers>

Сгенерированные контейнера

Code

ResponseCode

Код ответа. 0 – Успешно, 1 – Ошибка, 2 – Истек токен, 3 – не используется, 4 – Заказ аннулирован

Error

String

Текст ошибки

MContainers

Поле

Тип данных

Описание

Id

Int

Идентификтор типа контейнера

Name

String

Название типа контейнера

Barcode

Long

Штрихкод

Warnings

List<String>

Предупреждения/ошибки

GeneratedContainers

List<MContainers>

Сгенерированные контейнера

Biomaterial

String

Биоматериал

DestinationPunktName

String

Название пункта назначения

Пример запроса создания заказа

http://tempuri.org/ILisService/CreateOrder2

Запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ais="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService">

   <soapenv:Header/>

   <soapenv:Body>

      <tem:CreateOrder2>

         <tem:Order>

            <ais:MessageType>CreateOrderRequest</ais:MessageType>

            <ais:Sender>SENDER NUMBER</ais:Sender>

            <ais:Comment>COMMENT</ais:Comment>

            <ais:HasCovidSimptoms>0</ais:HasCovidSimptoms>

            <ais:IdRecievePunkt>1</ais:IdRecievePunkt>

            <ais:IsCito>0</ais:IsCito>

            <ais:IsResident>0</ais:IsResident>

            <ais:MisID>0</ais:MisID>

            <ais:OrderNumber>123456</ais:OrderNumber>

            <ais:Person>

               <ais:BirthDate>2021-09-21T03:21:53.699Z</ais:BirthDate>

               <ais:CitizenshipID>0</ais:CitizenshipID>

               <ais:Code>IIN</ais:Code>

               <ais:FirstName>Test</ais:FirstName>

               <ais:IsUnknownPerson>0</ais:IsUnknownPerson>

               <ais:LastName>Testov</ais:LastName>

               <ais:MisID>0</ais:MisID>

               <ais:PersonAge>18</ais:PersonAge>

               <ais:SexID>Male</ais:SexID>

            </ais:Person>

            <ais:Researches>

               <!--Zero or more repetitions:-->

               <ais:OrderRequestResearch>

                  <ais:ServiceCode>09-017</ais:ServiceCode>

               </ais:OrderRequestResearch>

            </ais:Researches>

         </tem:Order>

         <tem:token>d20iddf83jvh837py14t</tem:token>

      </tem:CreateOrder2>

   </soapenv:Body>

</soapenv:Envelope>

Ответ:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

    <s:Body>

        <CreateOrder2Response xmlns="http://tempuri.org/">

            <CreateOrder2Result xmlns:a="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

                <a:Date>2022-04-07T09:12:43.0819648+06:00</a:Date>

                <a:MessageType>CreateOrderResponse</a:MessageType>

                <a:Sender>SENDER</a:Sender>

                <a:Code>Success</a:Code>

                <a:Error i:nil="true"/>

                <a:GeneratedContainers i:nil="true" xmlns:b="http://schemas.datacontract.org/2004/07/Ais.Business"/>

                <a:LisID>10038664</a:LisID>

                <a:MisID>0</a:MisID>

                <a:OrderNumber>123456</a:OrderNumber>

                <a:Warnings xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>

            </CreateOrder2Result>

        </CreateOrder2Response>

    </s:Body>

</s:Envelope>

Получение статуса заказа
/GetOrderStatus2

Метод принимает следующие параметры:

Параметры GetOrderStatus2

Параметр

Тип данных

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

Request

OrderRequest

True

Token

String

True

OrderRequest

Свойство

Тип данных

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

Описание

OrderNumber

String

True

Номер заявки из внешней системы

MisID

Long

False

Идентификатор внешней системы

LisID

Long

True

Идентификатор заявки в ЛИС

Sender

String

True

Код системы отправителя

MessageType

MessageType

True

Тип сообщения

В ответ должна прийти следующая модель OrderStatusResponse:

OrderStatusResponse

Поле

Тип данных

Описание

MisID

Long

Идентификатор внешней системы

OrderNumber

String

Номер заявки

LisID

Long

Идентификатор направления в ЛИС

Status

OrderStatusForExternalSystem

Статус

Code

ResponseCode

Код ответа

Error

String

Ошибка

OrderStatusForExternalSystem

Название

Значение

Описание

OrderNotFound

0

Заказ не найден

NoMaterial

1

Нет материала

HasMaterial

2

Материал собран

TaskMustClarify

3

Задание требует уточнения

TasksCreated

4

Задание сформировано

HasHalfResults

5

Получены неполные результаты

HasPreResults

6

Получены предварительные результаты

ResultsHalfApproved

7

Результаты утверждены частично

OrderComplete

8

Заказ выполнен

OrderClosed

9

Заказ закрыт

ResultsIssuedToPatient

10

Результаты выданы пациенту

ResultsSendedToSenderSystem

11

Результаты отправлены системе отправителю

OrderIsCanceled

12

Выбраковка всех исследований заказа

Пример запроса получения статуса заказа

http://tempuri.org/ILisService/GetOrderStatus2

Запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ais="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService">

   <soapenv:Header/>

   <soapenv:Body>

      <tem:GetOrderStatus2>

         <tem:request>

            <ais:MessageType>OrderStatusRequest</ais:MessageType>

            <ais:Sender>SENDER</ais:Sender>

            <ais:LisID>10038664</ais:LisID>

            <ais:MisID>0</ais:MisID>

            <ais:OrderNumber>123456</ais:OrderNumber>

         </tem:request>

         <tem:token>d20iddf83jvh837py14t</tem:token>

      </tem:GetOrderStatus2>

   </soapenv:Body>

</soapenv:Envelope>

Ответ:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

    <s:Body>

        <GetOrderStatus2Response xmlns="http://tempuri.org/">

            <GetOrderStatus2Result xmlns:a="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

                <a:Date>2022-04-07T09:20:44.1662271+06:00</a:Date>

                <a:MessageType>OrderStatusResponse</a:MessageType>

                <a:Sender i:nil="true"/>

                <a:Code>Success</a:Code>

                <a:Error i:nil="true"/>

                <a:LisID>10038664</a:LisID>

                <a:MisID>0</a:MisID>

                <a:OrderNumber>123456</a:OrderNumber>

                <a:Status>TasksCreated</a:Status>

            </GetOrderStatus2Result>

        </GetOrderStatus2Response>

    </s:Body>

</s:Envelope>

Удаление заказа
/RemoveOrder2

Метод принимает следующие параметры:

Параметры GetOrderStatus2

Параметр

Тип данных

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

Request

OrderRequest

True

Token

String

True

В ответ должна прийти модель OrderResponse:

OrderResponse

Поле

Тип данных

Описание

MisID

Long

Идентификатор внешней системы

OrderNumber

String

Номер заявки

LisID

Long

Идентификатор направления в ЛИС

Code

ResponseCode

Код ответа

Error

String

Ошибка

Пример запроса RemoveOrder2

http://tempuri.org/ILisService/RemoveOrder2

Запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ais="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService">

   <soapenv:Header/>

   <soapenv:Body>

      <tem:RemoveOrder2>

         <tem:request>

            <ais:MessageType>RemoveOrderRequest</ais:MessageType>

            <ais:Sender>SENDER</ais:Sender>

            <ais:LisID>10038664</ais:LisID>

            <ais:MisID>0</ais:MisID>

            <ais:OrderNumber>123456</ais:OrderNumber>

         </tem:request>

         <tem:token>d20iddf83jvh837py14t</tem:token>

      </tem:RemoveOrder2>

   </soapenv:Body>

</soapenv:Envelope>

Ответ:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

    <s:Body>

        <RemoveOrder2Response xmlns="http://tempuri.org/">

            <RemoveOrder2Result xmlns:a="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

                <a:Date>2022-04-07T09:28:58.733834+06:00</a:Date>

                <a:MessageType>RemoveOrderResponse</a:MessageType>

                <a:Sender i:nil="true"/>

                <a:Code>Success</a:Code>

                <a:Error/>

                <a:LisID>10038664</a:LisID>

                <a:MisID>0</a:MisID>

                <a:OrderNumber>123456</a:OrderNumber>

            </RemoveOrder2Result>

        </RemoveOrder2Response>

    </s:Body>

</s:Envelope>

Получение результатов по номеру заказа
/GetOrderResults2

Метод принимает следующие параметры:

Параметры GetOrderResults2

Параметр

Тип данных

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

Request

OrderRequest

True

Token

String

True

В ответ должна прийти следующая модель OrderResultResponse:

Параметры OrderResultResponse

Поле

Тип данных

Описание

MisID

Long

Идентификатор внешней системы

OrderNumber

String

Номер заявки

LisID

Long

Идентификатор направления в ЛИС

Code

ResponseCode

Код ответа

Error

String

Ошибка

ReceiveDate

DateTime

Дата получения/регистрации

PersonFIO

String

ФИО клиента

IsManual

Bool

Не используется

SenderFuncStructureID

Long

Код функционального подразделения отправителя

SenderPostID

Long

Код врача отправителя

OrderStatus

OrderStatusForExternalSystem

Статус заказа

Person

Person

Информация о пациенте

Researches

List<OrderRequestResearch>

Исследования в заказе

Materials

List<Material>

Материалы в направлении

OrderResultXML

String

Результат в XML

OrderResultFileID

long

Не используется

OrderResultDate

DateTime

Дата формирования результата

OrderResultFile

Byte[]

Pdf-файл c результатами

ApprovedPostOriginalID

String

ID врача в СУР

ExtInfo

List<KmisAssayData>

Данные исследования

Пример запроса получение результатов по номеру заказа

http://tempuri.org/ILisService/GetOrderResults2

Запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ais="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService">

   <soapenv:Header/>

   <soapenv:Body>

      <tem:GetOrderResults2>

         <tem:request>

            <ais:MessageType>OrderResultsRequest</ais:MessageType>

            <ais:Sender>SENDER</ais:Sender>

            <ais:LisID>8962157</ais:LisID>

            <ais:MisID>0</ais:MisID>

            <ais:OrderNumber>2003670502202151125478</ais:OrderNumber>

         </tem:request>

         <tem:token>d20iddf83jvh837py14t</tem:token>

      </tem:GetOrderResults2>

   </soapenv:Body>

</soapenv:Envelope>

Получение результатов следующего готового заказа отправителя

Метод возвращает следующий готовый результат отправителю. После получения результатов, внешней системе следует отправлять Подтверждение о получении результатов в виде метода

/SaveOrderResultSuccessDelivered2

Последовательность представлена ниже.

/GetOrderNextResults2

Принимает следующие параметры:

Параметры для GetOrderNextResults2

Параметр

Тип данных

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

Request

RequestBase

True

Token

String

True

RequestBase

Свойство

Тип данных

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

Описание

Sender

String

True

Код системы отправителя

MessageType

MessageType

True

Тип сообщения

В ответ должна прийти модель OrderResultResponse.

Пример запроса получения следующего готового заказа отправителя

http://tempuri.org/ILisService/GetOrderNextResult2

Запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ais="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService">

   <soapenv:Header/>

   <soapenv:Body>

      <tem:GetOrderNextResult2>

         <tem:request>

            <ais:MessageType>OrderNextResultRequest</ais:MessageType>

            <ais:Sender>Sender</ais:Sender>

         </tem:request>

         <tem:token>d20iddf83jvh837py14t</tem:token>

      </tem:GetOrderNextResult2>

   </soapenv:Body>

</soapenv:Envelope>

Подтверждение получения результатов
/SaveOrderResultSuccessDelivered2

Принимает следующие параметры:

Параметры для GetOrderNextResults2

Параметр

Тип данных

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

Request

OrderRequest

True

Token

String

True

В ответ должна прийти следующая модель ResponseBase:

ResponseBase

Свойство

Тип данных

Описание

Code

ResponseCode

Код ответа

Error

String

Ошибка

Пример запроса для подтверждения получения результатов

http://tempuri.org/ILisService/SaveOrderResultSuccessDelivered2

Запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:ais="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService">

   <soapenv:Header/>

   <soapenv:Body>

      <tem:SaveOrderResultSuccessDelivered2>

         <tem:request>

            <ais:MessageType>OrderResultSuccessDeliveredRequest</ais:MessageType>

            <ais:Sender>SENDER</ais:Sender>

            <ais:LisID>10038664</ais:LisID>

            <ais:MisID>0</ais:MisID>

            <ais:OrderNumber>123456</ais:OrderNumber>

         </tem:request>

         <tem:token>d20iddf83jvh837py14t</tem:token>

      </tem:SaveOrderResultSuccessDelivered2>

   </soapenv:Body>

</soapenv:Envelope>

Ответ:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

    <s:Body>

        <SaveOrderResultSuccessDelivered2Response xmlns="http://tempuri.org/">

            <SaveOrderResultSuccessDelivered2Result xmlns:a="http://schemas.datacontract.org/2004/07/Ais.Business.Models.LisService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

                <a:Date>2022-04-07T10:01:18.763194+06:00</a:Date>

                <a:MessageType>OrderResultSuccessDeliveredResponse</a:MessageType>

                <a:Sender>SENDER</a:Sender>

                <a:Code>Success</a:Code>

                <a:Error i:nil="true"/>

            </SaveOrderResultSuccessDelivered2Result>

        </SaveOrderResultSuccessDelivered2Response>

    </s:Body>

</s:Envelope>