Ссылка скопирована
որոնում

Пошаговая инструкция для партнера

Общий принцип работы

  1. Получить список доступных баз данных и филиалов GET: (https://api.medflex.ru/marketing/databases/)
  2. Создать сегмент с условиями отбора пациентов POST: (https://api.medflex.ru/marketing/segments/)
  3. Дождаться готовности сегмента (статус ready) GET: (https://api.medflex.ru/marketing/segments/)
  4. Получить список идентификаторов пациентов GET: (https://api.medflex.ru/marketing/segments/{segment_uuid}/)
  5. Запросить персональные данные по нужным пациентам POST: (https://api.medflex.ru/marketing/segments/{segment_uuid}/results/)
  6. После рассылки записать информацию о ней POST: (https://api.medflex.ru/marketing/mailings)

Все запросы требуют авторизации. Идентификаторы пациентов временные (действуют 24 часа) и привязаны к конкретному сегменту.


Шаг 1. Получить список баз данных

GET /marketing/databases/

Возвращает базы данных, к которым у вас есть доступ. Каждая база содержит один или несколько филиалов (lpu_ids).

Ответ:

{
  "count": 2,
  "results": [
    {
      "database_id": 1000,
      "database_name": "Клиника Здоровье",
      "lpu_ids": [10000, 10001]
    },
    {
      "database_id": 2000,
      "database_name": "Стоматология Улыбка",
      "lpu_ids": [20000]
    }
  ]
}

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


Шаг 2. Создать сегмент

POST /marketing/segments/

Сегмент описывает условия отбора пациентов. Обработка асинхронная: запрос возвращает UUID сегмента, результат будет доступен позже.

Примеры запросов: Примеры запросов по маркетинговым рассылкам

Минимальный запрос

{
  "name": "Активные за полгода",
  "database_id": 1000,
  "conditions": {
    "include": {
      "appointments": {
        "days_from": -180,
        "days_to": 0,
        "status": ["completed"]
      }
    }
  }
}

Полный запрос

{
  "name": "Мужчины 36-45, 5+ визитов к стоматологу, траты > 50к",
  "database_id": 1000,
  "exclude_patients": {
    "success_mailing_name": ["promo_dental"],
    "days_from_mailing": 30,
    "mass_imported_patients": true
  },
  "conditions": {
    "include": {
      "patients": {
        "gender": "male",
        "age_group": ["H"],
        "days_in_database_from": -365,
      },
      "appointments": {
        "lpu_ids": [10000, 10001],
        "days_from": -365,
        "days_to": 0,
        "status": ["completed"],
        "speciality_ids": [23000],
        "service_ids": [11000, 12000],
        "quantity_from": 5
      },
      "statistics": {
        "purchase_amount_from": 50000,
        "bill_avg_from": 8000
      }
    },
    "exclude": {
      "appointments": {
        "days_from": -30,
        "days_to": 0,
        "service_ids": [11000]
      }
    }
  }
}

Ответ (201):

{
  "segment_uuid": "d1c060a0-8375-4ff9-bce5-9bb03029256f"
}


Структура conditions

conditions состоит из двух блоков:

  • include - кого включить в сегмент;
  • exclude - кого исключить из результата.

Оба блока вычисляются независимо по всей базе. Результат: пациенты из include минус пациенты из exclude. Фильтры одного блока не влияют на другой.

Пример: если в include указан days_from: -180, а в exclude не указан период, то исключение будет по всей истории, а не за те же 6 месяцев.

Более подробно о теле запроса conditions: https://developer.medflex.ru/marketing/tag/marketing/marketing_segments_create


Шаг 3. Дождаться готовности

GET /marketing/segments/{segment_uuid}/

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

  • pending – В очереди на обработку – Ждать;
  • in_progress – Обрабатывается – Ждать;
  • ready – Готов – Запросить patient_ids (поле в ответе);
  • failed – Ошибка – Посмотреть error_detail, создать новый сегмент.

Ответ (статус ready):

{
  "segment_uuid": "d1c060a0-...",
  "name": "Активные за полгода",
  "status": "ready",
  "patients_count": 450,
  "error_detail": null,
  "patient_ids": [
    "5c437229-17a1-4b0a-9068-b6f2cf26455c",
    "5904d239-175e-42e5-8497-86aa1c4a3151",
    "..."
  ],
  "dt_created": "2026-03-20T09:00:00+03:00",
  "dt_requested": "2026-03-20T09:00:05+03:00",
  "dt_ready": "2026-03-20T09:00:35+03:00"
}

patient_ids - временные идентификаторы. Действуют 24 часа. После истечения сегмент автоматически пересчитается при следующем обращении.

Рекомендуемый интервал опроса: 10-30 секунд. Среднее время обработки: 15-60 секунд.


Шаг 4. Получить персональные данные

POST /marketing/segments/{segment_uuid}/results/

Запрашивайте данные порциями до 100 пациентов за раз.

Запрос:

{
  "patient_ids": [
    "5c437229-17a1-4b0a-9068-b6f2cf26455c",
    "5904d239-175e-42e5-8497-86aa1c4a3151"
  ]
}

Ответ:

[
  {
    "id": "5c437229-17a1-4b0a-9068-b6f2cf26455c",
    "first_name": "Семен",
    "patronymic": "Семеныч",
    "phone": "+79XXXXXXXXX",
    "email": "xxx@xxx.ru",
    "age_group": "F"
  },
  {
    "id": "5904d239-175e-42e5-8497-86aa1c4a3151",
    "first_name": "Мария",
    "patronymic": null,
    "phone": "+79XXXXXXXXX",
    "email": null,
    "age_group": null
  }
]

Поля patronymic, phone, email, age_group могут быть null, если данные отсутствуют в системе клиники.


Шаг 5. Записать информацию о рассылке

POST /marketing/mailings/

После отправки рассылки запишите, каким пациентам она была отправлена. Это нужно для работы exclude_patients в следующих сегментах.

Запрос:

{
  "patient_ids": [
    "5c437229-17a1-4b0a-9068-b6f2cf26455c",
    "5904d239-175e-42e5-8497-86aa1c4a3151"
  ],
  "success_mailing_name": "promo_dental",
  "segment_uuid": "d1c060a0-8375-4ff9-bce5-9bb03029256f"
}

Ответ (201):

{}

Записи хранятся 45 дней.


Удаление сегмента

DELETE /marketing/segments/{segment_uuid}/

Удаляет сегмент и очищает связанные данные.


Справочники

Врачи

GET /models/doctor/

Возвращает врачей с активным расписанием. Используйте doctor_ids из ответа в фильтрах сегмента.

Специальности

GET /models/speciality/

Возвращает специальности. При использовании speciality_ids в сегменте система автоматически найдет врачей нужных специальностей.

Услуги

GET /services/prices/?lpu_id=<Идентификатор клиники>

Возвращает доступные услуги. Используйте идентификаторы в поле service_ids.


Лимиты

  • Активных сегментов (pending, in_progress, ready) на одну базу – 100;
  • Готовых (ready) сегментов на одну базу – 10;
  • Пациентов в одном запросе /results/ – 100;
  • Срок жизни идентификаторов пациентов – 24 часа;
  • Минимальный размер сегмента – 30 пациентов;
  • Максимальный размер сегмента – 5% базы;
  • Лимит уникальных пациентов в месяц – 30%.