Backend PHR
Construir con Agente IA
Backend de Registro de Salud Personal

Plantilla de Backend de Aplicación de Registro de Salud Personal (PHR)
Documentos médicos propiedad del usuario, seguimiento de alérgenos y registros de vacunación

Un backend de Registro de Salud Personal listo para producción en Back4app con almacenamiento de documentos médicos, historiales de alergias y vacunación, modelos de medicamentos y laboratorio, consentimiento/compartición, registros de auditoría, diagrama ER, y un prompt de Agente de IA para un arranque rápido.

Conclusiones clave

Esta plantilla te ofrece un backend PHR centrado en el usuario con almacenamiento de documentos, alergias, inmunizaciones, medicamentos, resultados de laboratorio, objetos de consentimiento y registros de auditoría para que puedas entregar aplicaciones de salud priorizando la privacidad rápidamente.

  1. Datos de salud controlados por el usuarioMantén a los pacientes en primer lugar: los registros y consentimientos son propiedad y están controlados por la cuenta del usuario, lo que permite el intercambio selectivo con Providers.
  2. Entidades clínicas estructuradasModelo de alergias, inmunizaciones, medicamentos y resultados de laboratorio con campos tipificados para consultas precisas y visualización de UX.
  3. Carga de documentos y versionadoAlmacena PDFs, imágenes y documentos estructurados con metadatos e historial de cargas para apoyar flujos de trabajo clínicos.
  4. Compartición impulsada por consentimientoOtorgue acceso detallado a Provider con objetos de Consentimiento y permisos limitados en el tiempo.
  5. Preparación multiplataformaSirva portales móviles, web y Provider utilizando REST unificado y APIs de GraphQL con Live Queries para actualizaciones en tiempo real.

¿Qué es la Plantilla de Backend de la Aplicación de Registro de Salud Personal (PHR)?

Back4app es un backend como servicio (BaaS) para una entrega rápida de productos. La Plantilla de Backend de la Aplicación PHR es un esquema preconstruido para documentos médicos, alergias, inmunizaciones, medicamentos, resultados de laboratorio, Providers, consentimientos y registros de auditoría. Conecte su frontend (React, Flutter, Next.js, y más) y acelere la entrega.

Mejor para:

Aplicaciones de salud centradas en el pacienteAplicaciones de registro de vacunas e inmunizaciónCámaras de documentos médicos digitalesGestión de consentimiento de pacientes de ProviderSeguimiento personal de medicamentos y alergiasEquipos construyendo MVPs de salud basados en BaaS

Descripción general

Un producto PHR moderno necesita almacenamiento seguro centrado en el usuario para documentos, registros precisos de alergias e inmunización, historial de medicamentos y un modelo de consentimiento para compartir datos con Providers.

Esta plantilla define HealthDocument, Allergy, Immunization, Medication, LabResult, Provider, Consent y AuditLog con reglas de propiedad y flujos de trabajo extensibles para que los equipos puedan implementar aplicaciones PHR de manera rápida y conforme.

Características básicas de PHR

Cada tarjeta de tecnología en este hub utiliza el mismo esquema de backend PHR con HealthDocument, Allergy, Immunization, Medication, LabResult, Provider, Consent, y AuditLog.

bóveda de documentos médicos

Sube y versiona PDFs, imágenes y registros estructurados con metadatos y apuntadores de propietario.

Seguimiento de alergias y Reactiones

Registra alérgenos, Reactiones, gravedad y fecha de aparición vinculados a un propietario.

Historial de inmunización y vacunación

Capturar nombre de la vacuna, fecha de administración, lote y referencia de Provider.

Listas y horarios de medicamentos

Almacenar medicamentos activos e históricos con dosis, frecuencia e instrucciones.

Resultados de laboratorio

Almacenar resultados de laboratorio con valores numéricos, unidades, rangos de referencia y adjuntos.

Controles de consentimiento y compartición

Conceder acceso específico a registros de Provider con fecha de caducidad y alcance.

