Для кого данный документ
Сервис интеграции предоставляет интерфейс для формирования и заказа лабораторных результатов, а также получения результатов.
Данный документ описывает интеграцию для разработчиков. Все запросы являются запросами SOAP.
Предусловие
Разработчики интеграционного модуля должны выполнить следующие шаги:
- Получить тестовый API у SIROCA Technology.
- Утвердить тип авторизации.
- Получить логин, пароль, client_id (идентификатор приложения системе Siroca), MisID (идентификатор МИС в системе Siroca) для работы с API.
- Получить контракты для работы.
- Реализовать взаимодействие с API.
- Провести тестирование.
Окружение |
Адрес 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 |
Телефон |
|
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/GetOrderResult2
Запрос:
<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>