General Considerations
Conditional Cardinalities
NFDI4Health defined some "conditional cardinalities": The answer to a specific element decides if another element is triggered or not. The conditional cardinalities are represented in FHIR as invariants.
Validation
Testing and Valdiation of Conditional Cardinalities accross FHIR Resources was not feasible due to missing tools which accounted for the following invariants:
- study-recruitmentStatusRegister-a
- study-recruitmentStatusRegister-b
Validation of NCI Codes is currently not possible.
Contributors
"Contributors" (Resource.contributors*) represent humans and/or organizations/institutions involved e.g. in a study, in the creation of a document or questionnaire, etc.
NFDI4Health distinguish two types of contributors (* Resource.contributors.nameType*):
- "personal" contributors (= humans; * Resource.contributors.personal*) and
- "organisational" contributors (= organisations/institutions; Resource.contributors.organisational).
As contribution types differ between humans and organisations, we use two elements with different value sets (Resource.contributors.personal.type* and * Resource.contributors.organisational.type*).
Affiliations relate to both, personal and organisational contributors. They are always represented as Organization resource.
For human contributors:
- Contact information related to personal roles are stored in a PractitionerRole resource (NFDI4Health PR MDS Practitioner Role).
- The given name, family name, prefix and identifier related to the human having a "contribution" are stored in a Practitioner resource (NFDI4Health PR MDS Practitioner). The PractitionerRole resource (NFDI4Health PR MDS Practitioner Role) created previously references this Practitioner resource (NFDI4Health PR MDS Practitioner) via PractitionerRole.practitioner.
- Information related to affiliations of a human having a "contribution" are stored in an Organization resource ("NFDI4Health PR MDS Organization). The PractitionerRole (NFDI4Health PR MDS Practitioner Role) resource created previously references this Organization resource ("NFDI4Health PR MDS Organization) via PractitionerRole.organization.
For organisational contributors:
- All information related to organisational contributors (including affiliation information) are stored in an Organization resource ("NFDI4Health PR MDS Organization).
Provenance - NFDI4Health_PR_MDS_Provenance
NFDI4Health modelled its Provenance elements (* Resource.provenance* and children) based on ClinicalTrials.gov.
- In FHIR, a new Provenance resource is triggered for each new activity - meaning, there is a distinct Provenance resource for each activity. NFDI4Health defines following activities: "verification", "first submission", "first posting", "submission of last update" and "posting of last update". We created the value set NFDI4Health VS MDS Provenance Activity [HL7, local] to represent the provenance activity and made the element mandatory as the activity is used to distinguish the Provenance resources: It is mandatory to store the related activity (see mapping below) to enable the implementation in FHIR.
- In FHIR, the user/agent is mandatory. If there is no information about the user/agent, a placeholder is required.
- FHIR Queries on Provenance.activity and Provenance.recorded should be used to distinguish between "first" and "last" submission/posting/update
Resource.provenance.dataSource and * Resource.provenance.resourceVersion* are included in all Provenance resources.
Activity | NFDI4Health elements | FHIR elements |
---|---|---|
Provenance | Resource.provenance | Provenance |
Verification | Resource.provenance.verificationDate Resource.provenance.verificationUser |
Provenance.recorded Provenance.agent Provenance.activity = "verifier" |
First Submission | Resource.provenance.firstSubmittedDate Resource.provenance.firstSubmittedUser |
Provenance.recorded Provenance.agent Provenance.activity = "First submitted" |
First Posting | Resource.provenance.firstPostedDate Resource.provenance.firstPostedUser |
Provenance.recorded Provenance.agent Provenance.activity = "First posted" |
First Posting | Resource.provenance.lastUpdateSubmittedDate Resource.provenance.lastUpdateSubmittedUser |
Provenance.recorded Provenance.agent Provenance.activity = "Last update submitted" |
First Posting | Resource.provenance.lastUpdatePostedDate Resource.provenance.lastUpdatePostedUser |
Provenance.recorded Provenance.agent Provenance.activity = "Last update posted" |