|
|
Документация
API проекта "Запись пациента на приём"
(appt-web)
version 1.0
1
Содержание
RESTful API
3
Авторизация запросов
3
Вход в сеанс POST /api/login
4
Выход из сеанса POST /api/logout
5
Методы без авторизации
6
Справочник территорий
GET /api/dict/territory
6
Справочник городов
GET /api/dict/city
7
Филиалы лечебного учреждения
GET /api/filial
8
Поиск пациента
GET /api/patient
9
Специальности
GET /api/speciality
10
Группы услуг
GET /api/srvgroup
11
Услуги
GET /api/srv
12
Врачи для записи на прием
GET /api/doctor
13
Врачи для записи на услуги
GET /api/doctorsrv
14
Минимальная и максимальная даты талонов в каждом месяце
GET /rnumb/mounthdate
15
Количество талонов в каждый из дней
GET /api/rnumb/count
16
Талоны
GET /api/rnumb
17
Захват талона
POST /api/rnumb/{rnumbId}/lock
18
Освобождение талона
POST /api/rnumb/{rnumbId}/unlock
19
Информация о талоне
GET /api/rnumb/{rnumbId}/info
20
Методы с авторизацией
21
Создание пациента
POST /api/patient
21
Запись пациента на прием
POST /api/rnumb/{rnumbId}/appointment
22
Отмена записи пациента на прием
POST /api/rnumb/{rnumbId}/cancellappointment
23
Предстоящие записи пациента на прием
GET /api/rnumb/info
24
Отсылка на почту собщения о успешной записи на прием
POST /api/rnumb/{rnumbId}/send/email/apptok
25
2
RESTful API
Авторизация запросов
Авторизация осуществляется при помощи токена полученного на этапе входа пользователя в сеанс (/api/login).
Токен записывается в заголовок (Headers) HTTP запроса.
Токен действует при отсутствии запросов пользователя к серверу в течении 60 минут.
Пример авторизованного GET запроса
Headers:
Authorization: TOKEN 3e59fca0-45b4-4d12-ac2c-d4012450d07b
Ответ в случае успеха (данные)
{"id":1}
Ответ в случае устаревшего или неправильного токена
{
"errorCode":"AuthenticationException",
"errorMsg":"Full authentication is required to access this resource"
}
Описание ответа:
• errorCode - код ошибки;
• errorMsg - текст ошибки.
3
Вход в сеанс POST /api/login
Используемые DB процедуры
pkg_ws_webrec.find_patient
Пример POST запроса
Content-Type: application/json
Тело запроса
{
"lastname":"иванов",
"firstname":"иван",
"secondname":"иванович",
"birthday":"2017-02-08",
"email":null,
"phone":null
}
Параметры запроса
• lastname - фамилия;
• firstname - имя;
• secondname - отчество;
• birthday - дата рождения (формат yyyy-MM-dd);
• email - адрес электронной почты;
• phone - телефон.
Ответ в случае успеха
{
"patientId":270245001,
"token":"e99e32de-62df-4718-83ee-319ebe8b38f2"
}
Описание ответа:
• patientId - идентификатор пациента;
• token - идентификационный токен.
Ответ в случае неудачи
{"errorMsg":"Wrong login data","errorCode":"WrongLoginData"}
Описание ответа:
• errorCode - код ошибки;
• errorMsg - текст ошибки.
Возможные коды ошибок:
• Exception - исключение;
• Unknown - неизвестная ошибка (отсутствует errorMsg);
• WrongLoginData - пользователь не найден;
• TooManyUsers - найдено несколько пользователей.
4
Выход из сеанса POST /api/logout
Пример POST запроса
Content-Type: application/json
Тело запроса
{
"token":"e99e32de-62df-4718-83ee-319ebe8b38f2"
}
Ответ
{
"result":true
}
5
Методы без авторизации
Справочник территорий
GET /api/dict/territory
Используемые DB процедуры
pkg_ws_webrec.get_territory
Пример GET запроса
Ответ
[
{
"code":"2",
"text":"Ленинградская область"
},
{
"code":"1",
"text":"Тверская область"
}
]
Описание ответа:
• code - код;
• text - название.
6
Справочник городов
GET /api/dict/city
Используемые DB процедуры
pkg_ws_webrec.get_city
Пример GET запроса
Ответ
[
{
"code":"6",
"text":"Тверь"
},
{
"code":"7",
"text":"Зеленогорск"
}
]
Описание ответа:
• code - код;
• text - название.
7
Филиалы лечебного учреждения
GET /api/filial
Используемые DB процедуры
pkg_ws_webrec.get_deps_list
Пример GET запроса
Ответ
[
{
"id":1,
"name":"Медицинский центр",
"territoryCode":"2",
"cityCode":"6",
"address":"адрес 1",
"phone":"телефон 1"
},
{
"id":7,
"name":"КБ2",
"territoryCode":"1",
"cityCode":"7",
"address":"адрес2",
"phone":"телефон 2"
}
]
Описание ответа:
• id - идентификатор филиала;
• name - название;
• territoryCode - код территории;
• cityCode - код города;
• address - адрес;
• phone - телефон.
8
Поиск пациента
GET /api/patient
Используемые DB процедуры
pkg_ws_webrec.find_patient
Входные параметры
• lastname - фамилия;
• firstname - имя;
• secondname - отчество;
• birthday - дата рождения (формат yyyy-MM-dd);
• email - адрес электронной почты;
• phone - телефон.
Пример GET запроса
&firstname=иван&secondname=иванович&birthday=2017-02-08
Ответ если входным данным соответствует один пациент
{
"id":270245001
}
Описание ответа:
• id - идентификатор пациента.
Ответ если входным данным соответствуют несколько пациентов
{
"errorMsg":null,
"errorCode":"LimitExceeded"
}
9
Специальности
GET /api/speciality
Используемые DB процедуры
pkg_ws_webrec.get_specialities_list
Входные параметры
• filialid - идентификатор или идентификаторы филиалов;
• mode - режим (1 - для приема, 2 - для услуг, NULL - все).
Пример GET запроса
Ответ
[
{
"id":26180,
"text":"Отоларинголог",
"attr":1
},
{
"id":26205,
"text":"Врач ультразвуковой диагностики",
"attr":2
},
{
"id":26187,
"text":"Рентгенолог",
"attr":2
},
]
Описание ответа:
• id - идентификатор специальности;
• text - название специальности;
• attr - признак специальности (1 - запись на прием, 2 - запись на услугу).
10
Группы услуг
GET /api/srvgroup
Используемые DB процедуры
pkg_ws_webrec.get_services_group
Входные параметры
• filialid - идентификатор или идентификаторы филиалов;
• srvgroupid - идентификатор группы услуг;
• rootmode - режим (1 - только корневые группы, NULL - все).
Пример GET запроса
Ответ
[
{
"id":1,
"parentId":0,
"srvExists":1,
"text":"Разделы прейскуранта"
},
{
"id":2,
"parentId":1,
"srvExists":1,
"text":"Консультации врачей"
},
{
"id":22,
"parentId":1,
"srvExists":1,
"text":"Амбулаторное лечение"
},
{
"id":42,
"parentId":22,
"srvExists":1,
"text":"Стационар дневного пребывания"
},
{
"id":62,
"parentId":2,
"srvExists":1,
"text":"ПЦР-диагностика инфекционных заболеваний"
}
]
Описание ответа:
• id - идентификатор группы услуг;
• parentId - идентификатор предка;
• srvExists - существуют ли услуги в данной группе (0 - нет,1 - да);
• text - название группы услуг.
11
Услуги
GET /api/srv
Используемые DB процедуры
pkg_ws_webrec.get_services_list
Входные параметры
• filialid - идентификатор или идентификаторы филиалов;
• srvgroupid - идентификатор группы услуг;
• srvid - идентификатор услуги;
• doctorid - идентификатор врача;
• specid - идентификатор специальности;
• age - количество лет (фильтрация услуг по возрасту);
• sex - пол: 0 - мужской, 1 - женский (фильтрация услуг по полу).
Пример GET запроса
http://localhost:8090/appt-web/api/srv?filialid=1,7,14&specid=26205
Ответ
[
{
"id":1167,
"text":"УЗИ мочевой пузырь",
"description":null,
"preparation":null,
"price":8344.97
}
]
Описание ответа:
• id - идентификатор услуги;
• text - название;
• description - описание услуги;
• preparation - подготовка к услуге (что нужно сделать перед проведением услуги);
• price - предварительная стоимость услуги.
12
Врачи для записи на прием
GET /api/doctor
Используемые DB процедуры
pkg_ws_webrec.get_doctors_for_appointment
Входные параметры
• filialid - идентификатор или идентификаторы филиалов;
• specid - идентификатор специальности;
• paidmode - платный прием (1 - платный прием, (0, null) - бесплатный прием).
Пример GET запроса
http://localhost:8090/appt-web/api/doctor?filialid=1,7,14&specid=26180
Ответ
[
{
"id":1196,
"lastName":"Клинин",
"firstName":"Михаил",
"secondName":"Альбертович",
"filialIds":[
1
],
"price":null
}
]
Описание ответа:
• id - идентификатор врача;
• lastName - фамилия;
• firstName - имя;
• secondName - отчество;
• filialIds - идентификаторы филиалов;
• price - предварительная стоимость приема врача.
13
Врачи для записи на услуги
GET /api/doctorsrv
Используемые DB процедуры
pkg_ws_webrec.get_doctors_for_appointment
Входные параметры
• filialid - идентификатор или идентификаторы филиалов;
• specid - идентификатор специальности;
• srvid - идентификатор или идентификаторы услуги;
• paidmode - платный прием (1 - платный прием, (0, null) - бесплатный прием).
Пример GET запроса
http://localhost:8090/appt-web/api/doctorsrv?filialid=1,7,14&specid=26205&srvid=1167
Ответ
[
{
"id":814,
"lastName":"Акишина",
"firstName":"Елена",
"secondName":"Николаевна",
"filialIds":[
7
],
"price":null,
"roomNum":"109"
},
{
"id":1094,
"lastName":"Черкашина",
"firstName":"Галина",
"secondName":"Михайловна",
"filialIds":[
1
],
"price":null,
"roomNum":"204"
}
]
Описание ответа:
• id - идентификатор врача;
• lastName - фамилия;
• firstName - имя;
• secondName - отчество;
• filialIds - идентификаторы филиалов;
• price - предварительная стоимость услуги врача;
• roomNum - номер кабинета.
14
Минимальная и максимальная даты талонов в каждом месяце
GET /rnumb/mounthdate
Используемые DB процедуры
pkg_ws_webrec.get_rnumb_date
Входные параметры
• filialid - идентификатор или идентификаторы филиалов;
• specid - идентификатор специальности;
• doctorid - идентификатор врача;
• srvid - идентификатор или идентификаторы услуги;
• paidmode - платный прием (1 - платный прием, (0, null) - бесплатный прием);
• begin_date - дата и время начала поиска талонов (формат yyyy-MM-dd’T’HH:mm:ss);
• end_date - дата и время конца поиска талонов (формат yyyy-MM-dd’T’HH:mm:ss).
Пример GET запроса
&begin_date=2017-09-01T00:00:00&end_date=2017-11-30T00:00:00
Ответ
[
{
"beginDate":"2017-09-01T00:00:00",
"endDate":"2017-09-30T17:40:00"
},
{
"beginDate":"2017-10-01T10:00:00",
"endDate":"2017-10-31T20:00:00"
},
{
"beginDate":"2017-11-01T08:00:00",
"endDate":"2017-11-30T21:40:00"
}
]
Описание ответа:
• beginDate - дата первого талона в месяце;
• endDate - дата последнего талона в месяце.
15
Количество талонов в каждый из дней
GET /api/rnumb/count
Используемые DB процедуры
pkg_ws_webrec.get_rnumb_count
Входные параметры
• filialid - идентификатор или идентификаторы филиалов;
• specid - идентификатор специальности;
• doctorid - идентификатор врача;
• srvid - идентификатор или идентификаторы услуги;
• paidmode - платный прием (1 - платный прием, (0, null) - бесплатный прием);
• begin_date - дата и время начала поиска талонов (формат yyyy-MM-dd’T’HH:mm:ss);
• end_date - дата и время конца поиска талонов (формат yyyy-MM-dd’T’HH:mm:ss).
Пример GET запроса
&begin_date=2017-11-01T00:00:00&end_date=2017-11-04T00:00:00
Ответ
[
{
"count":302,
"date":"2017-11-01"
},
{
"count":389,
"date":"2017-11-02"
},
{
"count":6,
"date":"2017-12-03"
},
{
"count":3,
"date":"2017-11-04"
}
]
Описание ответа:
• count - количество талонов на дату;
• date - дата.
16
Талоны
GET /api/rnumb
Используемые DB процедуры
pkg_ws_webrec.get_rnumb_list
Входные параметры
• filialid - идентификатор или идентификаторы филиалов;
• specid - идентификатор специальности;
• doctorid - идентификатор врача;
• srvid - идентификатор или идентификаторы услуги;
• paidmode - платный прием (1 - платный прием, (0, null) - бесплатный прием);
• begin_date - дата и время начала поиска талонов (формат yyyy-MM-dd’T’HH:mm:ss);
• end_date - дата и время конца поиска талонов (формат yyyy-MM-dd’T’HH:mm:ss).
Пример GET запроса
http://localhost:8090/appt-web/api/rnumb?filialid=1,7,14&specid=26205
&begin_date=2017-11-01T00:00:00&end_date=2017-11-04T00:00:00
Ответ
[
{
"id":1335036,
"beginDate":"2017-11-01T10:00:00",
"endDate":"2017-11-01T10:30:00",
"filialId":1,
"payStatus":0,
"price":null
},
{
"id":1334540,
"beginDate":"2017-11-01T10:00:00",
"endDate":"2017-11-01T10:30:00",
"filialId":1,
"payStatus":0,
"price":null
},
{
"id":1335252,
"beginDate":"2017-11-02T10:00:00",
"endDate":"2017-11-02T10:30:00",
"filialId":1,
"payStatus":0,
"price":null
}
]
Описание ответа:
• id - идентификатор талона;
• beginDate - дата и время начала приема;
• endDate - дата и время начала приема;
• filialId - идентификатор филиала;
• payStatus - статус платности (1 - платный, 0 - бесплатный);
• price - предварительная стоимость.
17
Захват талона
POST /api/rnumb/{rnumbId}/lock
Используемые DB процедуры
pkg_ws_webrec.set_numb_blstatus
Входные параметры
• rnumbId - идентификатор талона.
Пример POST запроса
Тело запроса
{
"id":1335252
}
Описание запроса:
• id - идентификатор талона.
Ответ
{
"code":0,
"text":null
}
Описание ответа:
• code - код ошибки из процедуры (0 - ошибок нет);
• text - сообщение о ошибке из процедуры.
18
Освобождение талона
POST /api/rnumb/{rnumbId}/unlock
Используемые DB процедуры
pkg_ws_webrec.delete_rnumb
Входные параметры
• rnumbId - идентификатор талона.
Пример POST запроса
Тело запроса
{
"id":1335252
}
Описание запроса:
• id - идентификатор талона.
Ответ
{
"code":0,
"text":null
}
Описание ответа:
• code - код ошибки из процедуры (0 - ошибок нет);
• text - сообщение о ошибке из процедуры.
19
Информация о талоне
GET /api/rnumb/{rnumbId}/info
Используемые DB процедуры
pkg_ws_webrec.get_rnumb_info
Входные параметры
• rnumbId - идентификатор номерка.
Пример GET запроса
Ответ
{
"id":1335252,
"beginDate":"2017-11-29T10:00:00",
"endDate":"2017-11-29T10:30:00",
"roomNum":"204",
"spec":"Врач ультразвуковой диагностики",
"srv":null,
"doctorLastname":"Соснина",
"doctorFirstname":"Елена",
"doctorSecondname":"Андреевна",
"filialName":"Медицинский центр",
"address":"Измайловский проспект 26",
"phone":"337 70 77",
"payStatus":0,
"price":null
}
Описание ответа:
• id - идентификатор талона;
• beginDate - дата и время начала приема;
• endDate - дата и время окончания приема;
• roomNum - номер кабинета;
• spec - специальность врача;
• srv - наименование услуги;
• doctorLastname - фамилия врача;
• doctorFirstname - имя врача;
• doctorSecondname - отчество врача;
• filialName - название филиала;
• address - адрес филиала;
• phone - телефон филиала;
• payStatus - платный талон (0 - бесплатный, 1 - платный);
• price - предварительная стоимость приема.
20
Методы с авторизацией
Создание пациента
POST /api/patient
Используемые DB процедуры
pkg_ws_webrec.create_patient
Пример POST запроса
Тело запроса
{
"lastname":"тестов",
"firstname":"алексей",
"secondname":"васильевич",
"birthday":"2017-05-03",
"email":"samoukin@reshenie-soft.ru",
"phone":null
}
Описание запроса:
• lastname - фамилия;
• firstname - имя;
• secondname - отчество;
• birthday - дата рождения (формат yyyy-MM-dd);
• email - адрес электронной почты;
• phone - телефон.
Ответ
{
"code":0,
"text":null,
"patientId":384548457
}
Описание ответа:
• code - код ошибки из процедуры (0 - ошибок нет);
• text - сообщение о ошибке из процедуры;
• patientId - идентификатор созданного пациента.
21
Запись пациента на прием
POST /api/rnumb/{rnumbId}/appointment
Используемые DB процедуры
pkg_ws_webrec.patient_appointment
Пример POST запроса
Тело запроса
{
"rnumbId":1335252,
"patientId":247627,
"srvIds":[1,2,3],
"note":null
}
Описание запроса:
• rnumbId - идентификатор номерка;
• patientId - идентификатор пациента;
• srvIds - идентификаторы услуг (необязательный параметр);
• note - коментарий к номерку (необязательный параметр, если null игнорируется).
Ответ
{
"code":0,
"text":"Успешно"
}
Описание ответа:
• code - код ошибки из процедуры (0 - ошибок нет);
• text - сообщение о ошибке из процедуры.
22
Отмена записи пациента на прием
POST /api/rnumb/{rnumbId}/cancellappointment
Используемые DB процедуры
pkg_ws_webrec.cancel_appointment
Пример POST запроса
Тело запроса
{
"rnumbId":1335252,
"patientId":247627
}
Описание запроса:
• rnumbId - идентификатор номерка;
• patientId - идентификатор пациента.
Ответ
{
"code":0,
"text":null
}
Описание ответа:
• code - код ошибки из процедуры (0 - ошибок нет);
• text - сообщение о ошибке из процедуры.
23
Предстоящие записи пациента на прием
GET /api/rnumb/info
Используемые DB процедуры
pkg_ws_webrec.get_rnumbs_by_patient
Пример GET запроса
Ответ
[
{
"id":1335252,
"beginDate":"2017-11-29T10:00:00",
"endDate":"2017-11-29T10:30:00",
"roomNum":"204",
"spec":"Врач ультразвуковой диагностики",
"srv":null,
"doctorLastname":"Соснина",
"doctorFirstname":"Елена",
"doctorSecondname":"Андреевна",
"filialName":"Медицинский центр",
"address":"Измайловский проспект 26",
"phone":"337 70 77",
"payStatus":0,
"price":null
}
]
AB
Описание ответа:
• id - идентификатор талона;
• beginDate - дата и время начала приема;
• endDate - дата и время окончания приема;
• roomNum - номер кабинета;
• spec - специальность врача;
• srv - наименование услуги;
• doctorLastname - фамилия врача;
• doctorFirstname - имя врача;
• doctorSecondname - отчество врача;
• filialName - название филиала;
• address - адрес филиала;
• phone - телефон филиала;
• payStatus - платный талон (0 - бесплатный, 1 - платный);
• price - предварительная стоимость приема.
24
Отсылка на почту собщения о успешной записи на прием
POST /api/rnumb/{rnumbId}/send/email/apptok
Используемые DB процедуры
pkg_ws_webrec.get_patient_by_id pkg_ws_webrec.get_rnumb_by_patient
Пример POST запроса
Тело запроса
{
"rnumbId":1335252,
"patientId":247627
}
Описание запроса:
• rnumbId - идентификатор номерка;
• patientId - идентификатор пациента.
Ответ
{"result":true}
25
|