Validator references
Revised Validator Reference Guide
FHIR Compartments & Custom Access Control Policies
Overview
This document provides a high-level reference for the validators used in our FHIR-based RBAC system. These validators combine official FHIR compartment definitions (e.g., Patient, Practitioner) with custom logic (e.g., Legitimate Interest, Organization Compartments) to enforce granular access controls. Each validator has a dedicated page in the ./validators/ directory for implementation details.
Key Design Principles
- FHIR Compliance:
- Built on FHIR R4 compartment definitions (Patient, Practitioner).
- Supports FHIR references (
subject,practitioner,encounter).
- Extensibility:
- Custom compartments (e.g.,
organization_compartment,legitimate_interest) address regulatory or organizational needs.
- Custom compartments (e.g.,
- Zero-Trust:
- Default deny-all (
forbidden) with explicit allow rules.
- Default deny-all (
Validator Types
1. Core FHIR Compartments
| Validator | Scope | FHIR Compliant |
|---|---|---|
patient_compartment | Patient-owned resources | Yes |
practitioner_compartment | Practitioner-linked resources | Yes |
relatedperson_compartment | RelatedPerson context | Yes |
encounter_compartment | Encounter-ephemeral workflows | Yes |
2. Policy-Driven Validators
| Validator | Use Case |
|---|---|
organization_compartment | Multi-tenant organization isolation |
legitimate_interest | GDPR/regulatory compliance |
general_practitioner | Patient-GP relationship enforcement |
3. Special Cases
| Validator | Behavior |
|---|---|
allowed | Bypass all checks (use sparingly) |
forbidden | Explicit deny rule (safety net) |
Example Workflow

How validators interact in a request:
- A
Patienttries to create anObservation. - The
patient_compartmentvalidator:- Checks the
Patientrole. - Validates
Observation.subjectmatches the patient’s ID.
- Checks the
- If compliant, access is granted.
When to Use Which Validator
| Scenario | Recommended Validator(s) |
|---|---|
| Patient accessing their lab results | patient_compartment |
| Practitioner updating a medication order | practitioner_compartment + organization_compartment |
| GDPR-compliant data sharing | legitimate_interest |
| IoT device submitting diagnostic data | device_compartment |
Custom Compartment Implementation
For non-FHIR compartments (e.g., organization_compartment), we:
- Tag resources with a custom extension:
"extension": [{
"url": "https://your-system.com/fhir/Extensions/organization-compartment",
"valueReference": { "reference": "Organization/123" }
}] - Use the
organization_compartmentvalidator to enforce access based on these tags.
Getting Started
- Default Configuration:
{
"rbac": {
"default_access": "forbidden",
"validation_rules": [
{
"client_role": "Patient",
"entity_name": "Observation",
"operation": "read",
"validator": "patient_compartment"
}
]
}
} - Explore Detailed Guides: