Сервер PHR
Создайте с помощью AI Agent
Бэкенд персональной медицинской записи

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

Готовый к производству бэкенд персональной медицинской записи на Back4app с хранением медицинских документов, история аллергий и вакцинаций, модели лекарств и лабораторий, согласие/расшаривание, журналы аудита, диаграмма сущностей и запрос AI Agent для быстрого запуска.

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

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

  1. Управляемые пользователем медицинские данныеДержите пациентов на первом месте: записи и согласия принадлежат и контролируются учетной записью пользователя, что позволяет выборочное деление с Provider.
  2. Структурированные клинические сущностиМоделируйте аллергии, вакцинации, медикаменты и результаты анализов с типизированными полями для точного запроса и отображения интерфейса пользователя.
  3. Загрузка документов и версионированиеХраните PDF-файлы, изображения и структурированные документы с метаданными и историей загрузки для поддержки клинических рабочих процессов.
  4. Обмен с учетом согласияПредоставьте детализированный доступ к Provider с помощью объектов согласия и временных разрешений.
  5. Готовность к межплатформенным решениямОбслуживайте мобильные, веб- и Provider порталы, используя унифицированные REST и GraphQL API с Live Queries для обновлений в реальном времени.

Что такое шаблон бэкенда приложения для персональной медицинской записи (PHR)?

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

Лучшее для:

Приложений для здоровья, ориентированных на пациентаПриложения для записи вакцинации и иммунизацииЦифровые хранилища медицинских документовУправление согласием пациентов ProviderЛичные трекеры медикаментов и аллергийКоманды создают MVP здоровья на основе BaaS

Обзор

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

Этот шаблон определяет HealthDocument, Allergy, Immunization, Medication, LabResult, Provider, Consent и AuditLog с правилами владения и расширяемыми рабочими процессами, чтобы команды могли быстро и законно реализовать приложения PHR.

Основные функции PHR

Каждая карточка технологии в этом хабе использует одну и ту же бэкэнд-схему PHR с HealthDocument, Allergy, Immunization, Medication, LabResult, Provider, Consent и AuditLog.

Склад медицинских документов

Загружайте и версиируйте PDF, изображения и структурированные записи с метаданными и указателями владельцев.

Отслеживание аллергий и Reaction

Записывайте аллергены, Reaction, степень тяжести и дату начала, связанные с владельцем.

История иммунизации и вакцинации

Запишите название вакцины, дату введения, партию и ссылку на Provider.

Списки лекарств и расписания

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

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

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

Управление согласием и обменом

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

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

Записывайте актера, действие, объект и метаданные нагрузок для отслеживания.

Почему стоит создать свой бэкенд PHR с Back4app?

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

  • Владение данными первоочередного пользователя: Реализуйте правила владения и объекты согласия, чтобы пациенты сохраняли контроль над тем, кто может просматривать или загружать их записи.
  • Безопасное хранение документов и метаданных: Загружайте клинические документы с метаданными, версиями и указателями на структурированные данные, такие как лабораторные исследования и иммунизации.
  • Аудитируемость + гибкость API: Сохраняйте журналы аудита для событий общего доступа и изменений записей, предоставляя REST и GraphQL для веб- и мобильных клиентов.

Быстро создайте бэкенд PHR с приоритетом на конфиденциальность с масштабируемым хранилищем, авторизацией и API на всех платформах.

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

Бэкенд PHR, который помогает вам предоставлять ориентированные на конфиденциальность медицинские услуги, сохраняя данные структурированными и подлежащими аудиту.

Скорость выхода на рынок

Начните с полного схемы PHR, а не проектируйте клинические единицы и согласия с нуля.

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

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

Совместимые модели данных

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

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

Используйте ACL/CLP и объекты согласия, чтобы доступ был явным и подлежащим аудиту.

Надежный аудитный след

Записывайте события доступа и обмена для прозрачности и соблюдения норм.

Помощь ИИ в начальном процессе

Быстро создавайте скелет бэкенда и инструкции по интеграции с предварительно подготовленным запросом ИИ-агента.

Готовы создать ориентированную на пользователя Личную медицинскую карту?

Позвольте ИИ-агенту Back4app скелетировать ваш бэкенд PHR и генерировать документы, аллергии, вакцинации, согласия и журналы аудита из одного запроса.

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

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

Все включено в этот шаблон бекенда PHR.

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

ER-диаграмма

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

