Портал для пациентов
Создать с AI-агентом
Бэкенд портала пациента

Шаблон бэкенда приложения портала пациента
Доставляйте результаты лабораторных исследований, управляйте планами лечения и обеспечивайте безопасный обмен сообщениями между врачом и пациентом

Готовый к эксплуатации бэкенд портала пациента на Back4app с безопасной доставкой результатов лабораторных исследований, управлением планами лечения, обменом сообщениями с врачами, связыванием встреч и централизованными журналами аудита. Включает диаграмму ER, словарь данных, схему JSON, API-площадку и запрос AI Agent для быстрого запуска.

Основные выводы

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

  1. Модель данных, ориентированная на пациентаХраните идентичность пациента, результаты анализов, лечения и сообщения по отдельности, но связывая их для ясного происхождения и авторизации.
  2. Безопасные сообщенияВетвистые сообщения с вложениями между пациентами и Provider с явными уведомлениями о прочтении и контрольными сроками хранения.
  3. Версионированные результаты анализовХраните результаты анализов с данными о происхождении и метаданными версий, чтобы обновленные отчеты и дополнительные материалы отслеживались.
  4. Цикл жизни плана леченияУправляйте черновиками плана лечения, утверждениями от Provider, подтверждением пациентом и историей версий.
  5. Логирование, соответствующее требованиямЦентрализованный класс AuditLog записывает чувствительные события для проверки, мониторинга и соблюдения норм.

Что такое шаблон бекенда приложения портала для пациентов?

Back4app — это бекенд как сервис (BaaS) для быстрой доставки. Шаблон бекенда приложения портала для пациентов — это готовая к работе схема для профилей пациентов, лабораторных результатов, планов лечения, безопасного обмена сообщениями, записей на прием и журналов аудита. Подключите предпочитаемый фронтенд (React, Flutter, Next.js и другие) и сделайте доставку быстрее.

Лучше всего для:

Порталы для пациентовТелемедицинские сообщенияsecure доставка результатов лабораторных исследованийУправление планом леченияКоммуникация между клиницистом и пациентомКоманды по созданию прототипов, соответствующих требованиям HIPAA

Обзор

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

Этот шаблон определяет PatientProfile, LabResult, TreatmentPlan, Message, ProviderProfile, Appointment и AuditLog с правилами собственности и ролей, чтобы команды могли быстро и безопасно реализовывать пациентские порталы.

Основные функции портала пациентов

Каждая карточка технологии в этом центре использует одну и ту же схему бэкенда портала пациента с PatientProfile, LabResult, TreatmentPlan, Message, ProviderProfile, Appointment и AuditLog.

Профиль пациента и аутентификация

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

Версия результатов лабораторных исследований

LabResult хранит тип теста, исходные данные результата, дату отчета, версию и происхождение Provider.

Жизненный цикл плана лечения

TreatmentPlan хранит содержимое плана, одобрителя Provider, статус (черновик, активный, завершенный) и эффективное окно.

Безопасные сообщения между врачом и пациентом

Сообщение поддерживает темы, вложения, указатели отправителя/получателя и статус доставки/чтения.

Связывание назначений

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

Централизованные журналы аудита

AuditLog фиксирует личность актера, тип действия, контекст сущности и метаданные полезной нагрузки для соблюдения норм.

Почему строить бэкенд вашего приложения для портала пациентов с Back4app?

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

  • Безопасная доставка клинических данных: Встроенная аутентификация и шаблоны ACL/CLP позволяют вам контролировать, какие пользователи могут видеть каждый результат анализа, план лечения или сообщение.
  • Аудит и происхождение: AuditLog фиксирует, кто просматривал, публиковал или изменял конфиденциальные записи, чтобы вы могли поддерживать соответствие требованиям и отладку.
  • Сообщения и уведомления: Потоковые сообщения, вложения и необязательные обновления в реальном времени делают разговоры между клиницистами и пациентами гладкими и своевременными.

Быстро создайте безопасный бэкенд портала пациентов и итеративно улучшайте клинические рабочие процессы, а не инфраструктуру бэкенда.

