Les organisations de santé gèrent souvent des structures hiérarchiques complexes — des réseaux hospitaliers régionaux regroupant divers établissements qui doivent concilier ressources partagées et autonomie organisationnelle. De plus, de nombreux systèmes de santé propres à chaque clinique nécessitent une architecture pilotée par les événements pour la synchronisation des données en temps réel entre entités interconnectées. Aidbox répond à ces défis grâce à deux fonctionnalités puissantes : le Contrôle d'accès hiérarchique basé sur l'organisation (OrgBAC) et les abonnements basés sur les sujets.
OrgBAC : isolation hiérarchique des données
OrgBAC vous permet de représenter une hiérarchie organisationnelle à l'intérieur du serveur FHIR Aidbox et fournit des points de terminaison de l'API FHIR avec isolation automatique des données.
Imaginez un réseau de santé tel que :
- MedCorp HQ (organisation parente disposant d'un accès complet à toutes les données du réseau)City General Hospital (succursale avec accès limité aux données de sa propre organisation)
- Riverside Clinic (succursale avec accès limité aux données de sa propre organisation)
Pour illustrer cela, le lot ci-dessous montre comment chaque organisation dans la hiérarchie est créée via l'API REST :
POST /fhir
resourceType: Bundle
type: batch
entry:
- request:
method: PUT
url: Organization/med-corp
resource:
name: MedCorp HQ
resourceType: Organization
- request:
method: PUT
url: Organization/city-general-hospital
resource:
name: City General Hospital
resourceType: Organization
partOf:
reference: Organization/med-corp
- request:
method: PUT
url: Organization/riverside-clinic
resource:
name: Riverside Clinic
resourceType: Organization
partOf:
reference: Organization/med-corp
Chacune obtient un point de terminaison dédié :
/Organization/med-corp/fhirpour MedCorp HQ/Organization/city-general-hospital/fhirpour City General Hospital/Organization/riverside-clinic/fhirpour Riverside Clinic
Toute ressource créée via le point de terminaison d'une organisation est automatiquement étiquetée avec l'identifiant de cette organisation, assurant une isolation appropriée sans aucune configuration supplémentaire :
PUT /Organization/city-general-hospital/fhir/Patient/pt-123
name: [ { family: 'John' } ]
---
meta:
extension:
- url: https://aidbox.app/tenant-organization-id
valueReference:
reference: Organization/city-general-hospital
id: pt-123
resourceType: Patient
name:
- family: Smith
La logique d'accès sous-jacente est simple et prévisible :
- MedCorp HQ voit tout depuis toutes les succursales (
GET /Organization/med-corp/fhir/Patient) - City General ne voit que ses propres données (
GET /Organization/city-general-hospital/fhir/Patient) - Riverside ne voit que ses propres données (
GET /Organization/riverside-clinic/fhir/Patient)
Pour plus de détails sur les fonctionnalités et la configuration d'OrgBAC, consultez la documentation : Contrôle d'accès hiérarchique basé sur l'organisation (OrgBAC)
Abonnements basés sur les sujets : événements en temps réel
Les abonnements permettent la synchronisation des données en temps réel via des webhooks, Kafka et diverses files de messages. À partir d'Aidbox 2509, les abonnements respectent automatiquement les limites organisationnelles. Lorsqu'un abonnement est créé via l'API d'une organisation, il hérite des règles de filtrage hiérarchiques.
Cela garantit :
- Flux hiérarchique : l'abonnement de MedCorp HQ capture les événements de toutes les succursales
- Sujets délimités : les abonnements de City General et de Riverside ne reçoivent que leurs propres événements
- Sécurité : les événements ne s'échangent jamais entre organisations sœurs
Deux composantes clés sont nécessaires pour la configuration :
- AidboxSubscriptionTopic — définit les types d'événements qui doivent déclencher des notifications. L'exemple ci-dessous capture chaque Observation finale à travers l'ensemble du réseau MedCorp :
POST /Organization/med-corp/fhir/AidboxSubscriptionTopic
{
"resourceType": "AidboxSubscriptionTopic",
"url": "http://aidbox.example/observation-feed",
"status": "active",
"trigger": [{
"resource": "Observation",
"fhirPathCriteria": "status = 'final'"
}]
}
AidboxTopicDestination – précise où envoyer les notifications. Chaque organisation possède sa propre destination créée via son point de terminaison dédié. Le lot suivant illustre comment ces destinations sont créées via la console REST.
POST /
resourceType: Bundle
type: batch
entry:
# MedCorp HQ destination - receives events from entire network
- request:
method: POST
url: /Organization/med-corp/fhir/AidboxTopicDestination
resource:
id: med-corp-observation-feed
resourceType: AidboxTopicDestination
meta:
profile: ["http://aidbox.app/StructureDefinition/aidboxtopicdestination-webhook-at-least-once"]
kind: webhook-at-least-once
topic: http://aidbox.example/observation-feed
parameter:
- name: endpoint
valueUrl: https://med-corp-hq.requestcatcher.com/test
# City General Hospital destination - receives only its events
- request:
method: POST
url: /Organization/city-general-hospital/fhir/AidboxTopicDestination
resource:
id: city-general-observation-feed
resourceType: AidboxTopicDestination
meta:
profile: ["http://aidbox.app/StructureDefinition/aidboxtopicdestination-webhook-at-least-once"]
kind: webhook-at-least-once
topic: http://aidbox.example/observation-feed
parameter:
- name: endpoint
valueUrl: https://city-general-hospital.requestcatcher.com/test
# Riverside Clinic destination - receives only its events
- request:
method: POST
url: /Organization/riverside-clinic/fhir/AidboxTopicDestination
resource:
id: riverside-observation-feed
resourceType: AidboxTopicDestination
meta:
profile: ["http://aidbox.app/StructureDefinition/aidboxtopicdestination-webhook-at-least-once"]
kind: webhook-at-least-once
topic: http://aidbox.example/observation-feed
parameter:
- name: endpoint
valueUrl: https://riverside-clinic.requestcatcher.com/test
Vous pouvez surveiller les requêtes reçues par chaque organisation en utilisant les URLs suivantes (ouvrez-les avant de produire des événements) :
- https://med-corp-hq.requestcatcher.com
- https://riverside-clinic.requestcatcher.com
- https://city-general-hospital.requestcatcher.com
Le diagramme ci-dessous illustre comment les événements circulent dans le système. Les flèches vertes représentent le flux d'événements de MedCorp HQ, tandis que les flèches jaunes représentent celui de City General Hospital :

Testez-le vous-même via la console REST
- Créez un patient :
POST /Organization/city-general-hospital/fhir/Patient
id: pt-1
name: [{"family": "Smith"}]
Créez une observation :
POST /Organization/city-general-hospital/fhir/Observation
resourceType: Observation
status: final
code:
coding:
- system: http://loinc.org
code: 15074-8
display: Glucose [Moles/volume] in Blood
subject:
reference: Patient/pt-1
valueQuantity:
value: 6.3
unit: mmol/l
system: http://unitsofmeasure.org
code: mmol/L
Vérifiez que http://med-corp-hq.requestcatcher.com et https://city-general-hospital.requestcatcher.com devraient recevoir les événements de création d'observation.
Conclusion
OrgBAC et les abonnements basés sur les sujets constituent ensemble une base robuste pour les architectures de santé multi-locataires. Cette combinaison offre une valeur immédiate :
- Supervision hiérarchique : les organisations parentes surveillent toutes les succursales tandis que chaque établissement maintient l'autonomie de ses données
- Isolation sans configuration : les frontières des données sont appliquées automatiquement — aucun contrôle d'accès manuel n'est nécessaire
- Synchronisation en temps réel : les événements critiques affluent instantanément vers les tableaux de bord, la facturation et les systèmes de qualité
- Sécurité intégrée : les limites organisationnelles empêchent les fuites de données entre établissements frères
- Efficacité pour les développeurs : conformité native à FHIR sans intergiciel personnalisé ni infrastructure complexe
Que vous conceviez un réseau hospitalier régional, gériez plusieurs cliniques ou développiez un dossier médical électronique multi-pratique, Aidbox fournit la base sécurisée et évolutive dont votre système de santé a besoin.
Commencez avec une licence développeur gratuite pour mettre en œuvre OrgBAC et les abonnements basés sur les sujets dans votre organisation, ou explorez la documentation pour des guides d'implémentation détaillés.
Voir aussi : Contrôle d'accès basé sur les rôles avec Keycloak et SMART on FHIR V2.