Registros de auditoría centralizados

Registrar actor, acción, objetivo y metadatos de carga útil para trazabilidad.

¿Por qué construir tu backend de PHR con Back4app?

Back4app te proporciona la infraestructura básica para aplicaciones de PHR, para que tu equipo pueda centrarse en la experiencia del usuario, las experiencias de consentimiento y las integraciones en lugar de la plomería del backend.

  • Propiedad de datos centrada en el usuario: Implementa reglas de propiedad y objetos de consentimiento para que los pacientes mantengan el control sobre quién puede ver o descargar sus registros.
  • Almacenamiento seguro de documentos y metadatos: Carga documentos clínicos con metadatos, versiones y punteros a datos estructurados como laboratorios e inmunizaciones.
  • Auditoría + flexibilidad de API: Mantén registros de auditoría para eventos compartidos y cambios de registro mientras proporcionas REST y GraphQL para clientes web y móviles.

Lanza un backend de PHR centrado en la privacidad rápidamente con almacenamiento escalable, autenticación y APIs en todas las plataformas.

Beneficios Clave

Un backend PHR que te ayuda a ofrecer experiencias de salud con enfoque en la privacidad mientras mantienes los datos estructurados y auditables.

Velocidad al mercado

Comienza a partir de un esquema PHR completo en lugar de diseñar entidades clínicas y flujos de consentimiento desde cero.

Control de acceso centrado en el paciente

Permite a los pacientes gestionar consentimientos y compartir registros de manera selectiva con Provider y aplicaciones.

Modelos de datos interoperables

Utiliza modelos estructurados de inmunización, medicación y laboratorio para integraciones y análisis.

Permisos detallados

Utiliza objetos ACL/CLP y de Consentimiento para que el acceso sea explícito y auditable.

Rastro de auditoría confiable

Registre los eventos de acceso y compartición para transparencia y cumplimiento.

Flujo de arranque asistido por IA

Genere rápidamente la estructura del backend y la guía de integración con un aviso de Agente de IA pre-construido.

¿Listo para construir un Registro de Salud Personal centrado en el usuario?

Deje que el Agente de IA de Back4app estructure su backend de PHR y genere documentos, alergias, inmunizaciones, consentimientos y registros de auditoría desde un solo aviso.

Gratis para empezar — 50 avisos de Agente de IA/mes, sin necesidad de tarjeta de crédito

Pila técnica

Todo incluido en esta plantilla de backend PHR.

Frontend
13+ tecnologías
Backend
Back4app
Base de datos
MongoDB
Autenticación
Autenticación integrada + sesiones
API
REST y GraphQL
En tiempo real
Live Queries

Diagrama ER

Modelo de entidad-relación para el esquema de backend PHR.

Ver fuente del diagrama
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
    }

Flujo de integración

Flujo de ejecución típico para autenticación, acceso a registros, carga de documentos, otorgamiento de consentimiento y registro de auditoría.

Ver fuente del diagrama
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

Diccionario de datos

Referencia completa a nivel de campo para cada clase en el esquema PHR.

CampoTipoDescripciónRequerido
objectIdStringAuto-generated unique identifierAutomático
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 timestampAutomático
updatedAtDateAuto-generated last-update timestampAutomático

10 campos en Profile

Seguridad y Permisos

Cómo ACL, CLP, objetos de consentimiento y Cloud Code aseguran registros de salud personales y su compartición.

Registros de propiedad del paciente

Establecer propiedad y ACL para que las entradas de HealthDocument, Allergy, Immunization, Medication y LabResult sean legibles y editables solo por el propietario del registro y los Providers autorizados.

Compartición basada en consentimiento

Utilice la clase Consent para otorgar acceso a Provider con un ámbito y una caducidad explícitos; Cloud Code aplica verificaciones de consentimiento en los endpoints de lectura/descarga.

Registros de auditoría solo de apéndice

