NCPI FHIR Implementation Guide
0.2.0 - ci-build
NCPI FHIR Implementation Guide - Local Development build (v0.2.0). See the Directory of published versions
Official URL: https://nih-ncpi.github.io/ncpi-fhir-ig/StructureDefinition/study-group | Version: 0.2.0 | |||
Draft as of 2023-09-15 | Computable Name: StudyGroup |
Grouping subject participation within a research study is helpful to provide definitive lists of participants that fit a specific criteria such as All Participants or Participants From a Particular Consent Group, etc.
While there can be more than one StudyGroup per study, there must be one group representing the entire study enrollment. Patients can be members of more than one StudyGroup.
In order to ensure consistency across all NCPI research studies represented in FHIR, there are some additional requirements that are to be enforced:
A StudyGroup should exist alongside any row level data, but these resources can also exist outside a restricted FHIR server to provide access to non-row level information, such as the number of individuals that can be found in a given study.
Usage:
Description of Profiles, Differentials, Snapshots and how the different presentations work.
This structure is derived from Group
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Group | 0..* | Group | Group of multiple entities | |
type | 1..1 | code | person | animal | practitioner | device | medication | substance Required Pattern: person | |
actual | 1..1 | boolean | Descriptive or actual Required Pattern: true | |
code | 0..1 | CodeableConcept | Kind of Group members Required Pattern: At least the following | |
coding | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex) | |
system | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct | |
code | 1..1 | code | Symbol in syntax defined by the system Fixed Value: 44807982 | |
display | 1..1 | string | Representation defined by the system Fixed Value: Participant in research study | |
quantity | 1..1 | unsignedInt | Number of members | |
member | ||||
entity | 1..1 | Reference(Patient) | Reference to the group member | |
Documentation for this format |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Group | C | 0..* | Group | Group of multiple entities |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
type | Σ | 1..1 | code | person | animal | practitioner | device | medication | substance Binding: GroupType (required): Types of resources that are part of group. Required Pattern: person |
actual | ΣC | 1..1 | boolean | Descriptive or actual Required Pattern: true |
code | Σ | 0..1 | CodeableConcept | Kind of Group members Binding: (unbound) (example): Kind of particular resource; e.g. cow, syringe, lake, etc. Required Pattern: At least the following |
coding | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex) | |
system | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct | |
code | 1..1 | code | Symbol in syntax defined by the system Fixed Value: 44807982 | |
display | 1..1 | string | Representation defined by the system Fixed Value: Participant in research study | |
quantity | Σ | 1..1 | unsignedInt | Number of members |
Documentation for this format |
Path | Conformance | ValueSet / Code |
Group.type | required | Pattern: person |
Group.code | example | Pattern: SNOMED CT code 44807982("Participant in research study") |
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | Group | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Group | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Group | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Group | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Group | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
grp-1 | error | Group | Can only have members if group is "actual" : member.empty() or (actual = true) |
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
Group | C | 0..* | Group | Group of multiple entities | ||||
id | Σ | 0..1 | id | Logical id of this artifact | ||||
meta | Σ | 0..1 | Meta | Metadata about the resource | ||||
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |||||
contained | 0..* | Resource | Contained, inline Resources | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ||||
identifier | Σ | 0..* | Identifier | Unique id | ||||
active | Σ | 0..1 | boolean | Whether this group's record is in active use | ||||
type | Σ | 1..1 | code | person | animal | practitioner | device | medication | substance Binding: GroupType (required): Types of resources that are part of group. Required Pattern: person | ||||
actual | ΣC | 1..1 | boolean | Descriptive or actual Required Pattern: true | ||||
code | Σ | 0..1 | CodeableConcept | Kind of Group members Binding: (unbound) (example): Kind of particular resource; e.g. cow, syringe, lake, etc. Required Pattern: At least the following | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
coding | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex) | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
system | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct | |||||
version | 0..1 | string | Version of the system - if relevant | |||||
code | 1..1 | code | Symbol in syntax defined by the system Fixed Value: 44807982 | |||||
display | 1..1 | string | Representation defined by the system Fixed Value: Participant in research study | |||||
userSelected | 0..1 | boolean | If this coding was chosen directly by the user | |||||
text | 0..1 | string | Plain text representation of the concept | |||||
name | Σ | 0..1 | string | Label for Group | ||||
quantity | Σ | 1..1 | unsignedInt | Number of members | ||||
managingEntity | Σ | 0..1 | Reference(Organization | RelatedPerson | Practitioner | PractitionerRole) | Entity that is the custodian of the Group's definition | ||||
characteristic | 0..* | BackboneElement | Include / Exclude group members by Trait | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
code | 1..1 | CodeableConcept | Kind of characteristic Binding: (unbound) (example): List of characteristics used to describe group members; e.g. gender, age, owner, location, etc. | |||||
value[x] | 1..1 | Value held by characteristic Binding: (unbound) (example): Value of descriptive member characteristic; e.g. red, male, pneumonia, Caucasian, etc. | ||||||
valueCodeableConcept | CodeableConcept | |||||||
valueBoolean | boolean | |||||||
valueQuantity | Quantity | |||||||
valueRange | Range | |||||||
valueReference | Reference(Any) | |||||||
exclude | 1..1 | boolean | Group includes or excludes | |||||
period | 0..1 | Period | Period over which characteristic is tested | |||||
member | C | 0..* | BackboneElement | Who or what is in group | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
entity | 1..1 | Reference(Patient) | Reference to the group member | |||||
period | 0..1 | Period | Period member belonged to the group | |||||
inactive | 0..1 | boolean | If member is no longer in group | |||||
Documentation for this format |
Path | Conformance | ValueSet / Code | ||||
Group.language | preferred | CommonLanguages
| ||||
Group.type | required | Pattern: person | ||||
Group.code | example | Pattern: SNOMED CT code 44807982("Participant in research study") | ||||
Group.characteristic.code | example | |||||
Group.characteristic.value[x] | example |
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | Group | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Group | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Group | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Group | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Group | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
grp-1 | error | Group | Can only have members if group is "actual" : member.empty() or (actual = true) |
This structure is derived from Group
Differential View
This structure is derived from Group
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Group | 0..* | Group | Group of multiple entities | |
type | 1..1 | code | person | animal | practitioner | device | medication | substance Required Pattern: person | |
actual | 1..1 | boolean | Descriptive or actual Required Pattern: true | |
code | 0..1 | CodeableConcept | Kind of Group members Required Pattern: At least the following | |
coding | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex) | |
system | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct | |
code | 1..1 | code | Symbol in syntax defined by the system Fixed Value: 44807982 | |
display | 1..1 | string | Representation defined by the system Fixed Value: Participant in research study | |
quantity | 1..1 | unsignedInt | Number of members | |
member | ||||
entity | 1..1 | Reference(Patient) | Reference to the group member | |
Documentation for this format |
Key Elements View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Group | C | 0..* | Group | Group of multiple entities |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
type | Σ | 1..1 | code | person | animal | practitioner | device | medication | substance Binding: GroupType (required): Types of resources that are part of group. Required Pattern: person |
actual | ΣC | 1..1 | boolean | Descriptive or actual Required Pattern: true |
code | Σ | 0..1 | CodeableConcept | Kind of Group members Binding: (unbound) (example): Kind of particular resource; e.g. cow, syringe, lake, etc. Required Pattern: At least the following |
coding | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex) | |
system | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct | |
code | 1..1 | code | Symbol in syntax defined by the system Fixed Value: 44807982 | |
display | 1..1 | string | Representation defined by the system Fixed Value: Participant in research study | |
quantity | Σ | 1..1 | unsignedInt | Number of members |
Documentation for this format |
Path | Conformance | ValueSet / Code |
Group.type | required | Pattern: person |
Group.code | example | Pattern: SNOMED CT code 44807982("Participant in research study") |
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | Group | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Group | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Group | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Group | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Group | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
grp-1 | error | Group | Can only have members if group is "actual" : member.empty() or (actual = true) |
Snapshot View
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
Group | C | 0..* | Group | Group of multiple entities | ||||
id | Σ | 0..1 | id | Logical id of this artifact | ||||
meta | Σ | 0..1 | Meta | Metadata about the resource | ||||
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |||||
contained | 0..* | Resource | Contained, inline Resources | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ||||
identifier | Σ | 0..* | Identifier | Unique id | ||||
active | Σ | 0..1 | boolean | Whether this group's record is in active use | ||||
type | Σ | 1..1 | code | person | animal | practitioner | device | medication | substance Binding: GroupType (required): Types of resources that are part of group. Required Pattern: person | ||||
actual | ΣC | 1..1 | boolean | Descriptive or actual Required Pattern: true | ||||
code | Σ | 0..1 | CodeableConcept | Kind of Group members Binding: (unbound) (example): Kind of particular resource; e.g. cow, syringe, lake, etc. Required Pattern: At least the following | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
coding | 1..* | Coding | Code defined by a terminology system Fixed Value: (complex) | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
system | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct | |||||
version | 0..1 | string | Version of the system - if relevant | |||||
code | 1..1 | code | Symbol in syntax defined by the system Fixed Value: 44807982 | |||||
display | 1..1 | string | Representation defined by the system Fixed Value: Participant in research study | |||||
userSelected | 0..1 | boolean | If this coding was chosen directly by the user | |||||
text | 0..1 | string | Plain text representation of the concept | |||||
name | Σ | 0..1 | string | Label for Group | ||||
quantity | Σ | 1..1 | unsignedInt | Number of members | ||||
managingEntity | Σ | 0..1 | Reference(Organization | RelatedPerson | Practitioner | PractitionerRole) | Entity that is the custodian of the Group's definition | ||||
characteristic | 0..* | BackboneElement | Include / Exclude group members by Trait | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
code | 1..1 | CodeableConcept | Kind of characteristic Binding: (unbound) (example): List of characteristics used to describe group members; e.g. gender, age, owner, location, etc. | |||||
value[x] | 1..1 | Value held by characteristic Binding: (unbound) (example): Value of descriptive member characteristic; e.g. red, male, pneumonia, Caucasian, etc. | ||||||
valueCodeableConcept | CodeableConcept | |||||||
valueBoolean | boolean | |||||||
valueQuantity | Quantity | |||||||
valueRange | Range | |||||||
valueReference | Reference(Any) | |||||||
exclude | 1..1 | boolean | Group includes or excludes | |||||
period | 0..1 | Period | Period over which characteristic is tested | |||||
member | C | 0..* | BackboneElement | Who or what is in group | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
entity | 1..1 | Reference(Patient) | Reference to the group member | |||||
period | 0..1 | Period | Period member belonged to the group | |||||
inactive | 0..1 | boolean | If member is no longer in group | |||||
Documentation for this format |
Path | Conformance | ValueSet / Code | ||||
Group.language | preferred | CommonLanguages
| ||||
Group.type | required | Pattern: person | ||||
Group.code | example | Pattern: SNOMED CT code 44807982("Participant in research study") | ||||
Group.characteristic.code | example | |||||
Group.characteristic.value[x] | example |
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | Group | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Group | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Group | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Group | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Group | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
grp-1 | error | Group | Can only have members if group is "actual" : member.empty() or (actual = true) |
This structure is derived from Group
Other representations of profile: CSV, Excel, Schematron
At the very least, there should be one StudyGroup that contains all members of the study. For those studies with more than one consent type, additional StudyGroups can be added.