HL7 FHIR Implementation Guide: Data Access Policies
1.0.0-current - ci-build Global (Whole world)

HL7 FHIR Implementation Guide: Data Access Policies, published by HL7 International / Security. This guide is not an authorized publication; it is the continuous build for version 1.0.0-current built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/data-access-policies/ and changes regularly. See the Directory of published versions

Artifacts Summary

This page provides a list of the FHIR artifacts defined as part of this implementation guide.

Structures: Additional Resources

'Additional' resources that are not yet published in the FHIR core specification.

Permission

Permission resource holds access rules for a given data and access request context.

Behavior: Search Parameters

These define the properties by which a RESTful server can be searched. They can also be used for sorting and including related resources.

PermissionIdentifierSearchParam

The unique id for a particular permission

PermissionRuleActivityActorSearchParam

The activity actor mentioned in a permission rule (permit or deny).

PermissionRuleDataPeriodSearchParam

The data period mentioned in a permission rule (permit or deny).

PermissionRuleDataResourceSearchParam

The data resource mentioned in a permission rule (permit or deny).

PermissionRuleLimitElementSearchParam

The element limits mentioned in a permission rule (permit or deny).

PermissionStatusSearchParam
active entered-in-error draft rejected

Structures: Extension Definitions

These define constraints on FHIR data types for systems conforming to this implementation guide.

Permission From Consent

When the provisions of a Consent are encoded using a Permission, this extension is used to indicate the Permission from the Consent.

Terminology: Value Sets

These define sets of codes used by systems conforming to this implementation guide.

Current Roles in MyOrg

MyOrg current security roles

ValueSet for Permission Rule Combining

Codes identifying rule combining algorithm.

ValueSet of Permission Status

Codes identifying the lifecycle stage of a product.

Terminology: Code Systems

These define new code systems used by systems conforming to this implementation guide.

MyOrg defined Roles CodeSystem

The codes for Roles in MyOrg

Could possibly use the defined valueSet practitioner-role

Permission Rule Combining

Codes identifying the rule combining. See XACML Combining algorithms http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-cos01-en.html

Permission Status

Codes identifying the lifecycle stage of a product.

Example: Example Instances

These are example instances that show what data produced and consumed by systems conforming with this implementation guide might look like.

A Permission with all the Directory rules

This Permission has all the rules for the Directory.\n\nPermission allowing patient requested access to Practitioners, but protects the Practitioner sensitive location elements. \n\nPresumes Practitioner resources are tagged at the element level following DS4P Inline Security Labels that indicate the sensitive location elements using the LOCIS tag\n\nThis Permission encodes:\n\n- combining rule is deny-unless-permit, ANY permit authorizes access, so rules do not need to be exhaustively processed, but if no permit is found then access is denied.\n- rule is #permit for administrative actions on the directory\n - This enables maintenance by those with directory admin authorization\n- rule is #permit for Treatment, Payment, and Operations\n - This enables workers to access all workers\n - BUT includes an .limit.tag to exclude any elements marked with Location Sensitivity (#LOCIS)\n- rule is #permit for Patient requested (#PATRQT)\n - permits access by patients (or authorized patient delegate)\n - BUT only Practitioners that have a PractitionerRole.code=#doctor\n - BUT includes an .limit.tag to exclude any elements marked with Location Sensitivity (#LOCIS)

A Permission with all the Patient Directory rules

This Permission has all the rules for the Patient Directory.\n\nPermission allowing patient requested access to Practitioners, but protects the Practitioner sensitive location elements. \n\nPresumes Practitioner resources are tagged at the element level following DS4P Inline Security Labels that indicate the sensitive location elements using the LOCIS tag\n\nThis Permission encodes:\n\n- combining rule is deny-unless-permit, ANY permit authorizes access, so rules do not need to be exhaustively processed, but if no permit is found then access is denied.\n- rule is #permit for health directory use, patient requested, or family requested\n - This enables access all patients, provided Consent Permit is on file\n - BUT uses .limit.tag to exclude any elements marked with Religious Sensitivity (#REL)\n - Note that the Consent requirement is documented here with a .limit of NOAUTH. Might there be a better way?\n- rule is #permit for administrative actions on the directory\n - This enables maintenance by those with directory admin authorization