Mantenga las entradas de AuditLog solo de apéndice para los usuarios estándar; solo los flujos de backend de confianza o los administradores pueden escribir o gestionar registros históricos.

Esquema (JSON)

Definición de esquema JSON en bruto lista para copiar en Back4app o usar como referencia de implementación.

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
        }
      }
    }
  ]
}

Construir con el Agente de IA

Utilice el Agente de IA de Back4app para generar una verdadera aplicación de Registro de Salud Personal a partir de esta plantilla, incluyendo frontend, backend, autenticación y flujos de consentimiento.

Agente de IA de Back4app
Listo para construir
Crea un backend de Registro de Salud Personal (PHR) en Back4app con este esquema y comportamiento exactos.

Esquema:
1. HealthDocument: propietario (Puntero a Usuario, requerido), título (Cadena, requerido), archivo (Archivo, requerido), etiquetas (Array, opcional), versión (Número, por defecto 1), createdAt, updatedAt (sistema).
2. Allergy: propietario (Puntero a Usuario, requerido), sustancia (Cadena, requerido), Reactión (Cadena, opcional), severidad (Cadena: leve, moderada, grave, requerido), fecha de inicio (Fecha, opcional).
3. Immunization: propietario (Puntero a Usuario, requerido), nombreDeLaVacuna (Cadena, requerido), administradoEn (Fecha, requerido), númeroDeLote (Cadena, opcional), Provider (Puntero a Provider, opcional).
4. Medication: propietario (Puntero a Usuario, requerido), nombre (Cadena, requerido), dosis (Cadena, opcional), frecuencia (Cadena, opcional), instrucciones (Cadena, opcional), activo (Booleano, por defecto verdadero).
5. LabResult: propietario (Puntero a Usuario, requerido), nombreDeLaPrueba (Cadena, requerido), valor (Número o Cadena), unidades (Cadena, opcional), rangoReferencial (Cadena, opcional), fecha (Fecha, requerido), adjunto (Puntero a HealthDocument, opcional).
6. Provider: nombre (Cadena, requerido), systemId (Cadena, opcional), contacto (Objeto, opcional).
7. Consent: propietario (Puntero a Usuario, requerido), Provider (Puntero a Provider, requerido), alcance (Array de Cadenas: [documentos, alergias, inmunizaciones, medicamentos, laboratorios]), expiraEn (Fecha, opcional), otorgadoPor (Puntero a Usuario o sistema).
8. AuditLog: actor (Puntero a Usuario, requerido), acción (Cadena, requerido), tipoDeEntidad (Cadena, requerido), idDeEntidad (Cadena, requerido), carga (Objeto, opcional); createdAt, updatedAt (sistema).

Seguridad:
- Usa ACL/CLP para que solo los propietarios y Provider con consentimiento accedan a los registros. El Cloud Code valida el Consentimiento antes de permitir la lectura/descarga de Provider. Las entradas de AuditLog son solo para añadir para usuarios estándar.

Autenticación:
- Registro, inicio de sesión, cierre de sesión para cuentas de usuario. Soporte para cuentas de Provider con privilegios limitados.

Comportamiento:
- Autenticar, listar registros de usuario, cargar HealthDocument, crear entradas estructuradas de Allergy/Immunization/Medication/LabResult, crear Consentimiento para compartir registros seleccionados con un Provider, y escribir entradas de AuditLog para eventos críticos.

Entregar:
- Aplicación Back4app con esquema, ACLs, CLPs; frontend para bóveda de documentos segura, líneas de tiempo de alergias e inmunizaciones, listas de medicamentos, vistas de resultados de laboratorios, flujos de consentimiento Provider, y historial de auditos.

Presiona el botón de abajo para abrir el Agente con este aviso de plantilla pre-completado.

Este es el aviso base sin un sufijo tecnológico. Puedes adaptar la pila frontend generada después.

Desplegar en minutos50 avisos gratuitos / mesNo se requiere tarjeta de crédito

API Playground

Prueba los endpoints REST y GraphQL contra el esquema PHR. Las respuestas utilizan datos de prueba y no requieren una cuenta de Back4app.

