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

Revisionshistorik

Revision

Revisionsdatum

Beskrivning

Ändringarna gjorda av

Definitiv revision faststÀlld av

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

Referens-id

Namn

LĂ€nk

R1

De facto-konventioner för datatyper (defacto-sidan)

https://bitbucket.org/rivta-domains/best-practice/wiki/De%20facto-konventioner%20f%C3%B6r%20datatyper.md

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:

  1. Om ett av elementen code, codeSystem eller displayName anges ska Àven de andra tvÄ anges.

  2. 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

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

Namn

Dokument

Kommentar

LĂ€nk

R1

Kodverkslista

Finns pÄ Webben

Namn

Typ

Beskrivning

Multiplicitet

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

Namn

Dokument

Kommentar

LĂ€nk

R1

Lista över identifierare

Finns pÄ Webben

Namn

Typ

Beskrivning

Multiplicitet

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).

Â