A Permission with all the Patient Directory rules

This Permission has all the rules for the Patient Directory.\n\nPermission allowing patient requested access to Practitioners, but protects the Practitioner sensitive location elements. \n\nPresumes Practitioner resources are tagged at the element level following DS4P Inline Security Labels that indicate the sensitive location elements using the LOCIS tag\n\nThis Permission encodes:\n\n- combining rule is deny-unless-permit, ANY permit authorizes access, so rules do not need to be exhaustively processed, but if no permit is found then access is denied.\n- rule is #permit for health directory use, patient requested, or family requested\n - This enables access all patients, provided Consent Permit is on file\n - BUT uses .limit.tag to exclude any elements marked with Religious Sensitivity (#REL)\n - Note that the Consent requirement is documented here with a .limit of NOAUTH. Might there be a better way?\n- rule is #permit for administrative actions on the directory\n - This enables maintenance by those with directory admin authorization

A base permission example.

Example of a Base Permission Imported in another Permission

A composite permission example that imports another permission as one of the rules.

Example of a Composite Permission that Imports Another Permission

Bundle with permission expressed residual rules to apply

Example Bundle with included Permission with residual restrictions

Consent Deny for Patient Directory

Consent by the patient to Deny access to the Patient Directory following the Patient Directory policy.

  • Consent is by the Patient
  • Deny
  • policy Basis is the Permission describing patient directory rules
Consent for Patient Directory

Consent by the patient to allow access to the Patient Directory following the Patient Directory policy.

  • Consent is by the Patient
  • Permit
  • policy Basis is the Permission describing patient directory rules
Consent for Patient Directory by Clinican

Consent by the Clinician on behalf of the patient to allow access to the Patient Directory following the Patient Directory policy.

  • Consent is by the Practitioner
  • Permit
  • policy Basis is the Permission describing patient directory rules
Consent that uses Overriding Permission for base rules

Where there is a Permission resource that describes the base policy, then a Consent can point at that Permission rather than a URL alone.

Consent that uses Permission for rules

Some would prefer to use the Permission rule encoding, and not the Consent.provision; thus the Consent is used to capture the ceremony, and points at a Permission for the rules.

Degenerate permission example

Example of permission

Directory permission allowing HR and IT full access

Example of simple directory admin allowing HR and IT

Directory permission with excluding sensitive elements

Example of authorizing some data in a directory but excluding sensitive elements

Dummy MeasureReport example

Dummy MeasureReport example for completeness sake. No actual use of this resource other than an example target that is NOT patient specific.

Dummy Organization example

Dummy Organization example for completeness sake. No actual use of this resource other than an example target

Dummy Patient example

Dummy patient example for completeness sake. No actual use of this resource other than an example target

Dummy Patient example with Religion

This patient is the same as ex-patient, with the extension for religious affiliation.

Dummy Practitioner de-sensitive example

Dummy Practitioner example. This Practitioner has has been de-sensitized from ex-practitioner-sensitive. Note that because the data has been redacted then .meta.security will have tag PROCESSINLINELABEL.

Dummy Practitioner example

Dummy Practitioner example for completeness sake. No actual use of this resource other than an example target

Dummy Practitioner sensitive example

Dummy Practitioner example. This Practitioner has some phone and address information that is tagged as sensitive location information. Note that because of this the Resource is tagged in .meta.security as having inline tags PROCESSINLINELABEL.

Fine Grained Patient Access to Data

Fine Grained Patient Access to Data\nThis Permission allows access to Patient resources marked with a TAG_1, but would remove the .address, .birthDate, and .meta\nThis Permission denies access to Patient resources marked with a VIP\n\nTODO Jira FHIR-51070 for potential better way to identify type of resource

Permission allowing data authored by a practitioner

