eHealth Infrastructure (v2020.2)

StructureDefinition: ehealth-organization

Introduction

An Organizations is a formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action. Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, etc.

Scope and Usage

In scope of the eHealth infrastructure Organizations are limited to represent organizations in the Danish healthcare system as defined by the national health organization registry, SOR, and the joint municipalities IT community Support System Organisation, STS-ORG.

From these sources Organizations are automatically imported into the eHealth infrastructure. It is not the intention that users of the infrastructure should create any other Organization resources.

For SSL supplier organizations not maintained by the SOR or STS-ORG registries, it is possible to manually create and maintain these organizations.

Identifiers

Organizations are imported into the eHealth infrastructure from SOR and STS-ORG. This means that organisations can have different identifiers depending on the source system. For some organisations (for instance SSL suppliers), organizations can use a business registration number (CVR number) as identifier.

  • SOR-ID: “urn:oid:1.2.208.176.1.1”
  • KOMBIT STS-ORG-ID: “https://www.kombit.dk/sts/organisation”
  • CVR number: “urn:oid:2.16.840.1.113883.2.24.1.1”

Organizations created manually are not allowed to have identifiers of types SOR-ID or KOMBIT STS-ORG-ID.

Import and merge

SOR supplies a list of updates each night. These updates will be merged into the existing organisation resources in the database.

STS-ORG provides a number of webservices where the newest organisation data can be fetched.

Contact information can be edited/added both in the integration platform and in the source systems. To ensure that no information is lost during merge, each ContactPoint will be tagged with a custodian element marking which system currently maintains it. When merging information from a given source, the ContactPoint elements with a different custodian will not be affected.

Relations to other organizations

It is possible to relate Organization resources to other Organization resources using the extension element relatedTo.

The intention with this element is to relate Organizations to other Organizations imported from another source. For instance to relate Organizations imported from SOR to similar Organizations imported from STS-ORG.

Hierarchical relations between Organizations imported from the same source are expressed using the partOf element.

Semantics of a relation between organizations

Relations between Organizations which are expressed using the extension element relatedTo have uni-directional semantics.

As an example this implies at that if two representations of the exact same Organization are imported from two different sources, then both could have a relatedTo element with the other Organization as target, and a relation type of e.g. “sameAs”.

Formal Views of Profile Content

The official URL for this profile is:

http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-organization

This profile builds on Organization.

This profile was published on Tue Mar 31 08:26:16 UTC 2020 as a draft by ehealth.sundhed.dk.

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

 

Terminology Bindings

PathConformanceValueSet
Organization.languageextensibleCommon Languages
Max Binding: All Languages
Organization.typerequiredOrganizationType
Organization.telecom.systemrequiredContactPointSystem
Organization.telecom.userequiredContactPointUse
Organization.contact.purposeextensibleContactEntityType
Organization.contact.telecom.userequiredContactPointUse

Constraints

IdPathDetailsRequirements
dom-2OrganizationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-1OrganizationIf the resource is contained in another resource, it SHALL NOT contain any narrative
: contained.text.empty()
dom-4OrganizationIf 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-3OrganizationIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource
: contained.where(('#'+id in %resource.descendants().reference).not()).empty()
org-1OrganizationThe organization SHALL at least have a name or an id, and possibly more than one
: (identifier.count() + name.count()) > 0
ele-1Organization.extension:relatedToAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Organization.extension:relatedToMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.extension:cvrNumberAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Organization.extension:cvrNumberMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.extension:regionCodeAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Organization.extension:regionCodeMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.extension:municipalityCodeAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Organization.extension:municipalityCodeMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.extension:sourceAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Organization.extension:sourceMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.extension:synchronizationStatusAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Organization.extension:synchronizationStatusMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.extension:providerIdentifierAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Organization.extension:providerIdentifierMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.extension:specialtyAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Organization.extension:specialtyMust have either extensions or value[x], not both
: extension.exists() != value.exists()
org-3Organization.telecomThe telecom of an organization can never be of use 'home'
: where(use = 'home').empty()
org-2Organization.addressAn address of an organization can never be of use 'home'
: where(use = 'home').empty()
ele-1Organization.contactAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
.