eHealth Infrastructure
2021.3.0 - build

eHealth Infrastructure - Local Development build (v2021.3.0). See the Directory of published versions

Resource Profile: ehealth-organization

Defining URL:http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-organization
Version:2021.3.0
Name:ehealth-organization
Status:Active as of 2021-11-25T09:32:14+00:00
Publisher:Systematic | Trifork
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://ehealth.sundhed.dk/fhir/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 (KOMBIT) 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 an SSL Identifier as identifier.

Identifier Systems:

  • SOR-ID: “urn:oid:1.2.208.176.1.1”
  • KOMBIT STS-ORG-ID: “https://www.kombit.dk/sts/organisation”
  • SSL Identifier: “http://ehealth.sundhed.dk/organization/ssl”

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

Source

The origin of an Organization is maintained in the extension organization-source which currently has the following concepts:

  • SOR for an organisation imported from SOR
  • STS-ORG for an organisation imported from STS-ORG
  • manual for a manually created organisation

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

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

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet
Organization.languagepreferredCommonLanguages
Max Binding: AllLanguages
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-3OrganizationIf 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-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-5OrganizationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6OrganizationA resource should have narrative for robust management
: text.`div`.exists()
org-1OrganizationThe organization SHALL at least have a name or an identifier, and possibly more than one
: (identifier.count() + name.count()) > 0
ele-1Organization.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.extensionMust 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() or (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() or (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() or (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() or (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() or (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() or (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() or (children().count() > id.count())
ext-1Organization.extension:specialtyMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.extension:relatedToAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.extension:relatedToMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.activeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.nameAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.aliasAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.telecomAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
org-3Organization.telecomThe telecom of an organization can never be of use 'home'
: where(use = 'home').empty()
ele-1Organization.telecom.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.telecom.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.telecom.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.telecom.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.telecom.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.telecom.rankAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.telecom.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.addressAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
org-2Organization.addressAn address of an organization can never be of use 'home'
: where(use = 'home').empty()
ele-1Organization.partOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.contactAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.contact.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.contact.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.contact.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.contact.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.contact.purposeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.contact.nameAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.contact.telecomAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.contact.telecom.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.contact.telecom.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.contact.telecom.extension:telecomValueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.contact.telecom.extension:telecomValueMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.contact.telecom.extension:telecomSystemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.contact.telecom.extension:telecomSystemMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.contact.telecom.extension:telecomCustodianAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Organization.contact.telecom.extension:telecomCustodianMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Organization.contact.telecom.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.contact.telecom.rankAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.contact.telecom.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.contact.addressAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Organization.endpointAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())