Publish-box (todo)
Security Work Group | Maturity Level: 1 | Trial Use | Security Category: Not Classified | Compartments: No defined compartments |
Permission resource holds access rules for a given data and context.
A declarative attribute-based access control policy statement to express policies, refrains, and obligations. The Permission resource may be used to record the access control constraints under which data were collected or shared.
Note to Implementers: This resource is under-development, consult the FHIR Permission Confluence page for development details, plans, and use-case analysis.
The Permission resource may in the future be used as a provision within a Consent resource.
The Permission resource is intended to be used where Consent resource does not apply or where exposure of the full Consent details are not needed or desired. The Permission resource may be used to express transactional access control rules that may be derived from a Consent. The Permission resource is intended to be used when access control policy rules need to be expressed in an interoperable way other than Consent. Examples are use-cases that are not involving a patient subject. The Permission resource should not be used in a conflicting way with security labels in the .meta.security element.
No references for this Resource.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Permission | TU | DomainResource | Access Rules Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
identifier | Σ | 0..* | Identifier | Business Identifier for permission |
status | Σ | 1..1 | code | active | entered-in-error | draft | rejected Binding: Permission Status (Required) |
asserter | Σ | 0..1 | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson | HealthcareService) | The person or entity that asserts the permission |
date | Σ | 0..* | dateTime | The date that permission was asserted |
validity | Σ | 0..1 | Period | The period in which the permission is active |
justification | Σ | 0..1 | BackboneElement | The asserted justification for using the data |
basis | Σ | 0..* | CodeableConcept | The regulatory grounds upon which this Permission builds Binding: Consent PolicyRule Codes (Example) |
evidence | Σ | 0..* | Reference(Any) | Justifing rational |
combining | ?!Σ | 1..1 | code | deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny Binding: Permission Rule Combining (Required) |
rule | Σ | 0..* | BackboneElement | Constraints to the Permission This repeating element order: The order of the rules processing is defined in rule combining selected in .combining element. |
type | ?!Σ | 0..1 | code | deny | permit Binding: Consent Provision Type (Required) |
data | Σ | 0..* | BackboneElement | The selection criteria to identify data that is within scope of this provision |
resource | Σ | 0..* | BackboneElement | Explicit FHIR Resource references |
meaning | Σ | 1..1 | code | instance | related | dependents | authoredby Binding: Consent Data Meaning (Required) |
reference | Σ | 1..1 | Reference(Any) | The actual data reference |
security | Σ | 0..* | Coding | Security tag code on .meta.security |
period | Σ | 0..1 | Period | Timeframe encompasing data create/update |
expression | Σ | 0..1 | Expression | Expression identifying the data |
activity | Σ | 0..* | BackboneElement | A description or definition of which activities are allowed to be done on the data |
actor | Σ | 0..* | Reference(Device | Group | CareTeam | Organization | Patient | Practitioner | RelatedPerson | PractitionerRole) | Authorized actor(s) |
action | Σ | 0..* | CodeableConcept | Actions controlled by this rule Binding: Consent Action Codes (Example) |
purpose | Σ | 0..* | CodeableConcept | The purpose for which the permission is given Binding: PurposeOfUse (Preferred) |
limit | Σ | 0..* | CodeableConcept | What limits apply to the use of the data Binding: Example set of Event / Bundle used Security Labels (Example) |
Documentation for this format |
See the Extensions for this resource
UML Diagram (Legend)
XML Template
<Permission xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Business Identifier for permission --></identifier> <status value="[code]"/><!-- 1..1 active | entered-in-error | draft | rejected --> <asserter><!-- 0..1 Reference(CareTeam|HealthcareService|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson) The person or entity that asserts the permission --></asserter> <date value="[dateTime]"/><!-- 0..* The date that permission was asserted --> <validity><!-- 0..1 Period The period in which the permission is active --></validity> <justification> <!-- 0..1 The asserted justification for using the data --> <basis><!-- 0..* CodeableConcept The regulatory grounds upon which this Permission builds --></basis> <evidence><!-- 0..* Reference(Any) Justifing rational --></evidence> </justification> <combining value="[code]"/><!-- 1..1 deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny --> <rule> <!-- 0..* Constraints to the Permission --> <type value="[code]"/><!-- 0..1 deny | permit --> <data> <!-- 0..* The selection criteria to identify data that is within scope of this provision --> <resource> <!-- 0..* Explicit FHIR Resource references --> <meaning value="[code]"/><!-- 1..1 instance | related | dependents | authoredby --> <reference><!-- 1..1 Reference(Any) The actual data reference --></reference> </resource> <security><!-- 0..* Coding Security tag code on .meta.security --></security> <period><!-- 0..1 Period Timeframe encompasing data create/update --></period> <expression><!-- 0..1 Expression Expression identifying the data --></expression> </data> <activity> <!-- 0..* A description or definition of which activities are allowed to be done on the data --> <actor><!-- 0..* Reference(CareTeam|Device|Group|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson) Authorized actor(s) --></actor> <action><!-- 0..* CodeableConcept Actions controlled by this rule --></action> <purpose><!-- 0..* CodeableConcept The purpose for which the permission is given --></purpose> </activity> <limit><!-- 0..* CodeableConcept What limits apply to the use of the data --></limit> </rule> </Permission>
JSON Template
{ "resourceType" : "Permission", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // Business Identifier for permission "status" : "<code>", // R! active | entered-in-error | draft | rejected "asserter" : { Reference(CareTeam|HealthcareService|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson) }, // The person or entity that asserts the permission "date" : ["<dateTime>"], // The date that permission was asserted "validity" : { Period }, // The period in which the permission is active "justification" : { // The asserted justification for using the data "basis" : [{ CodeableConcept }], // The regulatory grounds upon which this Permission builds "evidence" : [{ Reference(Any) }] // Justifing rational }, "combining" : "<code>", // R! deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny "rule" : [{ // Constraints to the Permission "type" : "<code>", // deny | permit "data" : [{ // The selection criteria to identify data that is within scope of this provision "resource" : [{ // Explicit FHIR Resource references "meaning" : "<code>", // R! instance | related | dependents | authoredby "reference" : { Reference(Any) } // R! The actual data reference }], "security" : [{ Coding }], // Security tag code on .meta.security "period" : { Period }, // Timeframe encompasing data create/update "expression" : { Expression } // Expression identifying the data }], "activity" : [{ // A description or definition of which activities are allowed to be done on the data "actor" : [{ Reference(CareTeam|Device|Group|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson) }], // Authorized actor(s) "action" : [{ CodeableConcept }], // Actions controlled by this rule "purpose" : [{ CodeableConcept }] // The purpose for which the permission is given }], "limit" : [{ CodeableConcept }] // What limits apply to the use of the data }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:Permission; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:identifier ( [ Identifier ] ... ) ; # 0..* Business Identifier for permission fhir:status [ code ] ; # 1..1 active | entered-in-error | draft | rejected fhir:asserter [ Reference(CareTeam|HealthcareService|Organization|Patient|Practitioner|PractitionerRole| RelatedPerson) ] ; # 0..1 The person or entity that asserts the permission fhir:date ( [ dateTime ] ... ) ; # 0..* The date that permission was asserted fhir:validity [ Period ] ; # 0..1 The period in which the permission is active fhir:justification [ # 0..1 The asserted justification for using the data fhir:basis ( [ CodeableConcept ] ... ) ; # 0..* The regulatory grounds upon which this Permission builds fhir:evidence ( [ Reference(Any) ] ... ) ; # 0..* Justifing rational ] ; fhir:combining [ code ] ; # 1..1 deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny fhir:rule ( [ # 0..* Constraints to the Permission fhir:type [ code ] ; # 0..1 deny | permit fhir:data ( [ # 0..* The selection criteria to identify data that is within scope of this provision fhir:resource ( [ # 0..* Explicit FHIR Resource references fhir:meaning [ code ] ; # 1..1 instance | related | dependents | authoredby fhir:reference [ Reference(Any) ] ; # 1..1 The actual data reference ] ... ) ; fhir:security ( [ Coding ] ... ) ; # 0..* Security tag code on .meta.security fhir:period [ Period ] ; # 0..1 Timeframe encompasing data create/update fhir:expression [ Expression ] ; # 0..1 Expression identifying the data ] ... ) ; fhir:activity ( [ # 0..* A description or definition of which activities are allowed to be done on the data fhir:actor ( [ Reference(CareTeam|Device|Group|Organization|Patient|Practitioner|PractitionerRole| RelatedPerson) ] ... ) ; # 0..* Authorized actor(s) fhir:action ( [ CodeableConcept ] ... ) ; # 0..* Actions controlled by this rule fhir:purpose ( [ CodeableConcept ] ... ) ; # 0..* The purpose for which the permission is given ] ... ) ; fhir:limit ( [ CodeableConcept ] ... ) ; # 0..* What limits apply to the use of the data ] ... ) ; ]
Changes from both R4 and R4B
This resource did not exist in Release R4
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Permission | TU | DomainResource | Access Rules Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
identifier | Σ | 0..* | Identifier | Business Identifier for permission |
status | Σ | 1..1 | code | active | entered-in-error | draft | rejected Binding: Permission Status (Required) |
asserter | Σ | 0..1 | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson | HealthcareService) | The person or entity that asserts the permission |
date | Σ | 0..* | dateTime | The date that permission was asserted |
validity | Σ | 0..1 | Period | The period in which the permission is active |
justification | Σ | 0..1 | BackboneElement | The asserted justification for using the data |
basis | Σ | 0..* | CodeableConcept | The regulatory grounds upon which this Permission builds Binding: Consent PolicyRule Codes (Example) |
evidence | Σ | 0..* | Reference(Any) | Justifing rational |
combining | ?!Σ | 1..1 | code | deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny Binding: Permission Rule Combining (Required) |
rule | Σ | 0..* | BackboneElement | Constraints to the Permission This repeating element order: The order of the rules processing is defined in rule combining selected in .combining element. |
type | ?!Σ | 0..1 | code | deny | permit Binding: Consent Provision Type (Required) |
data | Σ | 0..* | BackboneElement | The selection criteria to identify data that is within scope of this provision |
resource | Σ | 0..* | BackboneElement | Explicit FHIR Resource references |
meaning | Σ | 1..1 | code | instance | related | dependents | authoredby Binding: Consent Data Meaning (Required) |
reference | Σ | 1..1 | Reference(Any) | The actual data reference |
security | Σ | 0..* | Coding | Security tag code on .meta.security |
period | Σ | 0..1 | Period | Timeframe encompasing data create/update |
expression | Σ | 0..1 | Expression | Expression identifying the data |
activity | Σ | 0..* | BackboneElement | A description or definition of which activities are allowed to be done on the data |
actor | Σ | 0..* | Reference(Device | Group | CareTeam | Organization | Patient | Practitioner | RelatedPerson | PractitionerRole) | Authorized actor(s) |
action | Σ | 0..* | CodeableConcept | Actions controlled by this rule Binding: Consent Action Codes (Example) |
purpose | Σ | 0..* | CodeableConcept | The purpose for which the permission is given Binding: PurposeOfUse (Preferred) |
limit | Σ | 0..* | CodeableConcept | What limits apply to the use of the data Binding: Example set of Event / Bundle used Security Labels (Example) |
Documentation for this format |
See the Extensions for this resource
XML Template
<Permission xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Business Identifier for permission --></identifier> <status value="[code]"/><!-- 1..1 active | entered-in-error | draft | rejected --> <asserter><!-- 0..1 Reference(CareTeam|HealthcareService|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson) The person or entity that asserts the permission --></asserter> <date value="[dateTime]"/><!-- 0..* The date that permission was asserted --> <validity><!-- 0..1 Period The period in which the permission is active --></validity> <justification> <!-- 0..1 The asserted justification for using the data --> <basis><!-- 0..* CodeableConcept The regulatory grounds upon which this Permission builds --></basis> <evidence><!-- 0..* Reference(Any) Justifing rational --></evidence> </justification> <combining value="[code]"/><!-- 1..1 deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny --> <rule> <!-- 0..* Constraints to the Permission --> <type value="[code]"/><!-- 0..1 deny | permit --> <data> <!-- 0..* The selection criteria to identify data that is within scope of this provision --> <resource> <!-- 0..* Explicit FHIR Resource references --> <meaning value="[code]"/><!-- 1..1 instance | related | dependents | authoredby --> <reference><!-- 1..1 Reference(Any) The actual data reference --></reference> </resource> <security><!-- 0..* Coding Security tag code on .meta.security --></security> <period><!-- 0..1 Period Timeframe encompasing data create/update --></period> <expression><!-- 0..1 Expression Expression identifying the data --></expression> </data> <activity> <!-- 0..* A description or definition of which activities are allowed to be done on the data --> <actor><!-- 0..* Reference(CareTeam|Device|Group|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson) Authorized actor(s) --></actor> <action><!-- 0..* CodeableConcept Actions controlled by this rule --></action> <purpose><!-- 0..* CodeableConcept The purpose for which the permission is given --></purpose> </activity> <limit><!-- 0..* CodeableConcept What limits apply to the use of the data --></limit> </rule> </Permission>
JSON Template
{ "resourceType" : "Permission", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // Business Identifier for permission "status" : "<code>", // R! active | entered-in-error | draft | rejected "asserter" : { Reference(CareTeam|HealthcareService|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson) }, // The person or entity that asserts the permission "date" : ["<dateTime>"], // The date that permission was asserted "validity" : { Period }, // The period in which the permission is active "justification" : { // The asserted justification for using the data "basis" : [{ CodeableConcept }], // The regulatory grounds upon which this Permission builds "evidence" : [{ Reference(Any) }] // Justifing rational }, "combining" : "<code>", // R! deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny "rule" : [{ // Constraints to the Permission "type" : "<code>", // deny | permit "data" : [{ // The selection criteria to identify data that is within scope of this provision "resource" : [{ // Explicit FHIR Resource references "meaning" : "<code>", // R! instance | related | dependents | authoredby "reference" : { Reference(Any) } // R! The actual data reference }], "security" : [{ Coding }], // Security tag code on .meta.security "period" : { Period }, // Timeframe encompasing data create/update "expression" : { Expression } // Expression identifying the data }], "activity" : [{ // A description or definition of which activities are allowed to be done on the data "actor" : [{ Reference(CareTeam|Device|Group|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson) }], // Authorized actor(s) "action" : [{ CodeableConcept }], // Actions controlled by this rule "purpose" : [{ CodeableConcept }] // The purpose for which the permission is given }], "limit" : [{ CodeableConcept }] // What limits apply to the use of the data }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:Permission; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:identifier ( [ Identifier ] ... ) ; # 0..* Business Identifier for permission fhir:status [ code ] ; # 1..1 active | entered-in-error | draft | rejected fhir:asserter [ Reference(CareTeam|HealthcareService|Organization|Patient|Practitioner|PractitionerRole| RelatedPerson) ] ; # 0..1 The person or entity that asserts the permission fhir:date ( [ dateTime ] ... ) ; # 0..* The date that permission was asserted fhir:validity [ Period ] ; # 0..1 The period in which the permission is active fhir:justification [ # 0..1 The asserted justification for using the data fhir:basis ( [ CodeableConcept ] ... ) ; # 0..* The regulatory grounds upon which this Permission builds fhir:evidence ( [ Reference(Any) ] ... ) ; # 0..* Justifing rational ] ; fhir:combining [ code ] ; # 1..1 deny-overrides | permit-overrides | ordered-deny-overrides | ordered-permit-overrides | deny-unless-permit | permit-unless-deny fhir:rule ( [ # 0..* Constraints to the Permission fhir:type [ code ] ; # 0..1 deny | permit fhir:data ( [ # 0..* The selection criteria to identify data that is within scope of this provision fhir:resource ( [ # 0..* Explicit FHIR Resource references fhir:meaning [ code ] ; # 1..1 instance | related | dependents | authoredby fhir:reference [ Reference(Any) ] ; # 1..1 The actual data reference ] ... ) ; fhir:security ( [ Coding ] ... ) ; # 0..* Security tag code on .meta.security fhir:period [ Period ] ; # 0..1 Timeframe encompasing data create/update fhir:expression [ Expression ] ; # 0..1 Expression identifying the data ] ... ) ; fhir:activity ( [ # 0..* A description or definition of which activities are allowed to be done on the data fhir:actor ( [ Reference(CareTeam|Device|Group|Organization|Patient|Practitioner|PractitionerRole| RelatedPerson) ] ... ) ; # 0..* Authorized actor(s) fhir:action ( [ CodeableConcept ] ... ) ; # 0..* Actions controlled by this rule fhir:purpose ( [ CodeableConcept ] ... ) ; # 0..* The purpose for which the permission is given ] ... ) ; fhir:limit ( [ CodeableConcept ] ... ) ; # 0..* What limits apply to the use of the data ] ... ) ; ]
Changes from both R4 and R4B
This resource did not exist in Release R4
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.
Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions, the spreadsheet version & the dependency analysis
Path | ValueSet | Type | Documentation |
---|---|---|---|
Permission.status | PermissionStatus | Required | Codes identifying the lifecycle stage of a product. |
Permission.justification.basis | ConsentPolicyRuleCodes | Example | This value set includes sample Regulatory consent policy types from the US and other regions. |
Permission.combining | PermissionRuleCombining | Required | Codes identifying rule combining algorithm. |
Permission.rule.type | ConsentProvisionType | Required | How a rule statement is applied, such as adding additional consent or removing consent. |
Permission.rule.data.resource.meaning | ConsentDataMeaning | Required | How a resource reference is interpreted when testing consent restrictions. |
Permission.rule.activity.action | ConsentActionCodes | Example | This value set includes sample Consent Action codes. |
Permission.rule.activity.purpose | PurposeOfUse | Preferred | Supports communication of purpose of use at a general level. |
Permission.rule.limit | SecurityLabelEventExamples | Example | A sample of security labels from Healthcare Privacy and Security Classification System that are used on events and requests/responses (aka user context or organization context) made up of PurposeOfUse and maybe a refrain/obligation. |
Each .rule
is evaulated within the combining rule identified in the .combining
element.
Within a .rule
any repititions of the .data
element are in an OR relationship. That is to say that the data identified by the rule is all the data identified by all repititions of .data
. Thus to identify one rule that applies to data tagged with STD
and data that is tagged with HIV
, one would repeat this at the .data
level.
Within a .rule
any repititions of the .activity
element are in an OR relationship. That is to say that the rule applies to all the repititions of .activity
. Thus to identify one rule that applies to both TREAT
and HOPERAT
, one would have one rule with repititions at the .activity level.
Within a .rule
all repititions of the .limit
all apply to the rule. That is to say if there are multiple limits, and the rule permits the activity, then all the identified limits are applied to that authorized activity.
Within the .data
element, all elements and all repetitions of elements, are in an AND relationship. Thus to select data that has both STD
and HIV
one puts both into one .rule
. To have different rules for STD
from HIV
, one would need to have two .rule
elements. To have a rule that applies to both, those that have just STD
and just HIV
, this repitition may also be done at the data level as described above.
Within the .activity
element, all elements and all repetitions of elements, are in an AND relationship. Thus to control an actity that is covering purpose of both TREAT
and HOPERAT
, one rule with an .activity
.purpose
holding both TREAT
and HOPERAT
can define that rule. However this will not cover activities covering only TREAT
, for that repeat at the .activity
with just a .purpose
of TREAT
.
Search parameters for this resource. See also the full list of search parameters for this resource, and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
Name | Type | Description | Expression | In Common |
identifier | token | The unique id for a particular permission | Permission.identifier | |
status | token | active | entered-in-error | draft | rejected | Permission.status |