From 68a48454badfe680bf2b09798010a2d5fd900705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Mon, 28 Aug 2023 13:54:29 +0300 Subject: [PATCH 01/17] Rework custodian profile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make the Provenance profile more generic, and add a separate profile for information custodianship (rekisterinpitäjä). --- input/fsh/custodian.fsh | 49 +++++++++++++++++++ ...venanceCustodianOccupationalHealthcare.fsh | 38 ++++++++++++++ .../provenanceCustodianPublicHealthcare.fsh | 23 +++++++++ .../provenanceWithCustodianInformation.fsh | 16 ------ input/fsh/provenance.fsh | 17 ------- 5 files changed, 110 insertions(+), 33 deletions(-) create mode 100644 input/fsh/custodian.fsh create mode 100644 input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh create mode 100644 input/fsh/examples/provenanceCustodianPublicHealthcare.fsh delete mode 100644 input/fsh/examples/provenanceWithCustodianInformation.fsh diff --git a/input/fsh/custodian.fsh b/input/fsh/custodian.fsh new file mode 100644 index 0000000..d9c879b --- /dev/null +++ b/input/fsh/custodian.fsh @@ -0,0 +1,49 @@ +Profile: FiBaseCustodian +Parent: FiBaseProvenance +Id: fi-base-custodian +Title: "FI Base Custodian" +Description: "This is the Finnish base profile for the Provenance resource, to be used to communicate the custodian of information (rekisterinpitäjä)." + +* agent ^slicing.discriminator.type = #value +* agent ^slicing.discriminator.path = "type" +* agent ^slicing.rules = #open +* agent ^slicing.description = "An agent SHALL have the type CST from http://terminology.hl7.org/CodeSystem/v3-ParticipationType" +* agent ^slicing.ordered = false + * ^short = "An agent SHALL have the type http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST. Other identifier may also be included." + +* agent contains custodian 1..1 + * ^short = "custodian (aka rekisterinpitäjä)." +* agent[custodian].type.coding.system = "http://terminology.hl7.org/CodeSystem/v3-ParticipationType" +* agent[custodian].type.coding.code = #CST + +* entity ^slicing.discriminator.type = #value +* entity ^slicing.discriminator.path = "entity" +* entity ^slicing.rules = #open +* entity ^slicing.description = "An entity SHALL have the .role source and a .what with an identifier the system urn:oid:1.2.246.537.5.40150 (KanTa-palvelut - Potilasasiakirjan rekisteritunnus)" +* entity ^slicing.ordered = false + * ^short = "Role source and a .what with an identifier with the system urn:oid:1.2.246.537.5.40150" + +* entity contains registerType 1..1 + * ^short = "registerType" +* entity[registerType].role = #source +* entity[registerType].what.identifier.system = #urn:oid:1.2.246.537.5.40150 + +/* +* entity contains occupationalHealthcare 0..1 + * ^short = "occupationalHealthcare" +* entity[occupationalHealthcare].role = #source +* entity[occupationalHealthcare].what.identifier.system = #urn:oid::1.2.246.537.5.40150 +* entity[occupationalHealthcare].what.identifier.value = #2 +*/ + +* entity contains privateOrg 0..1 + * ^short = "privateOrg" +* entity[privateOrg].role = #source +* entity[privateOrg].what.identifier.system = #urn:oid:1.2.246.537.5.40172 +* entity[privateOrg].what.identifier.value = #2 + +* entity contains registerSpecifier 0..1 + * ^short = "registerSpecifier" +* entity[registerSpecifier].role = #source +* entity[registerSpecifier].what.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX +* entity[registerSpecifier].what.identifier.system = "https://ytj.fi/" diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh new file mode 100644 index 0000000..ebc5b68 --- /dev/null +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh @@ -0,0 +1,38 @@ +Instance: ProvenanceCustodianOccupationalHealthcare +InstanceOf: FiBaseCustodian +Title: "Custodian of information (rekisterinpitäjä), private occupational healthcare" +Description: "Example of Provenance that communicates a public healthcare organization as the custodian information for an episode of care." +Usage: #example +* id = "custodian-occupational-healthcare" +* target = Reference(EpisodeOfCare/id-for-episode-1) +* recorded = "2015-02-07T13:28:17.239+02:00" +* agent[custodian] + * type + * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" + * text = "Rekisterinpitäjä" + * who + * type = #Organization + * identifier.value = "1.2.246.10.32515682.10.0" + * display = "Ratinan Terveys Oy" +* entity[registerType] + * role = #source + * what + * identifier + * system = "urn:oid:1.2.246.537.5.40150" + * value = #4 + * display = "Työterveyshuolto" +* entity[privateOrg] + * role = #source + * what + * identifier + * system = "urn:oid:1.2.246.537.5.40172" + * value = #2 + * display = "Yksityinen" +* entity[registerSpecifier] + * role = #source + * what + * identifier + * type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX + * system = "https://ytj.fi/" + * value = "2606155-7" + * display = "Sensotrend Oy" diff --git a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh new file mode 100644 index 0000000..e93b2a8 --- /dev/null +++ b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh @@ -0,0 +1,23 @@ +Instance: ProvenanceCustodianPublicHealthcare +InstanceOf: FiBaseCustodian +Title: "Custodian of information (rekisterinpitäjä), public healthcare" +Description: "Example of Provenance that communicates a public healthcare organization as the custodian information for an episode of care." +Usage: #example +* id = "custodian-public-healthcare" +* target = Reference(EpisodeOfCare/id-for-episode-1) +* recorded = "2023-08-25T16:42:17.239+03:00" +* agent[custodian] + * type + * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" + * text = "Rekisterinpitäjä" + * who + * type = #Organization + * identifier.value = "1.2.246.10.32213086.19.0" + * display = "Pirkanmaan hyvinvointialueen rekisterinpitäjä" +* entity[registerType] + * role = #source + * what + * identifier + * system = "urn:oid:1.2.246.537.5.40150" + * value = #2 + * display = "Julkinen terveydenhuolto" diff --git a/input/fsh/examples/provenanceWithCustodianInformation.fsh b/input/fsh/examples/provenanceWithCustodianInformation.fsh deleted file mode 100644 index 225eccb..0000000 --- a/input/fsh/examples/provenanceWithCustodianInformation.fsh +++ /dev/null @@ -1,16 +0,0 @@ -Instance: ProvenanceExample -InstanceOf: FiBaseProvenance -Title: "Custodian of information (rekisterinpitäjä)" -Description: "Example of Provenance that communicates custodian information for an episode of care." -Usage: #example -* id = "id-for-provenance-1" -* target = Reference(EpisodeOfCare/id-for-episode-1) -* recorded = "2015-02-07T13:28:17.239+02:00" -* agent[0].who.type = #Organization -* agent[0].who.identifier.value = "1.2.246.10.32213043.19.0" -* agent[0].type.coding[0].system = "http://terminology.hl7.org/CodeSystem/v3-ParticipationType" -* agent[0].type.coding[0].code = #custodian - -* extension[RegisterTypeCode].valueCoding.system = #urn:oid:1.2.246.537.5.40150.2009 -* extension[RegisterTypeCode].valueCoding.code = #2 -* extension[RegisterTypeCode].valueCoding.display = "Julkinen terveydenhuolto" diff --git a/input/fsh/provenance.fsh b/input/fsh/provenance.fsh index 127d58a..693ec8e 100644 --- a/input/fsh/provenance.fsh +++ b/input/fsh/provenance.fsh @@ -3,23 +3,6 @@ Parent: Provenance Id: fi-base-provenance Title: "FI Base Provenance" Description: "This is the Finnish base profile for the Provenance resource." -* ^status = #draft - * location only Reference(FiBaseLocation) * agent.who only Reference(FiBasePractitioner or FiBasePractitionerRole or FiBasePatient or RelatedPerson or Device or FiBaseOrganization) * agent.onBehalfOf only Reference(FiBasePractitioner or FiBasePractitionerRole or FiBasePatient or RelatedPerson or Device or FiBaseOrganization) - -* extension contains RegisterTypeCode named registerTypeCode 0..1 -* extension contains RegisterSpecifier named registerSpecifier 0..1 - -Extension: RegisterTypeCode -Id: register-type-code -Title: "RegisterTypeCode" -Description: "Extension RegisterTypeCode. (Required for Kanta Medical Records queries) TODO what is the system?" -* value[x] only Coding - -Extension: RegisterSpecifier -Id: register-specifier -Title: "RegisterSpecifier" -Description: "Extension Register Specifier (Rekisterin tarkenne in finnish) (Required for Kanta Medical Records queries)." -* value[x] only string From daa3cc735d5b7a9400cb81edb0deb21c7b88a42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Mon, 28 Aug 2023 13:55:29 +0300 Subject: [PATCH 02/17] Add a test file for data custodian profile To keep track of how this was tested. Not to be included into the IG. --- ...cupationalHealthcare-TEST_MADE-TO-FAIL.fsh | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 input/fsh/examples/provenanceCustodianOccupationalHealthcare-TEST_MADE-TO-FAIL.fsh diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare-TEST_MADE-TO-FAIL.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare-TEST_MADE-TO-FAIL.fsh new file mode 100644 index 0000000..7336bea --- /dev/null +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare-TEST_MADE-TO-FAIL.fsh @@ -0,0 +1,44 @@ +Instance: ProvenanceCustodianOccupationalHealthcareTEST +InstanceOf: FiBaseCustodian +Title: "Custodian of information (rekisterinpitäjä), private occupational healthcare" +Description: "Example of Provenance that communicates a public healthcare organization as the custodian information for an episode of care." +Usage: #example +* id = "custodian-occupational-healthcare-TEST" +* target = Reference(EpisodeOfCare/id-for-episode-1) +* recorded = "2015-02-07T13:28:17.239+02:00" +* agent[custodian] + * type +// * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CSL "custodian" + * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" + * text = "Rekisterinpitäjä" + * who + * type = #Organization + * identifier.value = "1.2.246.10.32515682.10.0" + * display = "Ratinan Terveys Oy" +* entity[registerType] + * role = #source + * what + * identifier +// * system = #urn:oid:1.2.246.537.5.40150.2009 + * system = #urn:oid:1.2.246.537.5.40150 + * value = #4 + * display = "Työterveyshuolto" +* entity[privateOrg] +// * role = #sauce + * role = #source + * what + * identifier +// * system = #urn:oid:1.2.246.537.6.40172 + * system = #urn:oid:1.2.246.537.5.40172 + * value = #2 + * display = "Yksityinen" +* entity[registerSpecifier] + * role = #source + * what + * identifier +// * type = http://terminology.hl7.org/CodeSystem/v2-0203#TAXI +// * system = "https://ytj.foo/" + * type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX + * system = "https://ytj.fi/" + * value = "2606155-7" + * display = "Sensotrend Oy" From 17888e96410fdeb88f7e3b60627445f84c480b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Mon, 28 Aug 2023 13:55:38 +0300 Subject: [PATCH 03/17] Revert "Add a test file for data custodian profile" This reverts commit daa3cc735d5b7a9400cb81edb0deb21c7b88a42b. --- ...cupationalHealthcare-TEST_MADE-TO-FAIL.fsh | 44 ------------------- 1 file changed, 44 deletions(-) delete mode 100644 input/fsh/examples/provenanceCustodianOccupationalHealthcare-TEST_MADE-TO-FAIL.fsh diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare-TEST_MADE-TO-FAIL.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare-TEST_MADE-TO-FAIL.fsh deleted file mode 100644 index 7336bea..0000000 --- a/input/fsh/examples/provenanceCustodianOccupationalHealthcare-TEST_MADE-TO-FAIL.fsh +++ /dev/null @@ -1,44 +0,0 @@ -Instance: ProvenanceCustodianOccupationalHealthcareTEST -InstanceOf: FiBaseCustodian -Title: "Custodian of information (rekisterinpitäjä), private occupational healthcare" -Description: "Example of Provenance that communicates a public healthcare organization as the custodian information for an episode of care." -Usage: #example -* id = "custodian-occupational-healthcare-TEST" -* target = Reference(EpisodeOfCare/id-for-episode-1) -* recorded = "2015-02-07T13:28:17.239+02:00" -* agent[custodian] - * type -// * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CSL "custodian" - * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" - * text = "Rekisterinpitäjä" - * who - * type = #Organization - * identifier.value = "1.2.246.10.32515682.10.0" - * display = "Ratinan Terveys Oy" -* entity[registerType] - * role = #source - * what - * identifier -// * system = #urn:oid:1.2.246.537.5.40150.2009 - * system = #urn:oid:1.2.246.537.5.40150 - * value = #4 - * display = "Työterveyshuolto" -* entity[privateOrg] -// * role = #sauce - * role = #source - * what - * identifier -// * system = #urn:oid:1.2.246.537.6.40172 - * system = #urn:oid:1.2.246.537.5.40172 - * value = #2 - * display = "Yksityinen" -* entity[registerSpecifier] - * role = #source - * what - * identifier -// * type = http://terminology.hl7.org/CodeSystem/v2-0203#TAXI -// * system = "https://ytj.foo/" - * type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX - * system = "https://ytj.fi/" - * value = "2606155-7" - * display = "Sensotrend Oy" From 002d40075f5bfb0f22004b8c8bd93f8565b15ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Tue, 29 Aug 2023 18:15:48 +0300 Subject: [PATCH 04/17] Work in progress... Just saving a snapshot before changing direction. Exploring whether the organization type should still be in `.agent.role`... --- input/fsh/custodian.fsh | 37 ++++++++----------- ...venanceCustodianOccupationalHealthcare.fsh | 2 +- .../provenanceCustodianPublicHealthcare.fsh | 7 ++++ 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/input/fsh/custodian.fsh b/input/fsh/custodian.fsh index d9c879b..c1e8f5a 100644 --- a/input/fsh/custodian.fsh +++ b/input/fsh/custodian.fsh @@ -2,48 +2,41 @@ Profile: FiBaseCustodian Parent: FiBaseProvenance Id: fi-base-custodian Title: "FI Base Custodian" -Description: "This is the Finnish base profile for the Provenance resource, to be used to communicate the custodian of information (rekisterinpitäjä)." +Description: "This is the Finnish base profile for the Provenance resource, to be used to communicate the custodian of information (*rekisterinpitäjä*)." * agent ^slicing.discriminator.type = #value * agent ^slicing.discriminator.path = "type" * agent ^slicing.rules = #open -* agent ^slicing.description = "An agent SHALL have the type CST from http://terminology.hl7.org/CodeSystem/v3-ParticipationType" -* agent ^slicing.ordered = false - * ^short = "An agent SHALL have the type http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST. Other identifier may also be included." +* agent ^slicing.description = "An agent SHALL have the `type` CST from http://terminology.hl7.org/CodeSystem/v3-ParticipationType" + * ^definition = "An agent SHALL have the `type` http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST." + * ^short = "An agent SHALL have the `type` http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST" * agent contains custodian 1..1 - * ^short = "custodian (aka rekisterinpitäjä)." + * ^definition = "The custodian of information (aka *rekisterinpitäjä*)." + * ^short = "The custodian (aka rekisterinpitäjä)." * agent[custodian].type.coding.system = "http://terminology.hl7.org/CodeSystem/v3-ParticipationType" * agent[custodian].type.coding.code = #CST * entity ^slicing.discriminator.type = #value * entity ^slicing.discriminator.path = "entity" * entity ^slicing.rules = #open -* entity ^slicing.description = "An entity SHALL have the .role source and a .what with an identifier the system urn:oid:1.2.246.537.5.40150 (KanTa-palvelut - Potilasasiakirjan rekisteritunnus)" -* entity ^slicing.ordered = false +* entity ^slicing.description = "An entity SHALL have the `.role` `source` and a `.what` with an identifier with the system `urn:oid:1.2.246.537.5.40150` (*KanTa-palvelut - Potilasasiakirjan rekisteritunnus*)" + * ^definition = "One entity with `.role` `source` and a `.what` with an identifier with the system `urn:oid:1.2.246.537.5.40150`." * ^short = "Role source and a .what with an identifier with the system urn:oid:1.2.246.537.5.40150" * entity contains registerType 1..1 - * ^short = "registerType" * entity[registerType].role = #source * entity[registerType].what.identifier.system = #urn:oid:1.2.246.537.5.40150 -/* -* entity contains occupationalHealthcare 0..1 - * ^short = "occupationalHealthcare" -* entity[occupationalHealthcare].role = #source -* entity[occupationalHealthcare].what.identifier.system = #urn:oid::1.2.246.537.5.40150 -* entity[occupationalHealthcare].what.identifier.value = #2 -*/ - -* entity contains privateOrg 0..1 - * ^short = "privateOrg" -* entity[privateOrg].role = #source -* entity[privateOrg].what.identifier.system = #urn:oid:1.2.246.537.5.40172 -* entity[privateOrg].what.identifier.value = #2 +* entity contains organizationRole 0..1 +* entity[organizationRole].role = #source +* entity[organizationRole].what.identifier.system = #urn:oid:1.2.246.537.5.40172 + * ^definition = "The status of an occupational healthcare provider (*eArkisto - Rekisteripitäjän laji*), i.e., whether the provider is a public or private actor. The value for the identifier SHALL be 1 for public, 2 for private." + * ^short = "Public or private occupational healthcare provider" * entity contains registerSpecifier 0..1 - * ^short = "registerSpecifier" * entity[registerSpecifier].role = #source * entity[registerSpecifier].what.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX * entity[registerSpecifier].what.identifier.system = "https://ytj.fi/" + * ^definition = "The customer company of an occupational healthcare provider, expressed with the business ID (*y-tunnus*) registered in the Finnish organization register [ytj.fi](https://ytj.fi). This is a required specifier for Kanta system when the data registry is for occupational healthcare for private companies." + * ^short = "Customer of private occupational healthcare" diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh index ebc5b68..95ec1c8 100644 --- a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh @@ -21,7 +21,7 @@ Usage: #example * system = "urn:oid:1.2.246.537.5.40150" * value = #4 * display = "Työterveyshuolto" -* entity[privateOrg] +* entity[organizationRole] * role = #source * what * identifier diff --git a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh index e93b2a8..4013a65 100644 --- a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh @@ -21,3 +21,10 @@ Usage: #example * system = "urn:oid:1.2.246.537.5.40150" * value = #2 * display = "Julkinen terveydenhuolto" +* entity[registerType] + * role = #source + * what + * identifier + * system = "urn:oid:1.2.246.537.5.40172" + * value = #1 + * display = "Julkinen" From b19a75753940cd2ec4a80532653f66003086d6cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Tue, 29 Aug 2023 22:39:21 +0300 Subject: [PATCH 05/17] Put organization role in .agent Also add some identifier types. And add .entity.agent as an example for the occupational healthcare. --- input/fsh/custodian.fsh | 28 +++++----- ...venanceCustodianOccupationalHealthcare.fsh | 53 ++++++++++++++++--- .../provenanceCustodianPublicHealthcare.fsh | 18 ++++--- 3 files changed, 70 insertions(+), 29 deletions(-) diff --git a/input/fsh/custodian.fsh b/input/fsh/custodian.fsh index c1e8f5a..2acaa09 100644 --- a/input/fsh/custodian.fsh +++ b/input/fsh/custodian.fsh @@ -8,31 +8,33 @@ Description: "This is the Finnish base profile for the Provenance resource, to b * agent ^slicing.discriminator.path = "type" * agent ^slicing.rules = #open * agent ^slicing.description = "An agent SHALL have the `type` CST from http://terminology.hl7.org/CodeSystem/v3-ParticipationType" - * ^definition = "An agent SHALL have the `type` http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST." - * ^short = "An agent SHALL have the `type` http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST" + * ^definition = "An agent SHALL have the `type` http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST, and a `role` from system `oid:1.2.246.537.5.40172` (*eArkisto - Rekisteripitäjän laji*)." + * ^short = "An agent with type http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST" * agent contains custodian 1..1 * ^definition = "The custodian of information (aka *rekisterinpitäjä*)." * ^short = "The custodian (aka rekisterinpitäjä)." -* agent[custodian].type.coding.system = "http://terminology.hl7.org/CodeSystem/v3-ParticipationType" -* agent[custodian].type.coding.code = #CST +* agent[custodian].type = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST +* agent[custodian].role.coding.system = "urn:oid:1.2.246.537.5.40172" + * ^definition = "The status of the healthcare provider (*eArkisto - Rekisteripitäjän laji*), i.e., whether the provider is a public or private actor. The value for the identifier SHALL be 1 for public, 2 for private." + * ^short = "Public or private occupational healthcare provider" +* agent[custodian].who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN +* agent[custodian].who.identifier.system = "urn:oid:1.2.246.537.6.202" + * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.202` (*THL - SOTE-organisaatiorekisteri*)." + * ^short = "ID of the provider in SOTE-organisaatiorekisteri" * entity ^slicing.discriminator.type = #value -* entity ^slicing.discriminator.path = "entity" +* entity ^slicing.discriminator.path = "what.identifier.system" * entity ^slicing.rules = #open -* entity ^slicing.description = "An entity SHALL have the `.role` `source` and a `.what` with an identifier with the system `urn:oid:1.2.246.537.5.40150` (*KanTa-palvelut - Potilasasiakirjan rekisteritunnus*)" - * ^definition = "One entity with `.role` `source` and a `.what` with an identifier with the system `urn:oid:1.2.246.537.5.40150`." +* entity ^slicing.description = "One entity SHALL have the `.role` `source` and a `.what` with an identifier with the system `urn:oid:1.2.246.537.5.40150` (*KanTa-palvelut - Potilasasiakirjan rekisteritunnus*) that indicates the type of the registry. If the identifier has the value 4 (*työterveyshuolto*, occupational healthcare), another entity element specifies the business ID (*y-tunnus*) of the customer organization." + * ^definition = "One entity SHALL have the `.role` `source` and a `.what` with an identifier with the system `urn:oid:1.2.246.537.5.40150` (*KanTa-palvelut - Potilasasiakirjan rekisteritunnus*) that indicates the type of the registry. If the identifier has the value 4 (*työterveyshuolto*, occupational healthcare), another entity element specifies the business ID (*y-tunnus*) of the customer organization." * ^short = "Role source and a .what with an identifier with the system urn:oid:1.2.246.537.5.40150" * entity contains registerType 1..1 * entity[registerType].role = #source * entity[registerType].what.identifier.system = #urn:oid:1.2.246.537.5.40150 - -* entity contains organizationRole 0..1 -* entity[organizationRole].role = #source -* entity[organizationRole].what.identifier.system = #urn:oid:1.2.246.537.5.40172 - * ^definition = "The status of an occupational healthcare provider (*eArkisto - Rekisteripitäjän laji*), i.e., whether the provider is a public or private actor. The value for the identifier SHALL be 1 for public, 2 for private." - * ^short = "Public or private occupational healthcare provider" + * ^definition = "The type of the information registry. From the system `oid:1.2.246.537.5.40150` (*KanTa-palvelut - Potilasasiakirjan rekisteritunnus*)." + * ^short = "Type of registry" * entity contains registerSpecifier 0..1 * entity[registerSpecifier].role = #source diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh index 95ec1c8..7e9276c 100644 --- a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh @@ -10,9 +10,18 @@ Usage: #example * type * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" * text = "Rekisterinpitäjä" + * role[0] + * coding[0] + * system = "urn:oid:1.2.246.537.5.40172" + * code = #2 + * display = "Yksityinen" + * text = "Yksityinen" * who * type = #Organization - * identifier.value = "1.2.246.10.32515682.10.0" + * identifier + * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN + * system = "urn:oid:1.2.246.537.6.202" + * value = "urn:oid:1.2.246.10.32515682.10.0" * display = "Ratinan Terveys Oy" * entity[registerType] * role = #source @@ -21,13 +30,24 @@ Usage: #example * system = "urn:oid:1.2.246.537.5.40150" * value = #4 * display = "Työterveyshuolto" -* entity[organizationRole] - * role = #source - * what - * identifier - * system = "urn:oid:1.2.246.537.5.40172" - * value = #2 - * display = "Yksityinen" + * agent[0] + * type + * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" + * text = "Rekisterinpitäjä" + * role[0] + * coding[0] + * system = "urn:oid:1.2.246.537.5.40172" + * code = #2 + * display = "Yksityinen" + * text = "Yksityinen" + * who + * type = #Organization + * identifier + * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN + * system = "urn:oid:1.2.246.537.6.202" + * value = "urn:oid:1.2.246.10.32515682.10.0" + * display = "Ratinan Terveys Oy" + * entity[registerSpecifier] * role = #source * what @@ -36,3 +56,20 @@ Usage: #example * system = "https://ytj.fi/" * value = "2606155-7" * display = "Sensotrend Oy" + * agent[0] + * type + * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" + * text = "Rekisterinpitäjä" + * role[0] + * coding[0] + * system = "urn:oid:1.2.246.537.5.40172" + * code = #2 + * display = "Yksityinen" + * text = "Yksityinen" + * who + * type = #Organization + * identifier + * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN + * system = "urn:oid:1.2.246.537.6.202" + * value = "urn:oid:1.2.246.10.32515682.10.0" + * display = "Ratinan Terveys Oy" diff --git a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh index 4013a65..3651082 100644 --- a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh @@ -10,9 +10,18 @@ Usage: #example * type * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" * text = "Rekisterinpitäjä" + * role[0] + * coding[0] + * system = "urn:oid:1.2.246.537.5.40172" + * code = #1 + * display = "Julkinen" + * text = "Julkinen" * who * type = #Organization - * identifier.value = "1.2.246.10.32213086.19.0" + * identifier + * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN + * system = "urn:oid:1.2.246.537.6.202" + * value = "urn:oid:1.2.246.10.32213086.19.0" * display = "Pirkanmaan hyvinvointialueen rekisterinpitäjä" * entity[registerType] * role = #source @@ -21,10 +30,3 @@ Usage: #example * system = "urn:oid:1.2.246.537.5.40150" * value = #2 * display = "Julkinen terveydenhuolto" -* entity[registerType] - * role = #source - * what - * identifier - * system = "urn:oid:1.2.246.537.5.40172" - * value = #1 - * display = "Julkinen" From c23892456dfd091016987d12e6431341059650dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Thu, 31 Aug 2023 16:30:10 +0300 Subject: [PATCH 06/17] Add additional register specifiers --- input/fsh/custodian.fsh | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/input/fsh/custodian.fsh b/input/fsh/custodian.fsh index 2acaa09..b24b76e 100644 --- a/input/fsh/custodian.fsh +++ b/input/fsh/custodian.fsh @@ -36,9 +36,22 @@ Description: "This is the Finnish base profile for the Provenance resource, to b * ^definition = "The type of the information registry. From the system `oid:1.2.246.537.5.40150` (*KanTa-palvelut - Potilasasiakirjan rekisteritunnus*)." * ^short = "Type of registry" -* entity contains registerSpecifier 0..1 +* entity contains registerSpecifierCompanyId 0..1 * entity[registerSpecifier].role = #source * entity[registerSpecifier].what.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX -* entity[registerSpecifier].what.identifier.system = "https://ytj.fi/" +* entity[registerSpecifier].what.identifier.system = "urn:oid:1.2.246.10" * ^definition = "The customer company of an occupational healthcare provider, expressed with the business ID (*y-tunnus*) registered in the Finnish organization register [ytj.fi](https://ytj.fi). This is a required specifier for Kanta system when the data registry is for occupational healthcare for private companies." + * ^short = "Customer company of private occupational healthcare" + +* entity contains registerSpecifierPersonId 0..1 +* entity[registerSpecifier].role = #source +* entity[registerSpecifier].what.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#NNFIN +* entity[registerSpecifier].what.identifier.system = "urn:oid:1.2.246.21" + * ^definition = "An individual customer of an occupational healthcare provider, expressed with the Finnish national PIC (*hetu*)." + * ^short = "Customer of private occupational healthcare" + +* entity contains registerSpecifierCompanyWithoutId 0..1 +* entity[registerSpecifier].role = #source +* entity[registerSpecifier].what.identifier.system = "urn:oid:1.2.246.537.30" + * ^definition = "A company without a Finnish business ID as a customer of an occupational healthcare provider." * ^short = "Customer of private occupational healthcare" From ebfe1b6adbd4b9d09385ccb114f74d382138761b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Thu, 31 Aug 2023 18:45:49 +0300 Subject: [PATCH 07/17] Fix slice names --- input/fsh/custodian.fsh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/input/fsh/custodian.fsh b/input/fsh/custodian.fsh index b24b76e..33435b6 100644 --- a/input/fsh/custodian.fsh +++ b/input/fsh/custodian.fsh @@ -37,21 +37,21 @@ Description: "This is the Finnish base profile for the Provenance resource, to b * ^short = "Type of registry" * entity contains registerSpecifierCompanyId 0..1 -* entity[registerSpecifier].role = #source -* entity[registerSpecifier].what.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX -* entity[registerSpecifier].what.identifier.system = "urn:oid:1.2.246.10" +* entity[registerSpecifierCompanyId].role = #source +* entity[registerSpecifierCompanyId].what.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX +* entity[registerSpecifierCompanyId].what.identifier.system = "urn:oid:1.2.246.10" * ^definition = "The customer company of an occupational healthcare provider, expressed with the business ID (*y-tunnus*) registered in the Finnish organization register [ytj.fi](https://ytj.fi). This is a required specifier for Kanta system when the data registry is for occupational healthcare for private companies." * ^short = "Customer company of private occupational healthcare" * entity contains registerSpecifierPersonId 0..1 -* entity[registerSpecifier].role = #source -* entity[registerSpecifier].what.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#NNFIN -* entity[registerSpecifier].what.identifier.system = "urn:oid:1.2.246.21" +* entity[registerSpecifierPersonId].role = #source +* entity[registerSpecifierPersonId].what.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#NNFIN +* entity[registerSpecifierPersonId].what.identifier.system = "urn:oid:1.2.246.21" * ^definition = "An individual customer of an occupational healthcare provider, expressed with the Finnish national PIC (*hetu*)." * ^short = "Customer of private occupational healthcare" * entity contains registerSpecifierCompanyWithoutId 0..1 -* entity[registerSpecifier].role = #source -* entity[registerSpecifier].what.identifier.system = "urn:oid:1.2.246.537.30" +* entity[registerSpecifierCompanyWithoutId].role = #source +* entity[registerSpecifierCompanyWithoutId].what.identifier.system = "urn:oid:1.2.246.537.30" * ^definition = "A company without a Finnish business ID as a customer of an occupational healthcare provider." * ^short = "Customer of private occupational healthcare" From 00d5948436ef74a3134fb2e9f48abff9bc5a3c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Thu, 31 Aug 2023 18:46:14 +0300 Subject: [PATCH 08/17] Fix slice name and the new identifier system --- .../examples/provenanceCustodianOccupationalHealthcare.fsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh index 7e9276c..4dfb346 100644 --- a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh @@ -48,12 +48,12 @@ Usage: #example * value = "urn:oid:1.2.246.10.32515682.10.0" * display = "Ratinan Terveys Oy" -* entity[registerSpecifier] +* entity[registerSpecifierCompanyId] * role = #source * what * identifier * type = http://terminology.hl7.org/CodeSystem/v2-0203#TAX - * system = "https://ytj.fi/" + * system = "urn:oid:1.2.246.10" * value = "2606155-7" * display = "Sensotrend Oy" * agent[0] From 7cea60e800d46d814960584a4f2ca6de6e04bcb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Thu, 31 Aug 2023 18:48:32 +0300 Subject: [PATCH 09/17] Remove redundant agent references I did not find a good way how to explain why to have these in the examples. The original idea was to illustrate how to make it more clear which agent the registry is relevant to, in case there would be more agents present in the same Provenance instance. This was discussed briefly with Kela, but I did not have good enough of a concept in my mind to be able to explain it. --- ...venanceCustodianOccupationalHealthcare.fsh | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh index 4dfb346..206cf6b 100644 --- a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh @@ -30,24 +30,6 @@ Usage: #example * system = "urn:oid:1.2.246.537.5.40150" * value = #4 * display = "Työterveyshuolto" - * agent[0] - * type - * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" - * text = "Rekisterinpitäjä" - * role[0] - * coding[0] - * system = "urn:oid:1.2.246.537.5.40172" - * code = #2 - * display = "Yksityinen" - * text = "Yksityinen" - * who - * type = #Organization - * identifier - * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN - * system = "urn:oid:1.2.246.537.6.202" - * value = "urn:oid:1.2.246.10.32515682.10.0" - * display = "Ratinan Terveys Oy" - * entity[registerSpecifierCompanyId] * role = #source * what @@ -56,20 +38,3 @@ Usage: #example * system = "urn:oid:1.2.246.10" * value = "2606155-7" * display = "Sensotrend Oy" - * agent[0] - * type - * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" - * text = "Rekisterinpitäjä" - * role[0] - * coding[0] - * system = "urn:oid:1.2.246.537.5.40172" - * code = #2 - * display = "Yksityinen" - * text = "Yksityinen" - * who - * type = #Organization - * identifier - * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN - * system = "urn:oid:1.2.246.537.6.202" - * value = "urn:oid:1.2.246.10.32515682.10.0" - * display = "Ratinan Terveys Oy" From a640c40aac95fd1e46e484d02b6f2eb2acfde080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Thu, 31 Aug 2023 18:50:40 +0300 Subject: [PATCH 10/17] Add intro text for information custodian profile --- .../Provenance-id-for-provenance-1-intro.md | 20 ------------------- ...ctureDefinition-fi-base-custodian-intro.md | 16 +++++++++++++++ 2 files changed, 16 insertions(+), 20 deletions(-) delete mode 100644 input/pagecontent/Provenance-id-for-provenance-1-intro.md create mode 100644 input/pagecontent/StructureDefinition-fi-base-custodian-intro.md diff --git a/input/pagecontent/Provenance-id-for-provenance-1-intro.md b/input/pagecontent/Provenance-id-for-provenance-1-intro.md deleted file mode 100644 index f60d7e8..0000000 --- a/input/pagecontent/Provenance-id-for-provenance-1-intro.md +++ /dev/null @@ -1,20 +0,0 @@ -### Scope and Usage - -#### How to communicate Kanta custodian and register information - -In this example Kanta custodian information (Finnish rekisterinpitäjä) is communicated in agent. -It refers to organization via identifier, custodian registry is not part of finnish -SOTE-organization registry (it uses it's own registry 1.2.246.537.6.40174) so it might not exist as -an organization resource. - -RegisterTypeCode requires the registerTypeCode extension. It's a coded value from following code systems: - -* Code `1.2.246.537.5.40150.2009` for healthcare -* Code `1.2.246.537.6.1264.201701` for social care - -RegisterSpecifier requires the registerSpecifier extension. - -#### Use cases - -Custodian, register type code and register specifier information is required when making Kanta -Medical Records requests. diff --git a/input/pagecontent/StructureDefinition-fi-base-custodian-intro.md b/input/pagecontent/StructureDefinition-fi-base-custodian-intro.md new file mode 100644 index 0000000..a80ae22 --- /dev/null +++ b/input/pagecontent/StructureDefinition-fi-base-custodian-intro.md @@ -0,0 +1,16 @@ +### Scope and Usage + +#### How to communicate Kanta information custodian and register information + +The Finnish national healthcare infrastructure uses the concept of the information custodian +(*rekisterinpitäjä*), also known as the data processor or register keeper. + +Further, most information in the system needs to be tagged with information of the information +custodian and of the specific register. + +For details, please refer to the +[Kanta CDA R2 Header](https://www.kanta.fi/en/jarjestelmakehittajat/potilastiedon-arkiston-cda-r2-header) +specification, version 4.66 or later. + +These details are expressed with the Provenance resource conforming to this profile. Information +custodian is the `.agent` and the registry is specified with one or two `.entity` instances. \ No newline at end of file From 6257aa914a3b36763d58713eca458561fa39a17c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Thu, 31 Aug 2023 19:04:43 +0300 Subject: [PATCH 11/17] Change the profile name to information custodian The name custodian would be easily be mistaken to represent the custodian of a patient. Also, add some minor editorial changes. --- .../examples/provenanceCustodianOccupationalHealthcare.fsh | 4 ++-- input/fsh/examples/provenanceCustodianPublicHealthcare.fsh | 4 ++-- input/fsh/{custodian.fsh => informationCustodian.fsh} | 6 +++--- ...uctureDefinition-fi-base-information-custodian-intro.md} | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) rename input/fsh/{custodian.fsh => informationCustodian.fsh} (97%) rename input/pagecontent/{StructureDefinition-fi-base-custodian-intro.md => StructureDefinition-fi-base-information-custodian-intro.md} (90%) diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh index 206cf6b..b5a4790 100644 --- a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh @@ -1,7 +1,7 @@ Instance: ProvenanceCustodianOccupationalHealthcare -InstanceOf: FiBaseCustodian +InstanceOf: FiBaseInformationCustodian Title: "Custodian of information (rekisterinpitäjä), private occupational healthcare" -Description: "Example of Provenance that communicates a public healthcare organization as the custodian information for an episode of care." +Description: "Example of Provenance that communicates a public healthcare organization as the custodian of information for an episode of care." Usage: #example * id = "custodian-occupational-healthcare" * target = Reference(EpisodeOfCare/id-for-episode-1) diff --git a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh index 3651082..e3ccb8a 100644 --- a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh @@ -1,7 +1,7 @@ Instance: ProvenanceCustodianPublicHealthcare -InstanceOf: FiBaseCustodian +InstanceOf: FiBaseInformationCustodian Title: "Custodian of information (rekisterinpitäjä), public healthcare" -Description: "Example of Provenance that communicates a public healthcare organization as the custodian information for an episode of care." +Description: "Example of Provenance that communicates a public healthcare organization as the custodian of information for an episode of care." Usage: #example * id = "custodian-public-healthcare" * target = Reference(EpisodeOfCare/id-for-episode-1) diff --git a/input/fsh/custodian.fsh b/input/fsh/informationCustodian.fsh similarity index 97% rename from input/fsh/custodian.fsh rename to input/fsh/informationCustodian.fsh index 33435b6..126b47d 100644 --- a/input/fsh/custodian.fsh +++ b/input/fsh/informationCustodian.fsh @@ -1,7 +1,7 @@ -Profile: FiBaseCustodian +Profile: FiBaseInformationCustodian Parent: FiBaseProvenance -Id: fi-base-custodian -Title: "FI Base Custodian" +Id: fi-base-information-custodian +Title: "FI Base InformationCustodian" Description: "This is the Finnish base profile for the Provenance resource, to be used to communicate the custodian of information (*rekisterinpitäjä*)." * agent ^slicing.discriminator.type = #value diff --git a/input/pagecontent/StructureDefinition-fi-base-custodian-intro.md b/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md similarity index 90% rename from input/pagecontent/StructureDefinition-fi-base-custodian-intro.md rename to input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md index a80ae22..71ee27e 100644 --- a/input/pagecontent/StructureDefinition-fi-base-custodian-intro.md +++ b/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md @@ -10,7 +10,7 @@ custodian and of the specific register. For details, please refer to the [Kanta CDA R2 Header](https://www.kanta.fi/en/jarjestelmakehittajat/potilastiedon-arkiston-cda-r2-header) -specification, version 4.66 or later. +specification, version 4.66 or later, chapters 2.2.17, 2.4.21, and 2.4.22. These details are expressed with the Provenance resource conforming to this profile. Information custodian is the `.agent` and the registry is specified with one or two `.entity` instances. \ No newline at end of file From 3d2fdf3235fe4e9d059acd38d77d3148a45aa29b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Thu, 31 Aug 2023 20:06:08 +0300 Subject: [PATCH 12/17] Fix italics in description Without the ugly hack the asterisks look bad on the profile listing page. --- input/includes/fragment-fi-base-profiles.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/input/includes/fragment-fi-base-profiles.html b/input/includes/fragment-fi-base-profiles.html index 9e11b68..a3df20b 100644 --- a/input/includes/fragment-fi-base-profiles.html +++ b/input/includes/fragment-fi-base-profiles.html @@ -31,6 +31,8 @@ {%- assign description = description | replace: "%3A", ":" -%} {%- assign description = description | replace: "%20", "," -%} {%- assign description = description | replace: "%25", "%" -%} + {%- assign description = description | replace: "(*", "(" -%} + {%- assign description = description | replace: "*)", ")" -%}
  • {{ pagetitle }}

    {{ description }}

    From 01c7d5d81df871228a85c95a0538beb207632643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Thu, 31 Aug 2023 20:06:32 +0300 Subject: [PATCH 13/17] Add a small editorial fix for profile description --- input/fsh/informationCustodian.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/informationCustodian.fsh b/input/fsh/informationCustodian.fsh index 126b47d..c1d7661 100644 --- a/input/fsh/informationCustodian.fsh +++ b/input/fsh/informationCustodian.fsh @@ -2,7 +2,7 @@ Profile: FiBaseInformationCustodian Parent: FiBaseProvenance Id: fi-base-information-custodian Title: "FI Base InformationCustodian" -Description: "This is the Finnish base profile for the Provenance resource, to be used to communicate the custodian of information (*rekisterinpitäjä*)." +Description: "This is the Finnish base profile for the Provenance resource, used to communicate the custodian of information (*rekisterinpitäjä*)." * agent ^slicing.discriminator.type = #value * agent ^slicing.discriminator.path = "type" From cafb13abce08611d270b6c490aa1eabb5b23ad5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Fri, 1 Sep 2023 13:22:33 +0300 Subject: [PATCH 14/17] Fix data processor to data controller The more appropriate GDPR term --- .../StructureDefinition-fi-base-information-custodian-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md b/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md index 71ee27e..d4a5403 100644 --- a/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md +++ b/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md @@ -3,7 +3,7 @@ #### How to communicate Kanta information custodian and register information The Finnish national healthcare infrastructure uses the concept of the information custodian -(*rekisterinpitäjä*), also known as the data processor or register keeper. +(*rekisterinpitäjä*), also known as the data controller or register keeper. Further, most information in the system needs to be tagged with information of the information custodian and of the specific register. From 53f79423fe217c2dc5ee37b536b06a1a9d5805b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=20Jylh=C3=A4?= Date: Fri, 1 Sep 2023 14:56:23 +0300 Subject: [PATCH 15/17] Upgrade to fsh-sushi version 3.3.3 --- Dockerfile | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index b12b9a7..294fa7a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM node:lts-bullseye -RUN npm install -g fsh-sushi@3.1.0 +RUN npm install -g fsh-sushi@3.3.3 RUN apt-get update && apt-get -y install openjdk-17-jdk-headless ruby-full build-essential zlib1g-dev RUN gem install jekyll bundler diff --git a/README.md b/README.md index f24ad84..5a50890 100644 --- a/README.md +++ b/README.md @@ -65,14 +65,14 @@ With the above requirements installed locally, run #### On OSX, Linux, or Unix ``` bash -npm install -g fsh-sushi@3.1.0 +npm install -g fsh-sushi@3.3.3 ./_updatePublisher.sh --yes ./_genonce.sh ``` #### On Windows ``` -npm install -g fsh-sushi@3.1.0 +npm install -g fsh-sushi@3.3.3 .\_updatePublisher.bat --yes .\_genonce.bat ``` From ac0217af5e11683d795bd566a00f0e7a0ac13047 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Fri, 1 Sep 2023 15:48:35 +0300 Subject: [PATCH 16/17] Allow for multiple custodian types The identifier may come from three different registers, depending on the type of the information custodian. --- ...venanceCustodianOccupationalHealthcare.fsh | 4 ++- .../provenanceCustodianPublicHealthcare.fsh | 4 +-- input/fsh/informationCustodian.fsh | 30 ++++++++++++++----- input/ignoreWarnings.txt | 2 +- ...ion-fi-base-information-custodian-intro.md | 4 +-- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh index b5a4790..28ddf04 100644 --- a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh @@ -19,7 +19,7 @@ Usage: #example * who * type = #Organization * identifier - * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN + * type = http://terminology.hl7.org/CodeSystem/v2-0203#XX * system = "urn:oid:1.2.246.537.6.202" * value = "urn:oid:1.2.246.10.32515682.10.0" * display = "Ratinan Terveys Oy" @@ -38,3 +38,5 @@ Usage: #example * system = "urn:oid:1.2.246.10" * value = "2606155-7" * display = "Sensotrend Oy" + + diff --git a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh index e3ccb8a..110e93e 100644 --- a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh @@ -19,8 +19,8 @@ Usage: #example * who * type = #Organization * identifier - * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN - * system = "urn:oid:1.2.246.537.6.202" + * type = http://terminology.hl7.org/CodeSystem/v2-0203#XX + * system = "urn:oid:1.2.246.537.6.40174" * value = "urn:oid:1.2.246.10.32213086.19.0" * display = "Pirkanmaan hyvinvointialueen rekisterinpitäjä" * entity[registerType] diff --git a/input/fsh/informationCustodian.fsh b/input/fsh/informationCustodian.fsh index c1d7661..8002a8f 100644 --- a/input/fsh/informationCustodian.fsh +++ b/input/fsh/informationCustodian.fsh @@ -6,23 +6,37 @@ Description: "This is the Finnish base profile for the Provenance resource, used * agent ^slicing.discriminator.type = #value * agent ^slicing.discriminator.path = "type" +* agent ^slicing.discriminator.type = #value +* agent ^slicing.discriminator.path = "who.identifier.system" * agent ^slicing.rules = #open -* agent ^slicing.description = "An agent SHALL have the `type` CST from http://terminology.hl7.org/CodeSystem/v3-ParticipationType" - * ^definition = "An agent SHALL have the `type` http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST, and a `role` from system `oid:1.2.246.537.5.40172` (*eArkisto - Rekisteripitäjän laji*)." +* agent ^slicing.description = "An agent SHALL have the `type` `CST` from http://terminology.hl7.org/CodeSystem/v3-ParticipationType" + * ^definition = "An agent SHALL have the `type` http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST, a `role` from system `oid:1.2.246.537.5.40172` (*eArkisto - Rekisteripitäjän laji*), and an applicable provider identifier." * ^short = "An agent with type http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST" * agent contains custodian 1..1 - * ^definition = "The custodian of information (aka *rekisterinpitäjä*)." - * ^short = "The custodian (aka rekisterinpitäjä)." * agent[custodian].type = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST * agent[custodian].role.coding.system = "urn:oid:1.2.246.537.5.40172" * ^definition = "The status of the healthcare provider (*eArkisto - Rekisteripitäjän laji*), i.e., whether the provider is a public or private actor. The value for the identifier SHALL be 1 for public, 2 for private." * ^short = "Public or private occupational healthcare provider" -* agent[custodian].who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN -* agent[custodian].who.identifier.system = "urn:oid:1.2.246.537.6.202" - * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.202` (*THL - SOTE-organisaatiorekisteri*)." + +* agent[custodian] contains publicOrganizationCustodian 0..1 +* agent[custodian][publicOrganizationCustodian].who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#XX +* agent[custodian][publicOrganizationCustodian].who.identifier.system = "urn:oid:1.2.246.537.6.40174" + * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.40174` [(*eArkisto - Rekisterinpitäjärekisteri*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=419&versionKey=496)." + * ^short = "ID of the provider in Rekisterinpitäjärekisteri" + +* agent[custodian] contains privateOrganizationCustodian 0..1 +* agent[custodian][privateOrganizationCustodian].who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#XX +* agent[custodian][privateOrganizationCustodian].who.identifier.system = "urn:oid:1.2.246.537.6.202" + * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.202` [(*THL - SOTE-organisaatiorekisteri*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=421&versionKey=501)." * ^short = "ID of the provider in SOTE-organisaatiorekisteri" +* agent[custodian] contains individualProviderCustodian 0..1 +* agent[custodian][individualProviderCustodian].who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN +* agent[custodian][individualProviderCustodian].who.identifier.system = "urn:oid:1.2.246.537.6.203" + * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.203` [(*Valvira - Terveydenhuollon itsenäiset ammatinharjoittajat*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=1163&versionKey=1303)." + * ^short = "ID of the provider in Terveydenhuollon itsenäiset ammatinharjoittajat" + * entity ^slicing.discriminator.type = #value * entity ^slicing.discriminator.path = "what.identifier.system" * entity ^slicing.rules = #open @@ -33,7 +47,7 @@ Description: "This is the Finnish base profile for the Provenance resource, used * entity contains registerType 1..1 * entity[registerType].role = #source * entity[registerType].what.identifier.system = #urn:oid:1.2.246.537.5.40150 - * ^definition = "The type of the information registry. From the system `oid:1.2.246.537.5.40150` (*KanTa-palvelut - Potilasasiakirjan rekisteritunnus*)." + * ^definition = "The type of the information registry. From the system `oid:1.2.246.537.5.40150` ([*KanTa-palvelut - Potilasasiakirjan rekisteritunnus*](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=283&versionKey=360))." * ^short = "Type of registry" * entity contains registerSpecifierCompanyId 0..1 diff --git a/input/ignoreWarnings.txt b/input/ignoreWarnings.txt index 31e1c6f..5d62301 100644 --- a/input/ignoreWarnings.txt +++ b/input/ignoreWarnings.txt @@ -49,6 +49,7 @@ Code System URI 'urn:oid:1.2.246.537.5.40122.2006' is unknown so the code cannot Code System URI 'urn:oid:1.2.246.537.5.40123.2006' is unknown so the code cannot be validated Code System URI 'urn:oid:1.2.246.537.5.40124.2006' is unknown so the code cannot be validated Code System URI 'urn:oid:1.2.246.537.5.40150.2009' is unknown so the code cannot be validated +Code System URI 'urn:oid:1.2.246.537.5.40172' is unknown so the code cannot be validated Code System URI 'urn:oid:1.2.246.537.5.40202.201901' is unknown so the code cannot be validated Code System URI 'urn:oid:1.2.246.537.5.40303.201501' is unknown so the code cannot be validated Code System URI 'urn:oid:1.2.246.537.6.1.1999' is unknown so the code cannot be validated @@ -76,7 +77,6 @@ Code System URI 'urn:oid:1.2.246.537.6.74.2001' is unknown so the code cannot be Code System URI 'urn:oid:1.2.246.537.6.884.2015' is unknown so the code cannot be validated Code System URI 'urn:oid:2.16.840.1.113883.18.220' is unknown so the code cannot be validated Code System URI 'urn:oid:2.16.840.1.113883.4.642.3.20' is unknown so the code cannot be validated -Code System URI 'urn:oid:1.2.246.537.6.140.2008' is unknown so the code cannot be validated # This is CGI's internal code system, not part of this IG, but present in some examples from CGI Code System URI 'https://fhir.cgi.fi/code/person-id-type' is unknown so the code cannot be validated diff --git a/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md b/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md index d4a5403..94a6cae 100644 --- a/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md +++ b/input/pagecontent/StructureDefinition-fi-base-information-custodian-intro.md @@ -5,7 +5,7 @@ The Finnish national healthcare infrastructure uses the concept of the information custodian (*rekisterinpitäjä*), also known as the data controller or register keeper. -Further, most information in the system needs to be tagged with information of the information +Most of the information in the Kanta system needs to be tagged with information of the information custodian and of the specific register. For details, please refer to the @@ -13,4 +13,4 @@ For details, please refer to the specification, version 4.66 or later, chapters 2.2.17, 2.4.21, and 2.4.22. These details are expressed with the Provenance resource conforming to this profile. Information -custodian is the `.agent` and the registry is specified with one or two `.entity` instances. \ No newline at end of file +custodian is the `.agent` and the registry is specified with one or two `.entity` instances. From 271a0c63a993424b60302a3ac0781df047b6ec61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikael=20Rinnetm=C3=A4ki?= Date: Fri, 1 Sep 2023 23:11:48 +0300 Subject: [PATCH 17/17] Separate profiles for custodian types I wasn't able to find a way to target the slicing properly and definitely otherwise. This feels more logical too. --- .../provenanceCustodianIndividual.fsh | 32 +++++++++ ...venanceCustodianOccupationalHealthcare.fsh | 4 +- .../provenanceCustodianPublicHealthcare.fsh | 2 +- input/fsh/informationCustodian.fsh | 69 ++++++++++++------- 4 files changed, 78 insertions(+), 29 deletions(-) create mode 100644 input/fsh/examples/provenanceCustodianIndividual.fsh diff --git a/input/fsh/examples/provenanceCustodianIndividual.fsh b/input/fsh/examples/provenanceCustodianIndividual.fsh new file mode 100644 index 0000000..ee039d1 --- /dev/null +++ b/input/fsh/examples/provenanceCustodianIndividual.fsh @@ -0,0 +1,32 @@ +Instance: ProvenanceCustodianIndividual +InstanceOf: FiBaseInformationCustodianIndividual +Title: "Custodian of information (rekisterinpitäjä), an individual provider" +Description: "Example of Provenance that communicates a private individual healthcare provider as the custodian of information for an episode of care." +Usage: #example +* id = "custodian-individual" +* target = Reference(EpisodeOfCare/id-for-episode-1) +* recorded = "2015-02-07T13:28:17.239+02:00" +* agent[custodian] + * type + * coding[0] = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST "custodian" + * text = "Rekisterinpitäjä" + * role[0] + * coding[0] + * system = "urn:oid:1.2.246.537.5.40172" + * code = #2 + * display = "Yksityinen" + * text = "Yksityinen" + * who + * type = #Practitioner + * identifier + * type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN + * system = "urn:oid:1.2.246.537.6.203" + * value = "urn:oid:1.2.246.537.28.10000222116" + * display = "Kalmanlehto Erkki" +* entity[registerType] + * role = #source + * what + * identifier + * system = "urn:oid:1.2.246.537.5.40150" + * value = #10 + * display = "Ammatinharjoittaja" diff --git a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh index 28ddf04..d604667 100644 --- a/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianOccupationalHealthcare.fsh @@ -1,7 +1,7 @@ Instance: ProvenanceCustodianOccupationalHealthcare -InstanceOf: FiBaseInformationCustodian +InstanceOf: FiBaseInformationCustodianPrivate Title: "Custodian of information (rekisterinpitäjä), private occupational healthcare" -Description: "Example of Provenance that communicates a public healthcare organization as the custodian of information for an episode of care." +Description: "Example of Provenance that communicates a private occupational healthcare organization as the custodian of information for an episode of care." Usage: #example * id = "custodian-occupational-healthcare" * target = Reference(EpisodeOfCare/id-for-episode-1) diff --git a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh index 110e93e..80ed869 100644 --- a/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh +++ b/input/fsh/examples/provenanceCustodianPublicHealthcare.fsh @@ -1,5 +1,5 @@ Instance: ProvenanceCustodianPublicHealthcare -InstanceOf: FiBaseInformationCustodian +InstanceOf: FiBaseInformationCustodianPublic Title: "Custodian of information (rekisterinpitäjä), public healthcare" Description: "Example of Provenance that communicates a public healthcare organization as the custodian of information for an episode of care." Usage: #example diff --git a/input/fsh/informationCustodian.fsh b/input/fsh/informationCustodian.fsh index 8002a8f..1275123 100644 --- a/input/fsh/informationCustodian.fsh +++ b/input/fsh/informationCustodian.fsh @@ -2,12 +2,11 @@ Profile: FiBaseInformationCustodian Parent: FiBaseProvenance Id: fi-base-information-custodian Title: "FI Base InformationCustodian" -Description: "This is the Finnish base profile for the Provenance resource, used to communicate the custodian of information (*rekisterinpitäjä*)." +Description: "This is a Finnish abstract base profile for the Provenance resource, used to communicate the custodian of information (*rekisterinpitäjä*)." +* ^abstract = true * agent ^slicing.discriminator.type = #value * agent ^slicing.discriminator.path = "type" -* agent ^slicing.discriminator.type = #value -* agent ^slicing.discriminator.path = "who.identifier.system" * agent ^slicing.rules = #open * agent ^slicing.description = "An agent SHALL have the `type` `CST` from http://terminology.hl7.org/CodeSystem/v3-ParticipationType" * ^definition = "An agent SHALL have the `type` http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST, a `role` from system `oid:1.2.246.537.5.40172` (*eArkisto - Rekisteripitäjän laji*), and an applicable provider identifier." @@ -16,27 +15,9 @@ Description: "This is the Finnish base profile for the Provenance resource, used * agent contains custodian 1..1 * agent[custodian].type = http://terminology.hl7.org/CodeSystem/v3-ParticipationType#CST * agent[custodian].role.coding.system = "urn:oid:1.2.246.537.5.40172" - * ^definition = "The status of the healthcare provider (*eArkisto - Rekisteripitäjän laji*), i.e., whether the provider is a public or private actor. The value for the identifier SHALL be 1 for public, 2 for private." + * ^definition = "The status of the healthcare provider ([*eArkisto - Rekisteripitäjän laji*](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=268&versionKey=345)), i.e., whether the provider is a public or private actor. The value for the identifier SHALL be 1 for public, 2 for private." * ^short = "Public or private occupational healthcare provider" -* agent[custodian] contains publicOrganizationCustodian 0..1 -* agent[custodian][publicOrganizationCustodian].who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#XX -* agent[custodian][publicOrganizationCustodian].who.identifier.system = "urn:oid:1.2.246.537.6.40174" - * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.40174` [(*eArkisto - Rekisterinpitäjärekisteri*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=419&versionKey=496)." - * ^short = "ID of the provider in Rekisterinpitäjärekisteri" - -* agent[custodian] contains privateOrganizationCustodian 0..1 -* agent[custodian][privateOrganizationCustodian].who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#XX -* agent[custodian][privateOrganizationCustodian].who.identifier.system = "urn:oid:1.2.246.537.6.202" - * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.202` [(*THL - SOTE-organisaatiorekisteri*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=421&versionKey=501)." - * ^short = "ID of the provider in SOTE-organisaatiorekisteri" - -* agent[custodian] contains individualProviderCustodian 0..1 -* agent[custodian][individualProviderCustodian].who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN -* agent[custodian][individualProviderCustodian].who.identifier.system = "urn:oid:1.2.246.537.6.203" - * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.203` [(*Valvira - Terveydenhuollon itsenäiset ammatinharjoittajat*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=1163&versionKey=1303)." - * ^short = "ID of the provider in Terveydenhuollon itsenäiset ammatinharjoittajat" - * entity ^slicing.discriminator.type = #value * entity ^slicing.discriminator.path = "what.identifier.system" * entity ^slicing.rules = #open @@ -64,8 +45,44 @@ Description: "This is the Finnish base profile for the Provenance resource, used * ^definition = "An individual customer of an occupational healthcare provider, expressed with the Finnish national PIC (*hetu*)." * ^short = "Customer of private occupational healthcare" -* entity contains registerSpecifierCompanyWithoutId 0..1 -* entity[registerSpecifierCompanyWithoutId].role = #source -* entity[registerSpecifierCompanyWithoutId].what.identifier.system = "urn:oid:1.2.246.537.30" - * ^definition = "A company without a Finnish business ID as a customer of an occupational healthcare provider." +* entity contains registerSpecifierCustomerWithoutId 0..1 +* entity[registerSpecifierCustomerWithoutId].role = #source +* entity[registerSpecifierCustomerWithoutId].what.identifier.system = "urn:oid:1.2.246.537.30" + * ^definition = "A customer without a Finnish person or business ID as a customer of an occupational healthcare provider." * ^short = "Customer of private occupational healthcare" + +Profile: FiBaseInformationCustodianPublic +Parent: FiBaseInformationCustodian +Id: fi-base-information-custodian-public +Title: "FI Base Information Custodian (Public Organization)" +Description: "This is the Finnish base profile for the Provenance resource, used to communicate a public organization as the custodian of information (*rekisterinpitäjä*)." + +* agent.role.coding.code = #1 +* agent.who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#XX +* agent.who.identifier.system = "urn:oid:1.2.246.537.6.40174" + * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.40174` [(*eArkisto - Rekisterinpitäjärekisteri*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=419&versionKey=496)." + * ^short = "ID of the provider in Rekisterinpitäjärekisteri" + +Profile: FiBaseInformationCustodianPrivate +Parent: FiBaseInformationCustodian +Id: fi-base-information-custodian-private +Title: "FI Base Information Custodian (Private Organization)" +Description: "This is the Finnish base profile for the Provenance resource, used to communicate a private organization as the custodian of information (*rekisterinpitäjä*)." + +* agent.role.coding.code = #2 +* agent.who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#XX +* agent.who.identifier.system = "urn:oid:1.2.246.537.6.202" + * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.202` [(*THL - SOTE-organisaatiorekisteri*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=421&versionKey=501)." + * ^short = "ID of the provider in SOTE-organisaatiorekisteri" + +Profile: FiBaseInformationCustodianIndividual +Parent: FiBaseInformationCustodian +Id: fi-base-information-custodian-individual +Title: "FI Base Information Custodian (Individual Provider)" +Description: "This is the Finnish base profile for the Provenance resource, used to communicate an individual practitioner as the custodian of information (*rekisterinpitäjä*)." + +* agent.role.coding.code = #2 +* agent.who.identifier.type = http://terminology.hl7.org/CodeSystem/v2-0203#PRN +* agent.who.identifier.system = "urn:oid:1.2.246.537.6.203" + * ^definition = "The ID of the social or healthcare provider in system `oid:1.2.246.537.6.203` [(*Valvira - Terveydenhuollon itsenäiset ammatinharjoittajat*)](https://koodistopalvelu.kanta.fi/codeserver/pages/classification-view-page.xhtml?classificationKey=1163&versionKey=1303)." + * ^short = "ID of the provider in Terveydenhuollon itsenäiset ammatinharjoittajat"