Посмотреть источник диаграммы
Mermaid
erDiagram
    Profile ||--o{ MedicalDocument : "owns"
    Profile ||--o{ Allergy : "has"
    Profile ||--o{ Vaccination : "has"
    Profile ||--o{ SharedAccess : "grants"
    Profile ||--o{ EmergencyContact : "links to"

    MedicalDocument }o--|| Profile : "profile"
    Vaccination }o--|| Profile : "profile"
    Allergy }o--|| Profile : "profile"
    SharedAccess }o--|| Profile : "profile"
    SharedAccess }o--|| _User : "grantee"

    Profile {
        String objectId PK
        Pointer user FK
        String fullName
        Date birthDate
        String gender
        String bloodType
        String primaryCareProvider
        String notes
        Date createdAt
        Date updatedAt
    }

    MedicalDocument {
        String objectId PK
        Pointer profile FK
        File file
        String documentType
        String title
        String description
        Array<String> tags
        Date uploadedAt
        Boolean isShared
        Date createdAt
        Date updatedAt
    }

    Allergy {
        String objectId PK
        Pointer profile FK
        String substance
        String severity
        String reaction
        String notes
        Date recordedAt
        Boolean isActive
        Date createdAt
        Date updatedAt
    }

    Vaccination {
        String objectId PK
        Pointer profile FK
        String vaccineName
        Date dateAdministered
        String dose
        String lotNumber
        String provider
        Date nextDoseDate
        Pointer proofDocument FK
        Date createdAt
        Date updatedAt
    }

    SharedAccess {
        String objectId PK
        Pointer profile FK
        Pointer grantee FK
        String accessLevel
        Array<String> scope
        Date expiresAt
        Pointer createdBy FK
        Date createdAt
        Date updatedAt
    }

    EmergencyContact {
        String objectId PK
        Pointer profile FK
        String name
        String relationship
        String phone
        String notes
        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 User
  participant App as Personal Health Record (PHR) App
  participant Back4app as Back4app Cloud

  User->>App: Login with email (patient) or OAuth (clinician)
  App->>Back4app: POST /login
  Back4app-->>App: Session token + user profile

  User->>App: List my vaccinations and allergies
  App->>Back4app: GET /classes/Vaccination?where={"profile":{"__type":"Pointer","className":"Profile","objectId":"profileId"}}
  Back4app-->>App: Vaccination and Allergy records

  User->>App: Upload lab result PDF
  App->>Back4app: POST /files -> create MedicalDocument with file pointer
  Back4app-->>App: File object + MedicalDocument.objectId

  User->>App: Share record with Dr. Lee for 48h
  App->>Back4app: POST /classes/SharedAccess with accessLevel and expiresAt
  Back4app-->>App: SharedAccess.objectId + notification

  Back4app-->>App: Live Query event: MedicalDocument updated by clinician
  App-->>User: Notify patient in-app / refresh documents list

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

Полное справочное пособие по полям для каждого класса в схеме PHR.

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierАвто
userPointer<_User>Linked Back4app user account (patient or caregiver)
fullNameStringPatient full name
birthDateDateDate of birth
genderStringGender identity
bloodTypeStringBlood type (e.g. A+, O-)
primaryCareProviderStringName or clinic of primary care provider
notesStringFree-text health notes or summary
createdAtDateAuto-generated creation timestampАвто
updatedAtDateAuto-generated last-update timestampАвто

10 поля в Profile

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

Как ACL, CLP, объекты согласия и Cloud Code обеспечивают безопасность личных записей здоровья и их обмена.

Записи, принадлежащие пациенту

Установите право собственности и ACL так, чтобы записи HealthDocument, Allergy, Immunization, Medication и LabResult были доступны для чтения и записи только владельцем записи и уполномоченными Provider.

Дел partage на основе согласия

Используйте класс Consent для предоставления доступа Provider с явным объемом и сроком действия; Cloud Code обеспечивает проверки согласия на конечных точках чтения/скачивания.

Логи аудита только для добавления

Сохраняйте записи AuditLog только для добавления для стандартных пользователей; только доверенные потоки бэкенда или администраторы могут записывать или управлять историческими логами.

Схема (JSON)

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

JSON
{
  "classes": [
    {
      "className": "Profile",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "user": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "fullName": {
          "type": "String",
          "required": true
        },
        "birthDate": {
          "type": "Date",
          "required": false
        },
        "gender": {
          "type": "String",
          "required": false
        },
        "bloodType": {
          "type": "String",
          "required": false
        },
        "primaryCareProvider": {
          "type": "String",
          "required": false
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "MedicalDocument",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "profile": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Profile"
        },
        "file": {
          "type": "File",
          "required": true
        },
        "documentType": {
          "type": "String",
          "required": true
        },
        "title": {
          "type": "String",
          "required": true
        },
        "description": {
          "type": "String",
          "required": false
        },
        "tags": {
          "type": "Array",
          "required": false
        },
        "uploadedAt": {
          "type": "Date",
          "required": true
        },
        "isShared": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Allergy",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "profile": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Profile"
        },
        "substance": {
          "type": "String",
          "required": true
        },
        "severity": {
          "type": "String",
          "required": true
        },
        "reaction": {
          "type": "String",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "recordedAt": {
          "type": "Date",
          "required": true
        },
        "isActive": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Vaccination",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "profile": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Profile"
        },
        "vaccineName": {
          "type": "String",
          "required": true
        },
        "dateAdministered": {
          "type": "Date",
          "required": true
        },
        "dose": {
          "type": "String",
          "required": false
        },
        "lotNumber": {
          "type": "String",
          "required": false
        },
        "provider": {
          "type": "String",
          "required": false
        },
        "nextDoseDate": {
          "type": "Date",
          "required": false
        },
        "proofDocument": {
          "type": "Pointer",
          "required": false,
          "targetClass": "MedicalDocument"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "SharedAccess",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "profile": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Profile"
        },
        "grantee": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "accessLevel": {
          "type": "String",
          "required": true
        },
        "scope": {
          "type": "Array",
          "required": false
        },
        "expiresAt": {
          "type": "Date",
          "required": false
        },
        "createdBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "_User"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "EmergencyContact",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "profile": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Profile"
        },
        "name": {
          "type": "String",
          "required": true
        },
        "relationship": {
          "type": "String",
          "required": true
        },
        "phone": {
          "type": "String",
          "required": true
        },
        "notes": {
          "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 Agent

Используйте AI Agent Back4app для создания реального приложения Личной Медицинской Записи из этого шаблона, включая фронтенд, бэкенд, аутентификацию и рабочие процессы согласия.

Back4app AI Agent
Готовы строить
Создайте бэкэнд Личного Здоровья (PHR) на Back4app с этой точной схемой и поведением.

Схема:
1. HealthDocument: владелец (Указатель на Пользователя, обязательный), название (Строка, обязательный), файл (Файл, обязательный), теги (Массив, необязательный), версия (Число, по умолчанию 1), createdAt, updatedAt (системные).
2. Allergy: владелец (Указатель на Пользователя, обязательный), вещество (Строка, обязательный), Reaction (Строка, необязательный), тяжесть (Строка: легкая, умеренная, тяжелая, обязательная), дата возникновения (Дата, необязательная).
3. Immunization: владелец (Указатель на Пользователя, обязательный), название вакцины (Строка, обязательная), введена (Дата, обязательная), номер партии (Строка, необязательная), Provider (Указатель на Provider, необязательный).
4. Medication: владелец (Указатель на Пользователя, обязательный), название (Строка, обязательная), доза (Строка, необязательная), частота (Строка, необязательная), инструкции (Строка, необязательная), активен (Булев, по умолчанию true).
5. LabResult: владелец (Указатель на Пользователя, обязательный), название теста (Строка, обязательная), значение (Число или Строка), единицы (Строка, необязательная), референсный диапазон (Строка, необязательная), дата (Дата, обязательная), вложение (Указатель на HealthDocument, необязательный).
6. Provider: название (Строка, обязательная), systemId (Строка, необязательная), контакт (Объект, необязательный).
7. Consent: владелец (Указатель на Пользователя, обязательный), Provider (Указатель на Provider, обязательный), область (Массив Строк: [документы, аллергии, иммунизации, медикаменты, лаборатории]), срок действия (Дата, необязательная), предоставлено (Указатель на Пользователя или систему).
8. AuditLog: актер (Указатель на Пользователя, обязательный), действие (Строка, обязательная), тип сущности (Строка, обязательная), id сущности (Строка, обязательная), полезная нагрузка (Объект, необязательный); createdAt, updatedAt (системные).

Безопасность:
- Используйте ACL/CLP, чтобы только владельцы и согласованные Provider имели доступ к записям. Cloud Code проверяет Согласие перед разрешением Provider на чтение/скачивание. Записи AuditLog являются только для добавления для стандартных пользователей.

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

Поведение:
- Аутентификация, список пользовательских записей, загрузка HealthDocument, создание структурированных записей Allergy/Immunization/Medication/LabResult, создание Согласия на обмен выбранными записями с Provider, и запись записей AuditLog для критических событий.

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

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

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

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

API Игровая площадка

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

common.loadingPlayground

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

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

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

Flutter PHR Backend

React PHR Backend

React Native PHR Backend

Next.js PHR Backend

JavaScript PHR Backend

Android PHR Backend

iOS PHR Backend

Vue PHR Backend

Angular PHR Backend

GraphQL PHR Backend

REST API PHR Backend

PHP PHR Backend

.NET PHR Backend

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

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

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

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

Безопасный обмен для личная медицинская карта

Легко делитесь медицинской информацией с Provider, обеспечивая конфиденциальность.

Полные журналы аудита для личная медицинская карта

Отслеживайте все доступы и изменения к чувствительным медицинским данным.

REST/GraphQL API для личная медицинская карта

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

Обновления в реальном времени для личная медицинская карта

Мгновенные уведомления об изменениях в медицинских записях и статусе.

Расширяемость для личная медицинская карта

Легко добавляйте пользовательские функции и модули для специфических нужд.

Сравнение рамок личной медицинской карты

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

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

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

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

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

Что такое бэкэнд Личной медицинской записи (PHR)?
Что включает в себя шаблон PHR?
Как версионируются медицинские документы?
Какие поля обязательны для записи о вакцинации?
Как защитить данные об аллергиях и медикаментах?
Могут ли пациенты экспортировать свои данные PHR?
Как мне смоделировать результаты анализов в PHR?
Почему использовать Back4app для PHR?
Как мне обработать истечение срока действия согласия?
Могу ли я поддерживать несколько Provider для одного пациента?

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

Команды, создающие ориентированные на пациента приложения в сфере здравоохранения, быстрее запускают с шаблонами Back4app

G2 Users Love Us Badge

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

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

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