|
7 min de lectura
|

Gestión de datos multiconsultorio y sincronización en tiempo real con OrgBAC y Subscriptions

Resumir este artículo con:
ChatGPTPerplexityClaudeGrok

Las organizaciones sanitarias gestionan con frecuencia estructuras jerárquicas complejas: redes hospitalarias regionales compuestas por instalaciones diversas que deben equilibrar recursos compartidos con autonomía organizativa. Además, muchos sistemas de salud específicos de cada clínica necesitan una arquitectura orientada a eventos para la sincronización de datos en tiempo real entre entidades interconectadas. Aidbox resuelve estos desafíos con dos funcionalidades potentes: Control de acceso jerárquico basado en organización (OrgBAC) y Subscriptions basadas en temas.

OrgBAC: Aislamiento jerárquico de datos

OrgBAC permite representar una jerarquía organizativa dentro del servidor FHIR Aidbox y proporciona endpoints de la API FHIR con aislamiento de datos automático.

Imagine una red sanitaria como la siguiente:

  • MedCorp HQ (organización matriz con acceso completo a todos los datos de la red)City General Hospital (sucursal con acceso limitado restringido a sus propios datos organizativos)
  • Riverside Clinic (sucursal con acceso limitado restringido a sus propios datos organizativos)

Para ilustrar esto, el bundle siguiente muestra cómo se crea cada organización en la jerarquía a través de la 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

Cada una dispone de un endpoint dedicado:

  • /Organization/med-corp/fhir para MedCorp HQ
  • /Organization/city-general-hospital/fhir para City General Hospital
  • /Organization/riverside-clinic/fhir para Riverside Clinic

Cualquier recurso creado a través del endpoint de una organización queda etiquetado automáticamente con su ID de organización, garantizando un aislamiento adecuado sin ninguna configuración adicional:

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 lógica de acceso subyacente es sencilla y predecible:

  • MedCorp HQ ve todo lo procedente de todas las sucursales (GET /Organization/med-corp/fhir/Patient)
  • City General ve únicamente sus propios datos (GET /Organization/city-general-hospital/fhir/Patient)
  • Riverside ve únicamente sus propios datos (GET /Organization/riverside-clinic/fhir/Patient)

Para más información sobre las funcionalidades y la configuración de OrgBAC, consulte la documentación: Control de acceso jerárquico basado en organización (OrgBAC)

Subscriptions basadas en temas: Eventos en tiempo real

Las Subscriptions permiten la sincronización de datos en tiempo real mediante webhooks, Kafka y diversas colas de mensajes. A partir de Aidbox 2509, las subscriptions respetan automáticamente los límites organizativos. Cuando se crea una subscription a través de la API de una organización, esta hereda las reglas de filtrado jerárquico.

Esto garantiza:

  • Flujo jerárquico: La subscription de MedCorp HQ captura eventos de todas las sucursales
  • Temas delimitados: Las subscriptions de City General y Riverside solo reciben sus propios eventos
  • Seguridad: Los eventos nunca se filtran entre organizaciones hermanas

Se requieren dos componentes clave para la configuración:

  • AidboxSubscriptionTopic: define qué tipos de eventos deben desencadenar notificaciones. El ejemplo siguiente captura cada Observation final en toda la red de MedCorp:
POST /Organization/med-corp/fhir/AidboxSubscriptionTopic

{
  "resourceType": "AidboxSubscriptionTopic",
  "url": "http://aidbox.example/observation-feed",
  "status": "active",
  "trigger": [{
    "resource": "Observation",
    "fhirPathCriteria": "status = 'final'"
  }]
}

AidboxTopicDestination: especifica dónde enviar las notificaciones. Cada organización tiene su propio destino creado a través de su endpoint dedicado. El bundle siguiente muestra cómo se crean estos destinos a través de la Consola 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

Puede supervisar las solicitudes recibidas por cada organización mediante las siguientes URLs (ábralas antes de producir eventos):

El diagrama siguiente ilustra cómo fluyen los eventos a través del sistema. Las flechas verdes muestran el flujo de eventos de MedCorp HQ, mientras que las flechas amarillas muestran el flujo de eventos de City General Hospital:

Pruébelo usted mismo mediante la Consola REST

  • Cree un paciente:
POST /Organization/city-general-hospital/fhir/Patient

id: pt-1
name: [{"family": "Smith"}]

Cree una observación:

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

Compruebe que http://med-corp-hq.requestcatcher.com y https://city-general-hospital.requestcatcher.com deben recibir los eventos de creación de la observación.

Conclusión

OrgBAC y las subscriptions basadas en temas juntas crean una base sólida para arquitecturas sanitarias multitenant. Esta combinación aporta valor inmediato:

  • Supervisión jerárquica: Las organizaciones matrices monitorizan todas las sucursales mientras cada centro mantiene la autonomía de sus datos
  • Aislamiento sin configuración: Los límites de datos se aplican automáticamente, sin necesidad de control de acceso manual
  • Sincronización en tiempo real: Los eventos críticos fluyen de forma instantánea hacia paneles de control, facturación y sistemas de calidad
  • Seguridad integrada: Los límites organizativos evitan la fuga de datos entre instalaciones hermanas
  • Eficiencia para el desarrollador: Conformidad nativa con FHIR sin middleware personalizado ni infraestructura compleja

Tanto si está diseñando una red hospitalaria regional, gestionando múltiples clínicas o construyendo un sistema EHR multiconsultorio, Aidbox proporciona la base segura y escalable que su sistema de salud necesita.

Comience a utilizar una licencia gratuita para desarrolladores para implementar OrgBAC y las subscriptions basadas en temas en su organización, o explore la documentación para obtener guías de implementación detalladas.

Véase también: RBAC con Keycloak y SMART on FHIR V2.

Compartir este artículo
Comments
Comments
Sign in
Loading comments...
Subscribe to our blog

Get the latest articles on FHIR, interoperability, and healthcare IT.