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

Resource Profile: Research Consortium

Official URL: https://nih-ncpi.github.io/ncpi-fhir-ig/StructureDefinition/ncpi-research-consortium Version: 0.2.0
Draft as of 2023-08-08 Computable Name: ResearchConsortium

A FHIR Organization representing a single consortium of which one or more NCPI Research Studies is a member.

Key Guidelines

For those studies which are a part of a research consortium, a single NCPI Research Consortium resource should be used to represent the consortium and all related studies should point to the consortium using the sponsor property.

Added Profile Restrictions

Each Consortium must have:

  • a meaningful name.
  • common IDs and acronyms be provided as aliases.
  • The telecom property can be used to provide a URL pointing to the consortium’s website.

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from Organization

NameFlagsCard.TypeDescription & Constraintsdoco
.. Organization 0..*OrganizationA grouping of people or organizations with a common purpose
... name 1..1stringName used for the organization

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Organization C0..*OrganizationA grouping of people or organizations with a common purpose
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... active ?!Σ0..1booleanWhether the organization's record is still in active use

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorOrganizationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorOrganizationIf 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-4errorOrganizationIf 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-5errorOrganizationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceOrganizationA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
org-1errorOrganizationThe organization SHALL at least have a name or an identifier, and possibly more than one
: (identifier.count() + name.count()) > 0
NameFlagsCard.TypeDescription & Constraintsdoco
.. Organization C0..*OrganizationA grouping of people or organizations with a common purpose
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier ΣC0..*IdentifierIdentifies this organization across multiple systems
... active ?!Σ0..1booleanWhether the organization's record is still in active use
... type Σ0..*CodeableConceptKind of organization
Binding: OrganizationType (example): Used to categorize the organization.


... name ΣC1..1stringName used for the organization
... alias 0..*stringA list of alternate names that the organization is known as, or was known as in the past
... telecom C0..*ContactPointA contact detail for the organization
... address C0..*AddressAn address for the organization
... partOf Σ0..1Reference(Organization)The organization of which this organization forms a part
... contact 0..*BackboneElementContact for the organization for a certain purpose
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... purpose 0..1CodeableConceptThe type of contact
Binding: ContactEntityType (extensible): The purpose for which you would contact a contact party.

.... name 0..1HumanNameA name associated with the contact
.... telecom 0..*ContactPointContact details (telephone, email, etc.) for a contact
.... address 0..1AddressVisiting or postal addresses for the contact
... endpoint 0..*Reference(Endpoint)Technical endpoints providing access to services operated for the organization

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Organization.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
Organization.typeexampleOrganizationType
Organization.contact.purposeextensibleContactEntityType

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
org-2errorOrganization.addressAn address of an organization can never be of use 'home'
: where(use = 'home').empty()
org-3errorOrganization.telecomThe telecom of an organization can never be of use 'home'
: where(use = 'home').empty()

This structure is derived from Organization

Summary

Mandatory: 1 element

Differential View

This structure is derived from Organization

NameFlagsCard.TypeDescription & Constraintsdoco
.. Organization 0..*OrganizationA grouping of people or organizations with a common purpose
... name 1..1stringName used for the organization

doco Documentation for this format

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Organization C0..*OrganizationA grouping of people or organizations with a common purpose
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... active ?!Σ0..1booleanWhether the organization's record is still in active use

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorOrganizationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorOrganizationIf 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-4errorOrganizationIf 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-5errorOrganizationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceOrganizationA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
org-1errorOrganizationThe organization SHALL at least have a name or an identifier, and possibly more than one
: (identifier.count() + name.count()) > 0

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Organization C0..*OrganizationA grouping of people or organizations with a common purpose
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier ΣC0..*IdentifierIdentifies this organization across multiple systems
... active ?!Σ0..1booleanWhether the organization's record is still in active use
... type Σ0..*CodeableConceptKind of organization
Binding: OrganizationType (example): Used to categorize the organization.


... name ΣC1..1stringName used for the organization
... alias 0..*stringA list of alternate names that the organization is known as, or was known as in the past
... telecom C0..*ContactPointA contact detail for the organization
... address C0..*AddressAn address for the organization
... partOf Σ0..1Reference(Organization)The organization of which this organization forms a part
... contact 0..*BackboneElementContact for the organization for a certain purpose
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... purpose 0..1CodeableConceptThe type of contact
Binding: ContactEntityType (extensible): The purpose for which you would contact a contact party.

.... name 0..1HumanNameA name associated with the contact
.... telecom 0..*ContactPointContact details (telephone, email, etc.) for a contact
.... address 0..1AddressVisiting or postal addresses for the contact
... endpoint 0..*Reference(Endpoint)Technical endpoints providing access to services operated for the organization

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Organization.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
Organization.typeexampleOrganizationType
Organization.contact.purposeextensibleContactEntityType

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
org-2errorOrganization.addressAn address of an organization can never be of use 'home'
: where(use = 'home').empty()
org-3errorOrganization.telecomThe telecom of an organization can never be of use 'home'
: where(use = 'home').empty()

This structure is derived from Organization

Summary

Mandatory: 1 element

 

Other representations of profile: CSV, Excel, Schematron

Notes:

The ResearchConsortium provides a clean organizational component to represent studies’ participation in a Consortium through the study’s sponsor property. This permits consortium member studies to be more easily found via standard FHIR searches.