napopravku / rta-api-service-client
Клиент для НаПоправку RTA API
Requires
- php: >=8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.2
- illuminate/support: ^9.0
This package is not auto-updated.
Last update: 2025-04-04 13:40:57 UTC
README
Клиент для НаПоправку RTA API.
Установка
Рассмотрим установку и использование вне PHP проекта.
Для работы необходимы PHP версии 8.1 или новее и Composer. Вы можете использовать Docker окружение.
Настройка контейнера:
#Сборка и запуск контейнера
docker compose up -d --build
#Подключение к контейнеру docker compose exec php bash
Установите необходимые зависимости, выполнив команду:
composer i
Теперь библиотека готова к использованию.
Правила работы с сервисом
Сервис предназначен для передачи информации о врачах, клиниках, услугах и расписании, а также получении информации о записях.
Документация к API
Данные | Частота передачи |
---|---|
Клиники | Раз в 6 часов или чаще |
Врачи | Раз в 6 часов или чаще |
Услуги | Раз в сутки до 19:00 по МСК |
Слоты | Раз в 10 минут или чаще |
Перед передачей актуальных слотов нужно обработать записи. Хорошая периодичность обработки - раз в 2 минуты. Необработанные записи отменяются через 10 минут после создания.
Алгоритм:
- Выполняется запрос
getAppointments
с параметромis_received
равнымfalse
. - Для каждой записи выполняется запрос
receiveAppointment
, который помечает запись как обработанную на стороне МИС.
Если вы передаёте слот с duration
отличным от null
, при обработке произойдёт разделение на слоты заданной длительности.
Пример:
{ "from": "16:00", "to": "17:00", "duration": 15 }
Результат:
[ { "from": "16:00", "to": "16:15" }, { "from": "16:15", "to": "16:30" }, { "from": "16:30", "to": "16:45" }, { "from": "16:45", "to": "17:00" } ]
Инициализация клиента
<?php //index.php use Napopravku\RtaApiClient\RemoteRtaApiClient; require 'vendor/autoload.php'; $client = new RemoteRtaApiClient(token: 'your_token');
Обновление клиник
/** @var ClinicListUpdateDTO $clinicListUpdateDto */ $clinicListUpdateDto = ClinicListUpdateFactory::fromArray([ 'clinics' => [ [ 'mis_clinic_id' => 'a', 'name' => 'Клиника A', 'comment' => 'Клиника A', ], [ 'mis_clinic_id' => 'b', 'name' => 'Клиника B', 'comment' => 'Клиника B', ], [ 'mis_clinic_id' => 'c', 'name' => 'Клиника C', 'comment' => 'Клиника C', ], ], ]); $result = $client->updateClinics($clinicListUpdateDto);
Получение клиник
/** @var ClinicListDTO $clinicListDto */ $clinicListDto = ClinicListFactory::fromArray([ 'with_doctors' => false, ]); $clinicListDto->paging->perPage = PagingDTO::MAX_PER_PAGE; $clinicListDto->sorting->sortBy = 'mis_clinic_id'; $clinicListDto->sorting->sortDir = SortingDTO::SORT_DIR_DESC; $result = $client->getClinics($clinicListDto);
Для конкретного запроса фабрикой создаётся объект DTO, далее объект передаётся в соответствующий метод клиента.
Значения свойств DTO могут редактироваться после создания.
Остальные запросы выполняются аналогичным образом.