Основные преимущества

Бэкенд портала пациента, который подчеркивает конфиденциальность, происхождение и быструю доставку.

Ускоренные впечатления пациентов

Доставляйте просмотры лабораторных результатов, планы лечения и безопасные сообщения быстрее, повторно используя проверенный контракт бэкенда.

Сильное происхождение данных

Версионирование лабораторных результатов и планов лечения, чтобы клинические изменения были проверяемыми и отслеживаемыми.

Тонкие настройки разрешений

Защитите чувствительные элементы с помощью ACL/CLP и проверок ролей, чтобы только разрешенные клиницисты и пациенты могли к ним получить доступ.

Интегрированное сообщение

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

Логирование, готовое к соблюдению норм

Централизованный AuditLog поддерживает проверки, расследование инцидентов и отчетность по соблюдению норм.

AI-помощник для начальной настройки

Начните разработку с хорошо подобранного промпта AI-Agent, который структурирует схему, ACL и базовый код интеграции.

Готовы создать безопасный портал для пациентов?

Позвольте AI-агенту Back4app создать бэкенд вашего портала для пациентов и сгенерировать профили пациентов, результаты лабораторных исследований, планы лечения, сообщения и журналы аудита из одного запроса.

Бесплатно для начала — 50 запросов к AI-агенту в месяц, без необходимости в кредитной карте

Технический стек

Все включено в этот шаблон бэкенда портала для пациентов.

Фронтенд
13+ технологий
Бэкенд
Back4app
База данных
MongoDB
Аутентификация
Встроенная аутентификация + сессии
API
REST и GraphQL
В реальном времени
Live Queries

ER диаграмма

Модель связи сущностей для схемы бэкенда Портала Пациента.

