Backend PHR
Construire avec l'Agent AI
Backend de l'enregistrement de santé personnel

Modèle de backend d'application d'enregistrement de santé personnel (PHR)
Documents médicaux détenus par l'utilisateur, suivi des allergènes et dossiers de vaccination

Un backend d'enregistrement de santé personnel prêt pour la production sur Back4app avec stockage de documents médicaux, historiques d'allergies et de vaccinations, modèles de médicaments et de laboratoires, consentement/partage, journaux d'audit, diagramme ER, et un prompt AI Agent pour un démarrage rapide.

Points clés

Ce modèle vous offre un backend PHR centré sur l'utilisateur avec stockage de documents, allergies, immunisations, médicaments, résultats de laboratoire, objets de consentement et journaux d'audit pour que vous puissiez livrer rapidement des applications de santé axées sur la confidentialité.

  1. Données de santé contrôlées par l'utilisateurMettre les patients en premier : les dossiers et les consentements appartiennent et sont contrôlés par le compte de l'utilisateur, permettant un partage sélectif avec Providers.
  2. Entités cliniques structuréesModélisez les allergies, les immunisations, les médicaments et les résultats de laboratoire avec des champs typés pour des requêtes précises et un affichage UX.
  3. Téléchargement de documents et versionnageStockez des PDF, des images et des documents structurés avec des métadonnées et un historique de téléchargements pour soutenir les flux de travail cliniques.
  4. Partage basé sur le consentementAccorder un accès Provider détaillé avec des objets de consentement et des permissions temporisées.
  5. Prêt pour plusieurs plateformesServez des portails mobiles, web et Provider en utilisant des API REST unifiées et GraphQL avec Live Queries pour des mises à jour en temps réel.

Qu'est-ce que le modèle de backend de l'application de dossier de santé personnel (PHR)?

Back4app est un backend en tant que service (BaaS) pour une livraison rapide des produits. Le modèle de backend de l'application PHR est un schéma pré-construit pour les documents médicaux, les allergies, les vaccinations, les médicaments, les résultats de laboratoire, Providers, les consentements et les journaux d'audit. Connectez votre frontend (React, Flutter, Next.js et plus) et accélérez la livraison.

Meilleur pour :

Applications de santé axées sur le patientApplications d'enregistrement des vaccins et des immunisationsCoffres-forts numériques de documents médicauxGestion du consentement des patients ProviderSuivi personnel des médicaments et des allergiesÉquipes construisant des MVPs de santé basés sur BaaS

Aperçu

Un produit PHR moderne a besoin d'un stockage sécurisé centré sur l'utilisateur pour les documents, des enregistrements précis des allergies et des vaccinations, l'historique des médicaments, et un modèle de consentement pour partager des données avec des Providers.

Ce modèle définit HealthDocument, Allergy, Immunization, Medication, LabResult, Provider, Consent, et AuditLog avec des règles de propriété et des flux de travail extensibles afin que les équipes puissent mettre en œuvre des applications PHR rapidement et en conformité.

Fonctionnalités clés de PHR

Chaque carte technologique dans ce hub utilise le même schéma backend PHR avec HealthDocument, Allergy, Immunization, Medication, LabResult, Provider, Consent et AuditLog.

Coffre de documents médicaux

Téléchargez et versionnez des PDF, des images et des dossiers structurés avec des métadonnées et des pointeurs de propriétaire.

Suivi des allergies et des Reactions

Enregistrez les allergènes, les Reactions, la gravité et la date d'apparition associées à un propriétaire.

Antécédents d'immunisation et de vaccination

Capturer le nom du vaccin, la date d'administration, le lot, et la référence de Provider.

Listes et calendriers de médicaments

Stocker les médicaments actifs et historiques avec posologie, fréquence et instructions.

Résultats de laboratoire

Stocker les résultats de laboratoire avec des valeurs numériques, des unités, des plages de référence et des pièces jointes.

Contrôles de consentement et de partage

Accorder un accès spécifique à Provider aux dossiers avec expiration et étendue.

Journaux d'audit centralisés

