Anvisning för utformning av nyttolast i tjÀnstekontrakt
Â
Anvisning för utformning av nyttolast i tjÀnstekontrakt
Version 1.3
ARK_0061
2023-02-23
InnehÄllsförteckning
- 1 Anvisning för utformning av nyttolast i tjÀnstekontrakt
- 2 Revisionshistorik
- 3 Referenser
- 4 Inledning
- 5 SĂ€tt datatyp
- 5.1 Generella regler för tillÀmpning av datatyper
- 5.2 TillÀmpning av CVType
- 5.3 TillÀmpning av IIType
- 5.3.1 VĂ€lj identifierare
- 5.3.2 TillÀmpningsexempel
- 6 Gör avsteg
Revisionshistorik
Revision | Revisionsdatum | Beskrivning | Ăndringarna gjorda av | Definitiv revision faststĂ€lld av |
---|---|---|---|---|
1.0 | 2020-12-03 | Revision 1.0 faststÀlld. | Thomas Siltberg, Arvid Thunholm, Lars Börjesson, Claudia Ehrentraut, Viktor Jernelöv | TjÀnstekontraktsförvaltningen & Samverkansarkitektur |
1.1 | 2021-12-03 | Uppdaterat skrivningar i tillĂ€mpning av CVType dĂ„ multiplicitet av element i datatypen har förĂ€ndrats. Lagt till avsnittet âBehov av olika âstrikta CVTypeâ. | Tobias Blomberg |  |
1.2 | 2022-05-18 | Lagt till informationsruta om vanligt tillÀmpade regler för elementen i CVType. | Tobias Blomberg |  |
1.3 | 2023-02-23 | Gjort förtydliganden gÀllande statisk och dynamisk kodverksanvÀndning. | Tobias Blomberg |  |
1.4 | 2023-10-17 | Lagt till avsnittet âNĂ€r kodverk inte kan pekas utâ. | Tobias Blomberg | Â |
Referenser
Referens-id | Namn | LĂ€nk |
---|---|---|
R1 | De facto-konventioner för datatyper (defacto-sidan) | |
R2 | Kodverkslistan | |
R3 | Lista över identifierare | |
R4 | Process för att skapa eller uppdatera kodverk |
|
R5 | RIV Tekniska Anvisningar |
|
R6 | VI-boken |
|
Inledning
NÀr nya tjÀnstekontrakt/domÀner tas fram ska anvisningar som styr sÄvÀl den tekniska som informatiska utformningen följas. Anvisningar finns i form av RIV Tekniska Anvisningar [R5], VI-boken [R6], listor över kodverk och identifierare [R2, R3] samt De facto-konventioner för datatyper [R1].
Denna anvisning utgör ett stöd för de personer som arbetar med att beskriva innehÄllet i tjÀnstekontrakt, framförallt genom informationsspecifikationer och tjÀnstekontraktsbeskrivningar. Anvisningen omfattar i dagslÀget information om hur vissa datatyper ska tillÀmpas.
Hur avsteg frÄn det som beskrivs i anvisningarna, respektive detta dokument hanteras beskrivs under Gör avsteg.
SĂ€tt datatyp
I befintliga tjÀnstekontrakt (XML-scheman) anvÀnds ett antal datatyper (komplexa typer) som Àr gemensamma inom en domÀn eller för flera domÀner. Dessa beskrivs pÄ defacto-sidan [R1].
Följ nedanstÄende steg för att bestÀmma om en gemensam datatyp kan anvÀndas för ett attribut inom det tjÀnstekontrakt som du arbetar med:
bekanta dig med de datatyper som finns pÄ defacto-sidan [R1]
avgör om nÄgon eller nÄgra av de befintliga defacto-datatyperna som anges kan tillÀmpas för attributet i frÄgan
om nÄgon eller nÄgra av de befintliga defacto-datatyperna kan anvÀndas, sÄ ska de, i möjligaste mÄn, tillÀmpas i det formatet/den strukturen som Àr specat pÄ defacto-sidan [R1]. OBS! Om avsteg ska göras frÄn hur datatypen Àr utformad ska det hanteras enligt beskrivning under Gör avsteg.
om inga av de befintliga defacto-datatyperna kan anvÀndas för attributet i frÄgan Àr det tillÄtet att anvÀnda sig av andra etablerade datatyper eller skapa egna komplexa typer. Kontakta förvaltare av defacto-datatyperna om du ser behov av att nÄgon av dessa datatyper kan vara relevanta för andra tjÀnstekontrakt och dÀrmed bör ingÄ i defacto-datatyperna.
Generella regler för tillÀmpning av datatyper
Vid tillÀmpning av en datatyp ska alla attribut som ingÄr i datatypen listas i fÀltregeltabellen i TKB:n, dÀr nedanstÄende hantering för attributen gÀller:
attributens namn och datatyp fÄr inte Àndras
attributens befintliga beskrivningar ska anges i TKB men fÄr konkretiseras ytterligare om tillÀmpningen krÀver det
attributen som Àr icke-obligatoriska, t.ex codeSystemName, codeSystemVersion, displayName samt originalText för CVType eller extension för IIType, fÄr Àndras till att vara obligatoriska om tillÀmpningen krÀver det. Multipliciteten sÀtts dÄ till 1..1. OBS! Om schematron eller andra sÀtt att validera anvÀnds behöver de uppdateras.
Reglerna som beskrivs för datatyps-attributen under tabellen pÄ defacto-sidan [R1] ska gÀlla vid tillÀmpningen. Schemat som finns för respektive datatyp pÄ defacto-sidan [R1] ska anvÀndas.
TillÀmpning av CVType
Datatypen CVType ska anvÀndas för att skicka kodade vÀrden. Beskrivningen av datatypen och dess schema finns pÄ defacto-sidan [R1].
CVType Àr uppbyggd av ett antal frivilliga element. HÀr följer dock tvÄ vanligt tillÀmpade regler:
Om ett av elementen code, codeSystem eller displayName anges ska Àven de andra tvÄ anges.
Om elementet originalText anges ska inget annat vÀrde i CVType anges.
Huruvida dessa regler ska tillÀmpas eller ej mÄste dock beslutas i utvecklingsprojektet för respektive tjÀnstekontrakt baserat pÄ verksamhetens behov.
Vid tillÀmpningen av CVType ska Generella regler för tillÀmpning av datatyper samt nedanstÄende anvisningar om val av kodverk, typ av kodverksanvÀndning och urval följas.
VĂ€lj kodverk
NÀr datatypen CVType anvÀnds ska, i de allra flesta fall, ett kodverk, alternativt ett urval pekas ut. Detta omfattar de koder som ska skickas för attributet i frÄgan. I befintliga tjÀnstekontrakt anvÀnds olika kodverk som finns sammanstÀllt pÄ kodverkslistan [R2].
Följ nedanstÄende steg för att bestÀmma om ett kodverk kan anvÀndas för ett attribut inom det tjÀnstekontrakt som du arbetar med:
bekanta dig med de kodverk som finns pÄ kodverkslistan
avgör om nÄgot av de befintliga kodverken som listas kan tillÀmpas för attributet i frÄgan
om nÄgot av de befintliga kodverken kan anvÀndas, sÄ ska den refereras till i enlighet med datatypens utformning.
om inget av de befintliga kodverken kan anvÀndas för attributet i frÄgan kan det vara aktuellt att
skapa eller uppdatera ett kodverk. I detta fall ska processen för att skapa eller uppdatera kodverk [R4] följas.
anvÀnda sig av ett annat etablerat kodverk. Kontakta kodverksförvaltningen för att utreda om kodverket ska tas med i kodverkslistan.
I dokumentationens referenslista ska alltid referens till kodverkslistan [R2] anges.
NĂ€r kodverk inte kan pekas ut
I vissa fall Àr det omöjligt eller oönskat att binda ett kodverk eller urval till ett attribut i tjÀnstekontraktet, dvs peka ut ett specifikt kodverk eller urval som ska anvÀndas. Detta kan t.ex. vara fallet om behovet av kodverk anses kunna variera i olika tillÀmpningar av tjÀnstekontraktet. NÀr information om vilket kodverk eller urval som ska anvÀndas utelÀmnas frÄn attributsbeskrivningen i tjÀnstekontraktet bör istÀllet en interaktionsöverenskommelse upprÀttas för den aktuella tillÀmpningen (se mall hÀr). Alternativt kan information om aktuella kodverk pekas ut direkt av tjÀnstekonsumenten i dennes egen dokumentation. PÄ sÄ vis kan anvÀndare av tjÀnstekontraktet informeras om hur information ska specificeras vid en viss tillÀmpning. Om inget kodverk eller urval pekas ut och ingen interaktionsöverenskommelse finns mÄste konsumenter av tjÀnstekontraktet kunna hantera alla koder som skickas.
I tjÀnstekontraktsbeskrivningen: NÀr inget kodverk eller urval pekas ut, lÀgg till detta i attributets beskrivningen:
Det finns inget kodverk eller urval utpekat för detta attribut.
TjÀnstekonsumenten kan i sin egen dokumentation hÀnvisa till en interaktionsöverenskommelse för att specificera giltiga kodverk eller urval för detta attribut. Om ingen sÄdan hÀnvisning finns krÀvs att tjÀnstekonsumenten kan hantera alla producerade koder. Detta görs vanligen genom att presentera displayName i sin helhet.
Exempel
I tjÀnstekontraktet GetObservations finns ett attribut som beskriver vilken typ av observation som registreras. Eftersom tjÀnstekontraktet anvÀnds i olika tillÀmpningar (t.ex. sammanhÄllen journalföring, informationsöverföring till kvalitetsregister etc.) har man gjort bedömningen att inget enstaka kodverk kan anges i beskrivningen för attributet.
IstÀllet har man tagit fram kompletterande interaktionsöverenskommelser som beskriver vilket kodverk som ska anvÀndas i olika tillÀmpningar. GetObservations anvÀnds för presentation av tillvÀxtdata i Nationell Patientöversikt och i den interaktionsöverenskommelsen anges att för detta fÀlt anvÀnds SNOMED-CT nÀr man skickar information om observation av, t.ex. lÀngd, se hÀr.
BestÀm typ av kodverksanvÀndning
Efter att ha bestÀmt vilket kodverk som ska anvÀndas behöver det utredas om en specifik version av kodverket ska anvÀndas för attributet i frÄgan (statisk kodverksanvÀndning) eller om koderna som skickas snarare bör hÀrstamma frÄn den senaste versionen av kodverket (dynamisk kodverksanvÀndning). Nedan anges nÀr respektive typ av kodverksanvÀndning kan vara aktuellt.
Dynamisk kodverksanvÀndning
lÀgg in codeSystem som fixed value i XML-schemat (behöver inte göras för urval)
varken kontroll av koder eller version med hjÀlp av schematron-validering anses vara tillÀmpbart i detta scenario.
Statisk kodverksanvÀndning
ange kodverkets version som ska anvÀndas i beskrivningen för attributet codeSystemVersion
lÀgg in codeSystem, codeSystemName (om den finns) och codeSystemVersion som fixed values i XML-schemat
Hantera urval med koder frÄn ett eller flera kodverk
I vissa tillÀmpningar ska urval frÄn ett eller flera kodverk hanteras. I dessa fall ska det anges i TKB:ns beskrivning för attributet vilket urval som anvÀnds. För codeSystem skickas kodverkets identifierare, inte urvalets.
En mall för att skapa urval finns pÄ kodverkslistan [R2].
TillÀmpningsexempel
Exempel #1 - dynamisk kodverksanvÀndning
Nedan ges ett exempel pÄ hur CVTypen kan tillÀmpas för attributet careContactCode nÀr ett urval med koder frÄn ett kodverk anvÀnds. Exemplet illustrerar en dynamisk kodverksanvÀndning. Exemplet omfattar hur attributet ska beskrivas i TKB:n samt i XML-schemat.
Enligt Generella regler för tillÀmpning av datatyper ska, vid tillÀmpning av en datatyp alla attribut som ingÄr i datatypen listas i fÀltregeltabellen i TKB:n. Det Àr tillÄtet att konkretisera attributens beskrivningar, vilket har gjorts i nedanstÄende exemplet i form av de gul-markerade texterna. Datatypens icke-obligatoriska attribut fÄr Àndras till att vara obligatoriska om tillÀmpningen krÀver det, men detta har inte varit aktuellt i nedanstÄende exemplet.
Namn | Typ | Beskrivning | Multiplicitet |
---|---|---|---|
../../careContactCode | CVType | Kod som anger pÄ vilket sÀtt vÄrd- och omsorgskontakten Àr planerad att ske, alternativt skedde. Medlemmar i 58181000052100 |urval kontaktsÀtt| frÄn kodverket Snomed CT SEs ska anvÀndas, se referens [R1]. Urvalet kan komma att kompletteras över tid vilket medför att konsumenter av kontraktet behöver vara förberedda pÄ att nya koder kan tillkomma utan att versionen pÄ kontraktet uppdateras. | 0..1 |
../../../code | string | Kod eller uttryck definierad enligt kodverket. | 1..1 |
../../../codeSystem | string | Kodverket som definierar koden. OID:en för Snomed CT SE ska anges, dvs â1.2.752.116.2.1.1â | 1..1 |
../../../codeSystemName | string | Kodverkets namn i klartext, dvs. âSnomed CT SEâ. | 0..1 |
../../../codeSystemVersion | string | Versionsangivelse som har definierats specifikt för det givna kodverket. | 0..1 |
../../../displayName | string | Den lÀsbara representationen (klartext) av koden eller uttrycket som definierat av kodverket. | 0..1 |
../../../originalText | string | Texten sÄ som sedd och/eller vald av anvÀndaren som har matat in den, och som representerar anvÀndarens avsedda betydelse. | 0..1 |
Nedan presenteras hur tillhörande XML-schemat ska vara utformat.
<xs:complexType name="careContactCode">
<xs:complexContent>
<xs:restriction base="CVType">
<xs:sequence>
<xs:element name="code" type="xs:string" />
<xs:element name="codeSystem" type="xs:string" fixed="1.2.752.116.2.1.1" />
<xs:element name="codeSystemName" type="xs:string" fixed="Snomed CT SE" minOccurs="0" />
<xs:element name="codeSystemVersion" type="xs:string" minOccurs="0" />
<xs:element name="displayName" type="xs:string" minOccurs="0" />
<xs:element name="originalText" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
Â
Exempel #2 - statisk kodverksanvÀndning
Nedan ges ett exempel pÄ hur CVTypen kan tillÀmpas för attributet careContactCode. Exemplet illustrerar en statisk kodverksanvÀndning. Exemplet omfattar hur attributet ska beskrivas i TKB:n samt i XML-schemat.
Enligt Generella regler för tillÀmpning av datatyper ska, vid tillÀmpning av en datatyp alla attribut som ingÄr i datatypen listas i fÀltregeltabellen i TKB:n. Det Àr tillÄtet att konkretisera attributens beskrivningar, vilket har gjorts i nedanstÄende exemplet i form av de gul-markerade texterna. Datatypens icke-obligatoriska attribut fÄr Àndras till att vara obligatoriska om tillÀmpningen krÀver det, vilket har gjorts för attributen code, codeSystem och displayName i nedanstÄende exemplet.
Namn | Dokument | Kommentar | LĂ€nk |
---|---|---|---|
R1 | Kodverkslista | Finns pÄ Webben |
|
Namn | Typ | Beskrivning | Multiplicitet |
---|---|---|---|
../../careContactCode | CVType | Kod som anger pĂ„ vilket sĂ€tt vĂ„rd- och omsorgskontakten Ă€r planerad att ske, alternativt skedde. Kodverket âKv vĂ„rdkontakttypâ ska anvĂ€ndas, se referens [R1]. Det Ă€r koderna frĂ„n version 2.0 som ska skickas. | 0..1 |
../../../code | string | Kod eller uttryck definierad enligt kodverket. | 1..1 |
../../../codeSystem | string | Kodverket som definierar koden. OID:en för Kv vĂ„rdkontakttyp ska anges, dvs â1.2.752.129.2.2.2.25â | 1..1 |
../../../codeSystemName | string | Kodverkets namn i klartext, dvs. âKv vĂ„rdkontakttypâ. | 0..1 |
../../../codeSystemVersion | string | Versionsangivelse som har definierats specifikt för det givna kodverket, dvs â2.0â. | 0..1 |
../../../displayName | string | Den lÀsbara representationen (klartext) av koden eller uttrycket som definierat av kodverket. | 1..1 |
../../../originalText | string | Texten sÄ som sedd och/eller vald av anvÀndaren som har matat in den, och som representerar anvÀndarens avsedda betydelse. | 0..1 |
Nedan presenteras hur tillhörande XML-schemat ska vara utformat.
<xs:complexType name="careContactCode">
<xs:complexContent>
<xs:restriction base="CVType">
<xs:sequence>
<xs:element name="code" type="xs:string" />
<xs:element name="codeSystem" type="xs:string" fixed="1.2.752.129.2.2.2.25" />
<xs:element name="codeSystemName" type="xs:string" fixed="Kv vÄrdkontaktyp" minOccurs="0" />
<xs:element name="codeSystemVersion" type="xs:string" fixed="2.0" minOccurs="0" />
<xs:element name="displayName" type="xs:string" />
<xs:element name="originalText" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
Exempel #3 - Behov av olika âstriktaâ CVType
Om det, inom ramen för ett tjÀnstekontrakt, anses nödvÀndigt att ha tvÄ varianter av CVType dÀr det för den ena Àr obligatoriskt att ange code och codeSystem kan tvÄ varianter av CVType tas fram. Detta kan se ut som i exemplet nedan.
CVcne - Coded Value, coded no exception
CVcwe - Coded Value, coded with exceptions
<xs:complexType name="CVcneType">
<xs:sequence>
<xs:element name="code" type="xs:string" />
<xs:element name="codeSystem" type="xs:string" />
<xs:element name="codeSystemName" type="xs:string" minOccurs="0" />
<xs:element name="codeSystemVersion" type="xs:string" minOccurs="0" />
<xs:element name="displayName" type="xs:string" minOccurs="0" />
<xs:element name="originalText" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CVcweType">
<xs:sequence>
<xs:element name="code" type="xs:string" minOccurs="0" />
<xs:element name="codeSystem" type="xs:string" minOccurs="0" />
<xs:element name="codeSystemName" type="xs:string" minOccurs="0" />
<xs:element name="codeSystemVersion" type="xs:string" minOccurs="0" />
<xs:element name="displayName" type="xs:string" minOccurs="0" />
<xs:element name="originalText" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
Â
Alternativ anvÀndning vid tillÀmpningen
Det Àr giltigt att anvÀnda CVTypen för att bara lagra den text som anvÀndaren matat in eller yttrade. I denna situation kommer originaltexten att existera utan kod. I en situation dÀr koden tilldelas nÄgon gÄng efter att texten matats in Àr originaltexten den text eller fras som anvÀnts som grund för att tilldela koden.
TillÀmpning av IIType
Datatypen IIType ska anvÀndas för att skicka identifierare. Beskrivningen av datatypen och dess schema finns pÄ defacto-sidan [R1]. Vid tillÀmpningen av IIType ska Generella regler för tillÀmpning av datatyper samt nedanstÄende anvisningar om val av identifierare följas. value
VĂ€lj identifierare
NÀr datatypen IIType anvÀnds behöver det vÀljas/pekas ut en identifierare. I befintliga tjÀnstekontrakt anvÀnds olika identifierare som finns sammanstÀllt pÄ listan över identifierare [R3].
Följ nedanstÄende steg för att bestÀmma om en identifierare kan anvÀndas för ett attribut inom det tjÀnstekontrakt som du arbetar med:
bekanta dig med de identifierare som finns pÄ pÄ lÀnkad sammanstÀllning
avgör om nÄgon av de befintliga identifierare som listas kan tillÀmpas för attributet i frÄgan
om nÄgon av de befintliga identifierare kan anvÀndas, sÄ ska den refereras till i enlighet med datatypens utformning.
om ingen av de befintliga identifierare kan anvÀndas för attributet i frÄgan kan det vara aktuellt att
anvÀnda sig av andra etablerat identifierare. Kontakta kodverksförvaltningen för att utreda om identifieraren ska tas med i sammanstÀllningen.
I dokumentationens referenslista ska alltid referens till lista över identifierare [R3] anges.
TillÀmpningsexempel
Nedan ges ett exempel pÄ hur IIType kan tillÀmpas för attributet personId. Exemplet omfattar hur attributet ska beskrivas i TKB:n samt i XML-schemat.
Enligt Generella regler för tillÀmpning av datatyper ska, vid tillÀmpning av en datatyp alla attribut som ingÄr i datatypen listas i fÀltregeltabellen i TKB:n. Det Àr tillÄtet att konkretisera attributens beskrivningar, vilket har gjorts i nedanstÄende exemplet i form av de gul-markerade texterna. Datatypens icke-obligatoriska attribut fÄr Àndras till att vara obligatoriska om tillÀmpningen krÀver det, vilket har gjorts för attributet extension i nedanstÄende exemplet.
Namn | Dokument | Kommentar | LĂ€nk |
---|---|---|---|
R1 | Lista över identifierare | Finns pÄ Webben |
|
Namn | Typ | Beskrivning | Multiplicitet |
---|---|---|---|
../../personId | IIType | Person- eller samordningsnummer. | 1..1 |
../../../root | string | En identifierare som i sig sjĂ€lv eller tillsammans med vĂ€rdet för extension Ă€r universellt unik. Om extension anges Ă€r root en unik identifierare av namnrymden för vĂ€rdet som anges i extension. För personnummer ska OID â1.2.752.129.2.1.3.1â anges, för samordningsnummer OID â1.2.752.129.2.1.3.3â. | 1..1 |
../../../extension | string | En identifierare som tillsammans med vĂ€rdet för root Ă€r universellt unik. AnvĂ€nds om vĂ€rdet pĂ„ root inte Ă€r universellt unikt. Personens faktiska personnummer eller samordningsnummer ska anges, t.ex. â191212121212â | 1..1 |
Nedan presenteras hur tillhörande XML-schemat ska vara utformat.
Gör avsteg
Om avsteg görs frÄn rÄdande anvisningar, resp. beskrivningar som finns i föreliggande dokumentet ska beslutet dokumenteras och motiveras i tjÀnstedomÀnens arkitekturella beslut (AB).
Â