Просмотреть источник диаграммы
Mermaid
erDiagram
    PatientProfile ||--o{ LabResult : "has"
    PatientProfile ||--o{ TreatmentPlan : "receives"
    PatientProfile ||--o{ Message : "context for"
    PatientProfile ||--o{ Appointment : "scheduled in"
    _User ||--o{ Message : "sends/receives"
    _User ||--o{ TreatmentPlan : "authors"
    _User ||--o{ Appointment : "provides"

    PatientProfile {
        String objectId PK
        Pointer user FK
        String medicalRecordNumber
        String displayName
        Date dateOfBirth
        String primaryClinic
        Boolean isActive
        Date createdAt
        Date updatedAt
    }

    LabResult {
        String objectId PK
        Pointer patient FK
        Pointer orderedBy FK
        String testCode
        String testName
        String resultValue
        String units
        String referenceRange
        String status
        Date publishedAt
        Array attachments
        Date createdAt
        Date updatedAt
    }

    TreatmentPlan {
        String objectId PK
        Pointer patient FK
        Pointer createdBy FK
        String summary
        String details
        String status
        Date startDate
        Date endDate
        Date createdAt
        Date updatedAt
    }

    Message {
        String objectId PK
        String conversationId
        Pointer from FK
        Pointer to FK
        Pointer patient FK
        String body
        Array attachments
        Boolean isRead
        Date sentAt
        Date createdAt
        Date updatedAt
    }

    Appointment {
        String objectId PK
        Pointer patient FK
        Pointer provider FK
        Date startAt
        Date endAt
        String location
        String status
        String reason
        Date createdAt
        Date updatedAt
    }

    AuditLog {
        String objectId PK
        Pointer actor FK
        String entityType
        String entityId
        String action
        String summary
        Object metadata
        Date createdAt
        Date updatedAt
    }

Поток интеграции

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

Просмотреть источник диаграммы
Mermaid
sequenceDiagram
  participant Patient
  participant App as Patient Portal App
  participant Clinician
  participant Back4app as Back4app Cloud

  Patient->>App: Sign in with email or SSO
  App->>Back4app: POST /login (credentials/SSO token)
  Back4app-->>App: Return Session Token + Patient context

  Patient->>App: Open Dashboard (profile & recent labs)
  App->>Back4app: GET /classes/PatientProfile?where={"user":Pointer("_User", "u123")}
  Back4app-->>App: PatientProfile object
  App->>Back4app: GET /classes/LabResult?where={"patient":Pointer("PatientProfile","p123")}&order=-publishedAt
  Back4app-->>App: List of LabResult (latest first)

  Patient->>App: View active Treatment Plan
  App->>Back4app: GET /classes/TreatmentPlan?where={"patient":Pointer("PatientProfile","p123"),"status":"active"}
  Back4app-->>App: TreatmentPlan object

  Patient->>App: Send secure message to clinician
  App->>Back4app: POST /classes/Message (conversationId, body, to: Pointer(_User, clinicianId))
  Back4app-->>App: Message objectId

  Back4app-->>App: LiveQuery -> new Message or LabResult update
  App-->>Patient: Real-time notification (new message / result available)

  Clinician->>Back4app: Update LabResult (finalize)
  Back4app-->>App: LiveQuery event -> App fetches updated LabResult
  App-->>Patient: Alert: "New lab result available"

Словарь данных

Полная справка по полям для каждого класса в схеме Портала Пациента.

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierАвто
userPointer<_User>Linked Back4app user account
medicalRecordNumberStringUnique MRN for the patient
displayNameStringPatient full name shown in UI
dateOfBirthDatePatient date of birth
primaryClinicStringPrimary clinic or provider group
isActiveBooleanActive portal access flag
createdAtDateAuto-generated creation timestampАвто
updatedAtDateAuto-generated last-update timestampАвто

9 поля в PatientProfile

Безопасность и разрешения

Как стратегии ACL, CLP и шифрования защищают результаты лабораторных исследований, планы лечения, сообщения и журналы аудита.

Доступ и право собственности на основе ролей

Применяйте ACL, чтобы пациенты могли видеть свои собственные записи, а Provider могли видеть назначенные данные пациентов; CLP предотвращают несанкционированные операции с классами.

Зашифрованные полезные нагрузки и вложения

Храните чувствительные блобы (вложения лабораторий, PDF-файлы) за подписанными URL и используйте шифрование на уровне хранения для защиты данных в покое.

Только добавляемые журналы аудита

Записывайте записи AuditLog с серверного кода Cloud Code, чтобы гарантировать, что пользователи не могут подделать исторические записи соответствия.

Схема (JSON)

Готовое определение схемы JSON для копирования в Back4app или использования в качестве справки по реализации.

JSON
{
  "classes": [
    {
      "className": "PatientProfile",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "user": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "medicalRecordNumber": {
          "type": "String",
          "required": true
        },
        "displayName": {
          "type": "String",
          "required": true
        },
        "dateOfBirth": {
          "type": "Date",
          "required": false
        },
        "primaryClinic": {
          "type": "String",
          "required": false
        },
        "isActive": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "LabResult",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "orderedBy": {
          "type": "Pointer",
          "required": false,
          "targetClass": "_User"
        },
        "testCode": {
          "type": "String",
          "required": false
        },
        "testName": {
          "type": "String",
          "required": true
        },
        "resultValue": {
          "type": "String",
          "required": false
        },
        "units": {
          "type": "String",
          "required": false
        },
        "referenceRange": {
          "type": "String",
          "required": false
        },
        "status": {
          "type": "String",
          "required": true
        },
        "publishedAt": {
          "type": "Date",
          "required": false
        },
        "attachments": {
          "type": "Array",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "TreatmentPlan",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "createdBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "summary": {
          "type": "String",
          "required": true
        },
        "details": {
          "type": "String",
          "required": false
        },
        "status": {
          "type": "String",
          "required": true
        },
        "startDate": {
          "type": "Date",
          "required": false
        },
        "endDate": {
          "type": "Date",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Message",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "conversationId": {
          "type": "String",
          "required": true
        },
        "from": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "to": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "body": {
          "type": "String",
          "required": true
        },
        "attachments": {
          "type": "Array",
          "required": false
        },
        "isRead": {
          "type": "Boolean",
          "required": true
        },
        "sentAt": {
          "type": "Date",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Appointment",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "patient": {
          "type": "Pointer",
          "required": true,
          "targetClass": "PatientProfile"
        },
        "provider": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "startAt": {
          "type": "Date",
          "required": true
        },
        "endAt": {
          "type": "Date",
          "required": true
        },
        "location": {
          "type": "String",
          "required": false
        },
        "status": {
          "type": "String",
          "required": true
        },
        "reason": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "AuditLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "actor": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "entityType": {
          "type": "String",
          "required": true
        },
        "entityId": {
          "type": "String",
          "required": true
        },
        "action": {
          "type": "String",
          "required": true
        },
        "summary": {
          "type": "String",
          "required": true
        },
        "metadata": {
          "type": "Object",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

Создайте с помощью AI-агента

Используйте AI-агента Back4app, чтобы сгенерировать приложение Портала Пациента из этого шаблона, включая схемы бэкенда, ACL и стартовую интеграцию фронтенда.

AI-агент Back4app
Готов к сборке
Создайте бэкенд Портала Пациента на Back4app с этой точной схемой и поведением.

Схема:
1. PatientProfile: user (указатель на пользователя, обязательное), fullName (строка, обязательное), dob (дата, необязательное), contact (объект), medicalRecordNumber (строка, обязательное, уникальное); objectId, createdAt, updatedAt.
2. ProviderProfile: user (указатель на пользователя, обязательное), specialty (строка), clinic (строка), contact (объект); objectId, createdAt, updatedAt.
3. LabResult: patient (указатель на PatientProfile, обязательное), Provider (указатель на ProviderProfile, обязательное), reportType (строка), resultData (объект), reportedAt (дата, обязательное), version (число, по умолчанию 1), attachments (массив файлов), visibility (строка: только для пациента, только для Provider, общий); objectId, createdAt, updatedAt.
4. TreatmentPlan: patient (указатель на PatientProfile, обязательное), Provider (указатель на ProviderProfile, обязательное), summary (строка), details (объект), status (строка: черновик, активный, завершенный), effectiveFrom (дата), effectiveTo (дата), version (число); objectId, createdAt, updatedAt.
5. Message: sender (указатель на пользователя, обязательное), recipient (указатель на пользователя, обязательное), threadId (строка, обязательное), body (строка), attachments (массив файлов), status (строка: отправлено, доставлено, прочитано), sentAt (дата); objectId, createdAt, updatedAt.
6. Appointment: patient (указатель на PatientProfile, обязательное), Provider (указатель на ProviderProfile, обязательное), scheduledAt (дата, обязательное), status (строка: запланировано, отменено, завершено), location (строка); objectId, createdAt, updatedAt.
7. AuditLog: actor (указатель на пользователя, обязательное), action (строка, обязательное), entityType (строка, обязательное), entityId (строка, обязательное), payload (объект, необязательное), createdAt (дата); objectId, createdAt, updatedAt.

Безопасность:
- Принудительное соблюдение ACL, чтобы пациенты могли только читать свои записи LabResult и TreatmentPlan. Provider видит назначенных пациентов. Используйте Cloud Code для чувствительных переходов и для записи записей AuditLog на стороне сервера. Защитите вложения подписанными URL и шифрованием хранения.

Аутентификация:
- Поддержка регистрации для пациентов и Provider; назначение ролей; безопасный вход и управление сессиями.

Поведение:
- Пациент входит в систему, получает последние версии LabResult и TreatmentPlans, отправляет сообщения в Provider потоки и получает уведомления. Provider публикует результаты лабораторных исследований и планы лечения; система записывает записи AuditLog для действий публикации.

Доставка:
- Приложение Back4app с схемой, CLP, ACL, хуками Cloud Code для публикации и аудита, а также стартовой интеграцией фронтенда для просмотра пациентами и Provider.

Нажмите кнопку ниже, чтобы открыть агента с заранее заполненным шаблоном.

Это базовый запрос без суффикса технологии. Вы можете адаптировать сгенерированный фронтенд-стек позже.

Развертывание за считанные минуты50 бесплатных подсказок / месяцКарта не требуется

API Playground

Попробуйте REST и GraphQL конечные точки против схемы Портала Пациента. Ответы используют фиктивные данные и не требуют аккаунта Back4app.

common.loadingPlayground

Использует ту же схему, что и этот шаблон.

Выберите вашу технологию

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

Flutter Бэкенд портала пациента

React Бэкенд портала пациента

React Native Бэкенд портала пациента

Next.js Бэкенд портала пациента

JavaScript Бэкенд портала пациента

Android Бэкенд портала пациента

iOS Бэкенд портала пациента

Vue Бэкенд портала пациента

Angular Бэкенд портала пациента

GraphQL Бэкенд портала пациента

REST API Бэкенд портала пациента

PHP Бэкенд портала пациента

.NET Бэкенд портала пациента

Что вы получаете с каждой технологией

Каждый стек использует одну и ту же схему бэкенда Patient Portal и API контракты.

Унифицированная структура данных пациента

Управляйте и получайте доступ ко всей информации о пациентах в одной схеме.

Безопасная связь для портал для пациентов

Обеспечьте безопасное общение между пациентами и представителями здравоохранения Provider.

Запись на прием в реальном времени

Позвольте пациентам без усилий записываться на прием и управлять им.

Комплексное отслеживание результатов лабораторных анализов

Позвольте пациентам безопасно просматривать и отслеживать свои результаты анализов.

Контроль доступа к конфиденциальным данным

Убедитесь, что только уполномоченные лица могут просматривать записи пациентов.

REST/GraphQL API для портал для пациентов

Легко интегрируйтесь с различными фронтендами, используя гибкие API.

Сравнение фреймворков портала для пациентов

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

ФреймворкВремя настройкиПреимущество портала для пациентовТип SDKПоддержка ИИ
Быстрая (5 мин) настройкаЕдиная кодовая база для портала пациентов на мобильных устройствах и в вебе.Typed SDKПолный
~5 минБыстрая веб-панель для портала пациентов.Typed SDKПолный
Около 5 минКросс-платформенное мобильное приложение для портала пациентов.Typed SDKПолный
Менее 5 минутСерверное веб-приложение для портала пациентов.Typed SDKПолный
~3 минЛегкая веб-интеграция для портала пациентов.Typed SDKПолный
Быстрая (5 мин) настройкаНативное приложение Android для портала пациентов.Typed SDKПолный
~5 минНативное приложение iOS для портала пациентов.Typed SDKПолный
Около 5 минReact-интерфейс для портала пациентов.Typed SDKПолный
Менее 5 минутКорпоративное веб-приложение для портала пациентов.Typed SDKПолный
Быстрая (2 мин) настройкаГибкий API GraphQL для портала пациентов.GraphQL APIПолный
~2 минREST API интеграция для портала пациентов.REST APIПолный
Менее 5 минСерверный PHP бэкенд для портала пациентов.REST APIПолный
Около 5 мин.NET бэкенд для портала пациентов.Typed SDKПолный

Время настройки отражает ожидаемую продолжительность от начала проекта до первого входа пациента и запроса лабораторного результата с использованием этой схемы шаблона.

Часто задаваемые вопросы

Общие вопросы о создании бэкенда портала пациента с помощью этого шаблона.

Что такое бэкенд Patient Portal?
Что включает в себя шаблон Портала Пациента?
Почему стоит использовать Back4app для портала пациента?
Как мне получить последний результат анализа и его Provider в одном запросе?
Как мне отметить сообщение как прочитанное?
Может ли React Native кешировать планы лечения для оффлайн-использования?
Как мне предотвратить несанкционированное распространение PDF-файлов лаборатории?
Как лучше всего представить контекст записи на прием на мобильных устройствах?
Как работает процесс регистрации аудита от начала до конца?
Как я могу поддержать подтверждение пациентом плана лечения?

Доверие разработчиков по всему миру

Присоединяйтесь к командам, которые быстрее создают безопасные пациентские порталы с шаблонами Back4app

G2 Users Love Us Badge

Готовы создать приложение для своего пациентского портала?

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

Выберите технологию