Enregistrer l'acteur, l'action, la cible et les métadonnées de la charge utile pour la traçabilité.

Pourquoi construir votre backend PHR avec Back4app ?

Back4app vous offre une infrastructure de base pour les applications PHR afin que votre équipe puisse se concentrer sur l'expérience utilisateur, les expériences de consentement et les intégrations au lieu de la plomberie backend.

  • Propriété des données centrée sur l'utilisateur: Implémentez des règles de propriété et des objets de consentement afin que les patients conservent le contrôle de qui peut voir ou télécharger leurs dossiers.
  • Stockage sécurisé de documents et de métadonnées: Téléchargez des documents cliniques avec des métadonnées, des versions et des pointeurs vers des données structuréess comme les laboratoires et les vaccinations.
  • Auditabilité + flexibilité API: Conservez des journaux d'audit pour les événements de partage et les modifications d'enregistrement tout en fournissant REST et GraphQL pour les clients web et mobiles.

Expédiez rapidement un backend PHR axé sur la confidentialité avec un stockage évolutif, une authentification et des API sur toutes les plateformes.

Avantages principaux

Un backend PHR qui vous aide à offrir des expériences de santé axées sur la confidentialité tout en gardant les données structurées et vérifiables.

Vitesse de mise sur le marché

Commencez à partir d'un schéma PHR complet au lieu de concevoir des entités cliniques et des flux de consentement de zéro.

Contrôle d'accès centré sur le patient

Permettez aux patients de gérer les consentements et de partager sélectivement des dossiers avec Provider et des applications.

Modèles de données interopérables

Utilisez des modèles d'immunisation, de médicaments et de laboratoires structurés pour les intégrations et les analyses.

Permissions granulaires

Utilisez des objets ACL/CLP et Consentement afin que l'accès soit explicite et vérifiable.

Trace d'audit fiable

Enregistrer les événements d'accès et de partage pour la transparence et la conformité.

Flux de démarrage assisté par l'IA

Générez rapidement une structure backend et des conseils d'intégration avec une invite d'agent AI préconstruite.

Prêt à construire un Dossier de Santé Personnel axé sur l'utilisateur ?

Laissez l'agent AI Back4app structurer votre backend PHR et générer des documents, des allergies, des vaccinations, des consentements et des journaux d'audit à partir d'une seule invite.

Gratuit pour commencer — 50 invites d'agent AI/mois, pas de carte de crédit requise

Pile technique

Tout est inclus dans ce modèle de backend PHR.

Frontend
13+ technologies
Backend
Back4app
Base de données
MongoDB
Authentification
Authentification intégrée + sessions
API
REST et GraphQL
Temps réel
Live Queries

Diagramme ER

Modèle de relation d'entité pour le schéma backend PHR.

Voir la source du diagramme
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
    }

Flux d'intégration

Flux d'exécution typique pour l'authentification, l'accès aux dossiers, le téléchargement de documents, l'octroi de consentement et l'audit.

Voir la source du diagramme
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

Dictionnaire de données

Référence complète au niveau des champs pour chaque classe dans le schéma PHR.

ChampTypeDescriptionRequis
objectIdStringAuto-generated unique identifierAutomatique
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 timestampAutomatique
updatedAtDateAuto-generated last-update timestampAutomatique

10 champs dans Profile

Sécurité et autorisations

Comment les ACL, CLP, objets de consentement et Cloud Code sécurisent les dossiers de santé personnels et le partage.

Dossiers détenus par le patient

Définir la propriété et les ACL afin que les entrées de HealthDocument, Allergy, Immunization, Medication et LabResult soient lisibles et modifiables uniquement par le propriétaire du dossier et les Provider autorisés.

Partage basé sur le consentement

Utilisez la classe Consent pour accorder l'accès à Provider avec une portée et une date d'expiration explicites ; le Cloud Code applique des vérifications de consentement sur les points de terminaison de lecture/téléchargement.

Journaux d'audit en ajout uniquement

