Projets choisis

MONITORING CLINIQUE NATIVE FHIR

Monitoring Pflege

Les données de santé structurées comme architecture système

Une application conteneurisée de documentation infirmière et de monitoring native FHIR, avec écritures cliniques contrôlées, tendances, authentification BFF et frontière HAPI FHIR interne.

DÉMONSTRATION IMPLÉMENTÉE · ML SYNTHÉTIQUE DÉSACTIVÉ PAR DÉFAUT
Comment les applications cliniques peuvent-elles partager des données de santé structurées sans perdre sécurité, contexte ou sens ?

01 / Problème

Une vue de monitoring n’est utile que si ses données gardent leur contexte.

Les mesures ne sont pas de simples nombres isolés. Une application clinique doit conserver patient, encounter, code, unité, moment et source avec chaque valeur—tout en contrôlant l’accès aux données sous-jacentes.

  • Mesures structurées dans le temps
  • Contexte Patient et Encounter
  • Frontières interopérables plutôt qu’un modèle réduit à l’export

02 / Architecture

FHIR se trouve dans le système, pas seulement à sa sortie.

Le stack implémenté utilise FHIR comme contrat actif entre UI clinique React, BFF/API FastAPI, serveur HAPI FHIR interne et PostgreSQL. Le navigateur ne devient pas un client d’intégration non contrôlé.

  1. 01
    React / TypeScriptPrésentation frontend clinique
  2. 02
    Gateway same-originNginx fournit UI, /api et /auth
  3. 03
    FastAPI BFF / APIContrats cliniques validés
    implémenté
  4. 04
    Keycloak + RedisOIDC, session serveur chiffrée
    implémenté
  5. 05
    Intégration FHIRAccès REST et mapping contrôlés
  6. 06
    HAPI FHIR R4Serveur de ressources cliniques interne
    implémenté
  7. 07
    PostgreSQLCouche de persistance HAPI
    implémenté
Le backend détient l’accès FHIR contrôlé. Le frontend ne reçoit que les données et actions autorisées pour sa session.

03 / Flux de données

Un chemin traçable des mesures à la vue de monitoring.

Les FHIR Observations apportent la base structurée des séries temporelles et de la visualisation. L’architecture ne fabrique volontairement aucune recommandation : la sortie est une vue technique de monitoring, pas une aide à la décision clinique.

  1. 01FHIR Observations
  2. 02Frontière de requête validée
  3. 03Série temporelle
  4. 04Traitement de tendance
  5. 05Vue de monitoring clinique

Le monitoring peut afficher une tendance. Il ne remplace pas l’évaluation clinique et ne formule pas de recommandation.

04 / Modèle de données cliniques

Identité et Encounter ancrent chaque Observation.

L’identité stable inter-systèmes commence par un système d’identifiant et une valeur, pas par une correspondance nom-date de naissance. Le contexte Encounter permet de comprendre où se situe une mesure dans le parcours de soins.

RELATION DE CONTEXTE
Patient.identifier système + valeur → Patient → Encounter → Observation
Fréquence cardiaque
LOINC 8867-4
Panel tension artérielle
LOINC 85354-9
Systolique / diastolique
8480-6 / 8462-4
Température corporelle
LOINC 8310-5
FHIR Observation · exemple synthétique

Le code et les références subject et encounter précisent ce qui est mesuré et dans quel contexte de soins. Unités et valeurs doivent respecter les règles de profil et de qualité du système destinataire.

{
  "resourceType": "Observation",
  "status": "final",
  "code": {
    "coding": [{ "system": "http://loinc.org", "code": "8867-4" }]
  },
  "subject": { "reference": "Patient/synthetic-1042" },
  "encounter": { "reference": "Encounter/synthetic-enc-37" }
}

05 / Interopérabilité

Le monitoring clinique a besoin de relations, pas d’un catalogue de ressources.

L’ensemble de ressources pertinent dépend du périmètre clinique. Les Observations alimentent les vues de mesure ; Patient et Encounter établissent identité et contexte ; ressources documentaires et de planification ne deviennent pertinentes que lorsqu’un workflow le demande.

01

Patient

Porte une identité stable par système d’identifiant + valeur.

02

Encounter

Relie les Observations à l’épisode ou contexte de soins.

03

Observation

Représente mesures codées, unités, temporalité et références.

04

Composition

Concept possible de documentation infirmière structurée.

05

CarePlan / RiskAssessment

Concepts de workflow futurs, pas un moteur de recommandation revendiqué.

FHIR / terminologyDes codes LOINC sont montrés pour les constantes courantes. SNOMED CT et UCUM restent des sujets terminologiques nécessitant jeux de valeurs approuvés, règles de profils et gouvernance dans une implémentation réelle.

06 / Sécurité

Les frontières de confiance rendent les intégrations contrôlables.

L’implémentation conserve HAPI FHIR et les deux bases de données dans des réseaux Docker internes. Le BFF détient des sessions OAuth chiffrées côté serveur ; le backend vérifie signature, issuer, audience, client autorisé, type de token et rôles avant tout accès clinique.

01

Navigateur

Utilise /auth et /api en same-origin ; ne reçoit ni tokens OAuth ni credentials FHIR sans restriction.

02

Fournisseur d’identité

Keycloak fournit OIDC Authorization Code + PKCE avec sessions liées à state, nonce et CSRF.

03

Backend

Valide les requêtes et applique le moindre privilège : pflege_read, pflege_write, pflege_delete et pflege_admin.

04

Serveur FHIR

Reçoit des requêtes contraintes depuis l’API et n’est pas publié sur un port hôte.

Le dépôt documente des contrôles implémentés ; test de pénétration externe et approbation clinique restent hors du périmètre démontré.

07 / Décisions d’ingénierie

Décisions d’ingénierie clés

  1. 01

    FHIR comme contrat système

    FHIR demeure sur le chemin actif de l’intégration plutôt qu’un format d’export final.

  2. 02

    Le contexte clinique voyage avec la valeur

    Les mesures sont ancrées dans Patient et Encounter afin que les séries ne soient pas décontextualisées.

  3. 03

    Moindre privilège dans le backend

    Identité, autorisation et accès FHIR contrôlé restent séparés du frontend.

Défis d’ingénierie ouverts
  • Choisir profils et patterns de requêtes qui préservent le sens clinique sans surcharger les données.
  • Afficher mesures tardives, manquantes ou contradictoires sans masquer les problèmes de qualité.
  • Distinguer vue technique de tendance et conseil clinique, dans l’UX comme dans la gouvernance produit.

08 / État & suite

État actuel

DÉMONSTRATION IMPLÉMENTÉE

Le dépôt implémente React/Vite, FastAPI, HAPI FHIR R4, PostgreSQL, Keycloak, des sessions BFF chiffrées soutenues par Redis, une gateway interop versionnée, l’admission Patient/Encounter, des écritures cliniques contrôlées, tendances et un seeding de démonstration synthétique.

DIRECTION FUTURE

Direction future

Il reste la gouvernance des profils et terminologies, le mode production TLS/Keycloak, une couverture no-store explicite des GET cliniques, une revue de sécurité externe et une validation clinique. Le mode ML synthétique demeure volontairement non clinique.

09 / Ce que cela démontre

Ce que ce projet démontre

  1. 01Conception full-stack de frontières pour systèmes cliniques
  2. 02Relations de ressources FHIR R4 et contexte clinique
  3. 03Architecture API et autorisation sensible à la sécurité
  4. 04Chemin de données pour des analyses futures explicables, sans théâtre IA