common.loadingPlayground

Utiliza el mismo esquema que esta plantilla.

Elige tu tecnología

Expande cada tarjeta para los pasos de integración, patrones de estado, ejemplos de modelo de datos y notas fuera de línea.

Flutter PHR Backend

React PHR Backend

React Nativo 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

Lo que obtienes con cada tecnología

Cada stack utiliza el mismo esquema de backend PHR y contratos de API.

Estructura de datos unificada registro de salud personal

Un esquema preconstruido para documentos y registros médicos.

Compartición segura para registro de salud personal

Comparta fácilmente información de salud con Providers mientras asegura la privacidad.

Registros de auditoría completos para registro de salud personal

Rastree todos los accesos y cambios a datos de salud sensibles.

REST/GraphQL APIs para registro de salud personal

Acceso a API flexible para integrarse sin problemas con varias interfaces.

Actualizaciones en tiempo real para registro de salud personal

Notificaciones instantáneas sobre cambios en registros de salud y estado.

Extensibilidad para registro de salud personal

Añada fácilmente características y módulos personalizados para adaptarse a necesidades específicas.

Comparación del Marco de Registro de Salud Personal

Compare la velocidad de configuración, el estilo de SDK y el soporte de IA en todas las tecnologías compatibles.

MarcoTiempo de ConfiguraciónBeneficio del Registro de Salud PersonalTipo de SDKSoporte de IA
Menos de 5 minutosBase de código única para el registro de salud personal en móvil y web.Typed SDKCompleto
~3–7 minTablero web rápido para el registro de salud personal.Typed SDKCompleto
Configuración rápida (5 min)Aplicación móvil multiplataforma para el registro de salud personal.Typed SDKCompleto
~5 minAplicación web renderizada en servidor para el registro de salud personal.Typed SDKCompleto
~3 minIntegración web liviana para el registro de salud personal.Typed SDKCompleto
Menos de 5 minutosAplicación nativa Android para el registro de salud personal.Typed SDKCompleto
~3–7 minAplicación nativa iOS para el registro de salud personal.Typed SDKCompleto
Configuración rápida (5 min)Interfaz web Reactiva para el registro de salud personal.Typed SDKCompleto
~5 minAplicación web empresarial para el registro de salud personal.Typed SDKCompleto
Configuración rápida (2 min)API GraphQL flexible para el registro de salud personal.GraphQL APICompleto
~2 minIntegración REST API para el registro de salud personal.REST APICompleto
Menos de 5 minBackend PHP del lado del servidor para el registro de salud personal.REST APICompleto
Configuración rápida (5 min)Backend .NET para el registro de salud personal.Typed SDKCompleto

El tiempo de configuración refleja la duración esperada desde el inicio del proyecto hasta la primera carga de documentos y flujo de consentimiento utilizando este esquema de plantilla.

Preguntas Frecuentes

Preguntas comunes sobre la construcción de un backend de Registro de Salud Personal con esta plantilla.

¿Qué es un backend de Registro de Salud Personal (PHR)?
¿Qué incluye la plantilla PHR?
¿Cómo se versionan los documentos médicos?
¿Qué campos son obligatorios para un registro de inmunización?
¿Cómo puedo asegurar los datos de alergias y medicamentos?
¿Pueden los pacientes exportar sus datos PHR?
¿Cómo modelo los resultados de laboratorio en el PHR?
¿Por qué usar Back4app para un PHR?
¿Cómo manejo la expiración del consentimiento?
¿Puedo soportar múltiples Provider por paciente?

Confiado por desarrolladores de todo el mundo

Los equipos que construyen aplicaciones de salud centradas en el paciente envían más rápido con plantillas de Back4app

G2 Users Love Us Badge

¿Listo para construir tu aplicación de registro de salud personal?

Inicia tu proyecto de Registro de Salud Personal en minutos. No se requiere tarjeta de crédito.

Elegir Tecnología