Permission allowing data authored by\n\nThere is a Consent that captures the consent ceremony and setting\n- status is active - so it should be enforced\n- scope is privacy \n- category is LOINC 59284-0 Consent\n- date indicated when the consent is recorded\n- patient is identified\n- performer is the patient\n- organization is identified\n- source indicate a DocumentReference (with included text of the policy)\n- policy url points at this Permission\n\nThis Permission encodes\n- base rule is #permit \n- base rule includes TPO so as to be clear this is a consent about TPO\n- Permits access to data authored by practitioner 1\n- Given that there is only one targeted permit rule, then nothing else is allowed.

Permission allowing data authored by a practitioner

Permission allowing data authored by\n\nThere is a Consent that captures the consent ceremony and setting\n- status is active - so it should be enforced\n- scope is privacy \n- category is LOINC 59284-0 Consent\n- date indicated when the consent is recorded\n- patient is identified\n- performer is the patient\n- organization is identified\n- source indicate a DocumentReference (with included text of the policy)\n- policy url points at this Permission\n\nThis Permission encodes\n- base rule is #permit \n- base rule includes TPO so as to be clear this is a consent about TPO\n- Permits access to data authored by practitioner 1\n- Given that there is only one targeted permit rule, then nothing else is allowed.

Permission allowing data to be used, but don't expose sensitive location elements

Permission allowing patient requested access to Practitioners, but protects the Practitioner sensitive location elements. \n\nPresumes Practitioner resources are tagged at the element level following DS4P Inline Security Labels that indicate the sensitive location elements using the LOCIS tag

Permission allowing data to be used, but with redisclosure condition

Permission allowing requested use, but restricting redisclosure\n\nThis Permission encodes\n\n- base rule is #permit\n- base rule includes TPO so as to be clear this is authorizes TPO\n- includes a residual (limit) using code NODSCLCDS

Permission allowing most sharing but NOT data authored by a practitioner

Permission allowing most sharing of data but NOT data authored by a practitioner\n\nThe Consent that captures the consent ceremony and setting:\n- status is active - so it should be enforced\n- scope is privacy \n- category is LOINC 59284-0 Consent\n- date indicated when the consent is recorded\n- patient is identified\n- performer is the patient\n- organization is identified\n- source indicate a DocumentReference (with included text of the policy)\n- policy url points at this Permission\n\nThis Permission encodes\n- base rule includes TPO so as to be clear this is a consent about TPO\n- second rule denying access to data authored by ex-practitioner\n - practitioner 1\n- nothing else is authorized by this Permission

Permission allowing most use but NOT a given practitioner

Permission allowing most use of data but NOT a given practitioner\n\nThis Permission encodes\n- base rule includes TPO so as to be clear this generally authorizes TPO\n- second rule denying access to a given ex-practitioner\n - practitioner 1\n- nothing else is authorized by this Permission

Permission allowing most use but expires in a year

Permission allowing most use of data but expires in a year. Note that this 'year' indication is based on absolute dates of issuing of the Permission, and use of Permission.validity.\n\nThis Permission encodes\n- base rule includes TPO so as to be clear this generally authorizes TPO\n- validity is a period of one year

Permission expressing an overriding policy using ABAC

As an overriding policy, this policy needs to express who can READ, who can CREATE, who can UPDATE, who can DELETE.

Permission expressing an overriding policy using RBAC with Resource first

As an overriding policy, this policy needs to express who can READ, who can CREATE, who can UPDATE, who can DELETE.

Permission expressing an overriding policy using RBAC with Role first

As an overriding policy, this policy needs to express who can READ, who can CREATE, who can UPDATE, who can DELETE.

PractitionerRole defining those that are Admin

Admin

PractitionerRole defining those that are Dietician

Dietician

PractitionerRole defining those that are Doctors

Doctors

PractitionerRole defining those that are Janitor

Janitor

PractitionerRole defining those that are Registration

Registration

SANER permission example

Example of permission for SANER

VhDir permission example

Example of permission for VhDir

Other

These are resources that are used within this implementation guide that do not fit into one of the other categories.

Permission-examples
Permission-operations