Conservez les entrées AuditLog en ajout uniquement pour les utilisateurs standard ; seuls les flux backend fiables ou les administrateurs peuvent écrire ou gérer les journaux historiques.

Schéma (JSON)

Définition de schéma JSON brut prête à être copiée dans Back4app ou utilisée comme référence d'implémentation.

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

Construire avec l'Agent IA

Utilisez l'Agent IA Back4app pour générer une application réelle pour le Dossier de Santé Personnel à partir de ce modèle, y compris le frontend, le backend, l'authentification et les workflows de consentement.

Agent IA Back4app
Prêt à construire
Créez un backend Dossier de Santé Personnel (PHR) sur Back4app avec ce schéma et ce comportement exacts.

Schéma:
1. HealthDocument : propriétaire (Pointeur vers l'Utilisateur, requis), titre (String, requis), fichier (Fichier, requis), tags (Tableau, optionnel), version (Numéro, par défaut 1), createdAt, updatedAt (système).
2. Allergy : propriétaire (Pointeur vers l'Utilisateur, requis), substance (String, requis), Reaction (String, optionnel), sévérité (String : léger, modéré, sévère, requis), date de début (Date, optionnel).
3. Immunization : propriétaire (Pointeur vers l'Utilisateur, requis), nom du vaccin (String, requis), administréLe (Date, requis), numéro de lot (String, optionnel), Provider (Pointeur vers Provider, optionnel).
4. Medication : propriétaire (Pointeur vers l'Utilisateur, requis), nom (String, requis), dose (String, optionnel), fréquence (String, optionnel), instructions (String, optionnel), actif (Boolean, par défaut vrai).
5. LabResult : propriétaire (Pointeur vers l'Utilisateur, requis), nom du test (String, requis), valeur (Numéro ou String), unités (String, optionnel), plage de référence (String, optionnel), date (Date, requis), pièce jointe (Pointeur vers HealthDocument, optionnel).
6. Provider : nom (String, requis), systemId (String, optionnel), contact (Objet, optionnel).
7. Consent : propriétaire (Pointeur vers l'Utilisateur, requis), Provider (Pointeur vers Provider, requis), portée (Tableau de Strings : [documents, allergies, vaccinations, médicaments, laboratoires]), expireLe (Date, optionnel), accordé par (Pointeur vers l'Utilisateur ou système).
8. AuditLog : acteur (Pointeur vers l'Utilisateur, requis), action (String, requis), type d'entité (String, requis), identifiant d'entité (String, requis), charge utile (Objet, optionnel); createdAt, updatedAt (système).

Sécurité :
- Utilisez ACL/CLP afin que seuls les propriétaires et les Provider consentis accèdent aux dossiers. Le Cloud Code valide le Consent avant de permettre la lecture/téléchargement de Provider. Les entrées de AuditLog sont en ajout uniquement pour les utilisateurs standard.

Authentification :
- Inscription, connexion, déconnexion pour les comptes utilisateurs. Prise en charge des comptes Provider avec des privilèges limités.

Comportement :
- Authentifiez, listez les dossiers utilisateurs, téléchargez HealthDocument, créez des entrées Allergy/Immunization/Medication/LabResult structurées, créez un Consent pour partager des dossiers sélectionnés avec un Provider, et écrivez des entrées de AuditLog pour des événements critiques.

Livraison :
- Application Back4app avec schéma, ACL, CLP ; frontend pour coffre-fort de documents sécurisé, lignes de temps d'allergies et de vaccinations, listes de médicaments, vues des résultats de laboratoire, flux de consentement Provider, et historique des audits.

Appuyez sur le bouton ci-dessous pour ouvrir l'Agent avec ce modèle de prompt pré-rempli.

Ceci est le prompt de base sans suffixe technologique. Vous pouvez adapter la pile frontend générée par la suite.

Déployez en quelques minutes50 prompts gratuits / moisAucune carte de crédit requise

API Playground

Essayez les points de terminaison REST et GraphQL contre le schéma PHR. Les réponses utilisent des données fictives et ne nécessitent pas de compte Back4app.

common.loadingPlayground

Utilise le même schéma que ce modèle.

Choisissez votre technologie

Développez chaque carte pour les étapes d'intégration, les modèles d'état, les exemples de modèles de données et les notes hors ligne.

Flutter PHR Backend

React PHR Backend

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

Ce que vous obtenez avec chaque technologie

Chaque pile utilise le même schéma backend PHR et les contrats API.

Structure de données enregistrement de santé personnel unifiée

Un schéma préexistant pour documents et dossiers médicaux.

Partage sécurisé pour enregistrement de santé personnel

Partagez facilement des informations de santé avec des Provider tout en garantissant la confidentialité.

Journaux d'audit complets pour enregistrement de santé personnel

Suivez tous les accès et changements des données de santé sensibles.

REST/GraphQL APIs pour enregistrement de santé personnel

Accès API flexible pour intégrer de manière transparente avec divers frontends.

Mises à jour en temps réel pour enregistrement de santé personnel

Notifications instantanées sur les changements des dossiers de santé et des statuts.

Extensibilité pour enregistrement de santé personnel

Ajoutez facilement des fonctionnalités et des modules personnalisés pour répondre à des besoins spécifiques.

Comparaison du cadre d'enregistrements de santé personnels

Comparez la vitesse de configuration, le style SDK, et le support AI à travers toutes les technologies prises en charge.

FrameworkTemps de configurationAvantage de l'enregistrement de santé personnelType de SDKSupport AI
En moins de 5 minutesCode source unique pour l'enregistrement de santé personnel sur mobile et web.Typed SDKComplet
~3 à 7 minTableau de bord web rapide pour l'enregistrement de santé personnel.Typed SDKComplet
Configuration rapide (5 min)Application mobile multiplateforme pour l'enregistrement de santé personnel.Typed SDKComplet
~5 minApplication web rendue côté serveur pour l'enregistrement de santé personnel.Typed SDKComplet
~3 minIntégration web léger pour l'enregistrement de santé personnel.Typed SDKComplet
En moins de 5 minutesApplication Android native pour l'enregistrement de santé personnel.Typed SDKComplet
~3 à 7 minApplication iOS native pour l'enregistrement de santé personnel.Typed SDKComplet
Configuration rapide (5 min)Interface web Reactive pour l'enregistrement de santé personnel.Typed SDKComplet
~5 minApplication web entreprise pour l'enregistrement de santé personnel.Typed SDKComplet
Configuration rapide (2 min)API GraphQL flexible pour l'enregistrement de santé personnel.GraphQL APIComplet
~2 minIntégration REST API pour l'enregistrement de santé personnel.REST APIComplet
En moins de 5 minBackend PHP côté serveur pour l'enregistrement de santé personnel.REST APIComplet
Configuration rapide (5 min)Backend .NET pour l'enregistrement de santé personnel.Typed SDKComplet

Le temps de configuration reflète la durée attendue de l'intégration du projet au premier téléchargement de document et au flux de consentement en utilisant ce schéma de modèle.

Questions Fréquemment Posées

Questions courantes sur la création d'un backend de Dossier de Santé Personnel avec ce modèle.

Qu'est-ce qu'un backend de Dossier de Santé Personnel (PHR) ?
Que comprend le modèle PHR ?
Comment les documents médicaux sont-ils versionnés ?
Quels champs sont requis pour un enregistrement de vaccination ?
Comment sécuriser les données sur les allergies et les médicaments ?
Les patients peuvent-ils exporter leurs données PHR ?
Comment modéliser les résultats de laboratoire dans le PHR ?
Pourquoi utiliser Back4app pour un PHR ?
Comment gérer l'expiration du consentement ?
Puis-je prendre en charge plusieurs Provider par patient ?

Approuvé par des développeurs du monde entier

Les équipes construisant des applications de santé centrées sur le patient livrent plus rapidement avec des modèles Back4app

G2 Users Love Us Badge

Prêt à créer votre application de dossier de santé personnel ?

Commencez votre projet de dossier de santé personnel en quelques minutes. Aucune carte de crédit requise.

Choisir la technologie