Sende dokument-bundle (IHE ITI-65)
1 Bakgrunn
Gjeldende implementasjon er basert på IHE MHD v4.2.2 (prøveimplementasjon av IHE MHD) som er basert på FHIR R4. Dette er en innledende implementasjon av en API-tjeneste som muliggjør registrering av allerede eksisterende dokumenter ved å opprette nye poster i et felles dokumentregister, og eventuelt lagre binærinnhold i NHNs dokumentlager.
Denne tjenesten er en RESTful-implementasjon av IHE ITI-41-meldingen «Provide and Register Document Set-b» (https://profiles.ihe.net/ITI/TF/Volume2/ITI-41.html)
1.1 Bruksområder
Denne tjenesten kan brukes når en publiserer (f.eks. EPJ) ønsker å laste opp et eksisterende medisinsk dokument (XML, PDF, FHIR-dokument, CDA-dokument, PNG-bilde osv.) til nasjonalt lager. EPJ oppretter en FHIR Bundle på sin side og sender denne informasjonen til det nasjonale endepunktet.
Basert på klassifiseringen av opplastet metadata vil dokumentet/dokumentene umiddelbart være tilgjengelige for annet helsepersonell og/eller innbygger i de respektive kanalene for målgruppen.
1.2. Tjenestetilgjengelighet
Denne tjenesten er for øyeblikket kun tilgjengelig i Norsk helsenetts TEST-miljø og kan testes som proof-of-concept. Produksjonsmiljø vil bli etablert basert på behov.
2 API-omfang
Det er en forutsetning at klienten MÅ bruke nhn:phr-repo/mhd/create-omfanget fra Norsk Helsenett dokumentlager-API-et i Selvbetjening for å kunne samhandle med ITI-65-tjenesten. Dette omfanget kan legges til en eksisterende HelseID-klientkonfigurasjon via HelseID Selvbetjenning
Selvbetjening TEST-miljø
3 Endepunkt
Provide Document Bundle - profiles.ihe.net ↗
| Egenskap | Beskrivelse |
|---|---|
| HTTP-handling | POST |
| Autorisasjon | DPoP JWT |
| Endepunkt-URL | R4/fhir/Bundle |
| Content-Type | application/fhir+json |
| Forespørselskropp | En FHIR Bundle-ressurs (ITI-65) |
| Svarkropp | FHIR OperationOutcome |
| HTTP 200 | Bunten er gyldig — ingen feil eller kritiske problemer funnet |
| HTTP 400 | Bunten har én eller flere valideringsfeil |
Eksempel
POST <baseurl>/R4/fhir/Bundle
Authorization: .....
Content-Type: application/fhir+json
<FHIR Bundle body — ITI-65>
3.1 Størrelsesgrenser for forespørsler
| Miljø | Maks størrelse per dokument | Maks størrelse per forespørsel | Kommentar |
|---|---|---|---|
| Test | 60 MB | 100 MB | Send flere forespørsler for større dokumenter |
| QA | 60 MB | 100 MB | Send flere forespørsler for større dokumenter |
| Produksjon | - | - | Ikke i produksjon ennå |
4 Meldinger
Meldinger er basert på bruk av profilen for omfattende metadata (https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.ProvideBundle") som definert av IHE (Integrating the Healthcare Enterprise) og tilpasset i henhold til dokumentet «Implementeringsguide for norsk bruk av XDS, XCA og XUA» (lenke til dokument) når det gjelder bruk av avtalte verdisett i norsk dokumentutveksling.
Siden det er en XDS-infrastruktur involvert i våre backend-tjenester, støtter vi for øyeblikket kun «XDS-on-FHIR», noe som betyr at alle involverte ressurser må være inneholdt i den innkommende forespørselen.
Vår implementasjon støtter for øyeblikket kun registrering av nye dokumenter i vårt XDS-lager. Andre typer transaksjoner, som erstatning eller utfasing av eksisterende dokumenter, vil bli implementert i fremtiden.
4.1 Meldingsforespørsel
Forespørselsmeldingen implementerer FHIR R4 Bundle med mulighet for bruk av inneholdte ressurser som FHIR R4 Patient, Practitioner, PractitionerRole og Organization. NHNs implementasjon bruker ikke andre FHIR-utvidelser enn de som er spesifisert i Comprehensive-Bundle-profilen.
4.1.1 Forklaring av Bundle-ressurser
Bundle-ressursen bør som minimum inneholde én List-ressurs (som gjenspeiler «XDS SubmissionSet») og én DocumentReference-ressurs (som gjenspeiler «XDS DocumentEntry»). Dersom det skal være binærinnhold i opplastingen, bør det også finnes en oppføring for Binary-ressursen.
* → elementstøtte implementert i gjeldende versjon
- → ikke implementert/testet ennå
| /- | Ressurselement | FHIR-ressurs | Kardinalitet | Beskrivelse | ||
|---|---|---|---|---|---|---|
| Bundle | Bundle | [1..1] | FHIR-ressurs for overføring | |||
| meta | ||||||
| profile | [1..] | brukt profil for Bundle (comprehensive) | ||||
| type | [1..1] | Angir hensikten med denne bunten – hvordan den er ment å brukes. Verdien MÅ være "transaction" |
||||
| timestamp | [0..1] | Dato/klokkeslett da bunten ble satt sammen | ||||
| entry | [1..] | Generisk tilnærming for ethvert Bundle.entry | ||||
| fullUrl | [0..1] | Den absolutte URL-en for ressursen | ||||
| resource | [1..1] | En liste er en kuratert samling av ressurser | ||||
| request | [1..1] | Tilleggsinformasjon om hvordan denne oppføringen skal behandles som del av en transaksjon eller batch | ||||
| method | [1..1] | I en transaksjon eller batch er dette HTTP-handlingen som skal utføres for denne oppføringen | ||||
| url | [1..1] | URL-en for denne oppføringen, relativ til roten | ||||
| entry (SubmissionSet) | List | [1..1] | SubmissionSet definerer hvem som sendte inn, hvorfor de sendte inn, når de sendte inn, hva som er i det, og hvor det er bestemt | |||
| entry (DocumentRefs) | DocumentReference | [0..] | Alle nye DocumentReference-ressurser som er del av SubmissionSet | |||
| - | entry (UpdateDocumentRefs) | DocumentReference | [0..] | Alle oppdaterte DocumentReference-ressurser som er del av SubmissionSet dersom en ny DocumentReference erstatter denne DocumentReference | ||
| entry (Documents) | Binary | [0..] | Dokumenter som det refereres til av DocumentReference-ressursene | |||
| - | entry (FhirDocuments) | Binary | [0..] | FHIR-FhirDocuments som det refereres til av DocumentReference-ressursene | ||
| - | entry (Folders) | List | [0..] | Mapper som opprettes eller oppdateres | ||
| - | entry (Patient) | Patient | [0..*] | Pasient |
4.1.1.1 List-ressurs som innsendingssett (Submission Set)
Hver registrering av dokumenter har en felles konvolutt (FHIR R4 List) med metadata om hvem og hva som registreres (innsending). Denne innsendingsmetadataen MÅ oppgis ved registrering når man bruker «ITI-65 IHE Provide Document Bundle».
* → elementstøtte implementert i gjeldende versjon
- → ikke implementert/testet ennå
| /- | Ressurselement | XDS-navn | Kardinalitet | Beskrivelse | ||
|---|---|---|---|---|---|---|
| List | [1..1] | FHIR-ressurs i kontekst av XDS SubmissionSet | ||||
| meta | ||||||
| profile | SubmissionSet.limitedMetadata | [1..] | brukt profil for innsendingssett (comprehensive) | |||
| extension (designationType) | SubmissionSet.contentType | [1..1] | Uttrykker innholdstype for innsendingssettet eller kodelisten for en mappe Forventet verdi: kode fra urn:oid:2.16.578.1.12.4.1.1.9602 |
|||
| extension (sourceId) | SubmissionSet.sourceId | [1..1] | OID for innsendende organisasjon | |||
| - | extension (intendedRecipient) | SubmissionSet.intendedRecipient | [1..1] | Inneholder identiteten til organisasjonen eller personen innsendingssettet er ment for | ||
| identifier (official) | SubmissionSet.entryUUID | [1..1] | EntryUUID – en identifikator som identifiserer en enhet unikt og entydig | |||
| identifier (usual) | SubmissionSet.uniqueId | [1..1] | uniqueId OID – en identifikator | |||
| status | SubmissionSet.availabilityStatus | [1..1] | Godkjenning eller utfasing Forventet verdi: "current" |
|||
| mode | [1..1] | Hvordan denne listen ble utarbeidet Forventet verdi: "working" |
||||
| title | SubmissionSet.title | [0..1] | Tekststreng for tittel på denne innsendingen | |||
| code | [1..1] | Denne koden definerer hensikten med listen – hvorfor den ble opprettet Forventet verdi: "submissionset" som identifikator for List-type |
||||
| subject | SubmissionSet.patientId | [1..1] | pasientidentifikator for innsending | |||
| date | SubmissionSet.submissionTime | [1..1] | Datoen da listen ble utarbeidet | |||
| source | SubmissionSet.author | [0..1] | Hvem som sendte inn (person) | |||
| - | extension (authorOrg) | SubmissionSet.author | [0..1] | Når forfatteren av SubmissionSet er en organisasjon, skal denne utvidelsen brukes | ||
| note | SubmissionSet.comments | [0..1] | kommentarer til innsendingssettet | |||
| entry | ||||||
| item (DocumentReference) | [1..] | Liste over dokumentreferanser i denne innsendingen | ||||
| item (List) | [0..] | Liste over «Folder List» i denne innsendingen |
TODO: Kan HER-id presentert i OID-form brukes som SourceId? f.eks.: urn:oid:2.16.578.1.12.4.1.2.112374 for Norsk helsenett [TEST]
OBLIGATORISKE krav for registrering av List-ressurs:
- Ressurs-id MÅ være til stede for referering på tvers av bunten (List.id)
- MÅ bruke korrekt profil (List.Meta.Profile = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.SubmissionSet")
- Dersom innsendingsforfatter er definert og referert (List.source.reference), BØR det finnes et inneholdt objekt for denne forfatteren i bundle-oppføringen [kan avvike fra dokumentforfatter]
- Det er 2 obligatoriske utvidelser:
- IHE Designation type (https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-designationType): Klassifisering av innholdstype for innsendingssettet
- IHE SourceId (https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-sourceId): Publiserende organisasjons identitet som OID
- Identifikatorer MÅ registreres som anbefalt i IHE MHD SubmissionSet-spesifikasjonen
4.1.1.2 List-ressurs som mappe (Folder)
[Støttes ikke ennå]
4.1.1.3 DocumentReference-ressurs
Hver binærressurs som lastes opp i «provide document bundle» SKAL ha sin egen referansemetadatabeskrivelse (FHIR R4 DocumentReference). DocumentReference kan beskrive en intern ressurs (Binary) eller inneholde en lenke til ekstern lagring (ingen Binary-ressurs i Bundle-oppføring).
* → elementstøtte implementert i gjeldende versjon
- → ikke implementert/testet ennå
| /- | Ressurselement | XDS-navn | Kardinalitet | Beskrivelse | ||
|---|---|---|---|---|---|---|
| DocumentReference | [0..] | FHIR-ressurs i kontekst av XDS DocumentEntry | ||||
| meta | [0..1] | |||||
| profile | DocumentEntry.limitedMetadata | [0..] | brukt profil for innsendingssett (comprehensive) | |||
| masterIdentifier | DocumentEntry.uniqueId | [1..1] | uniqueId OID | |||
| identifier (usual) | DocumentEntry.entryUUID | [1..1] | EntryUUID | |||
| status | DocumentEntry.availabilityStatus | [1..1] | Status for denne dokumentreferansen Verdier: [current | superseded | entered-in-error] |
|||
| type | DocumentEntry.typeCode | [1..1] | Angir den spesielle typen dokument det refereres til Forventet verdi: kode fra urn:oid:2.16.578.1.12.4.1.1.9602, nivå 2 |
|||
| category | DocumentEntry.classCode | [1..1] | En kategorisering for typen dokument det refereres til Forventet verdi: kode fra urn:oid:2.16.578.1.12.4.1.1.9602, nivå 1 |
|||
| subject | DocumentEntry.patientId | [1..1] | pasientidentifikator for dokumentreferansen | |||
| author | DocumentEntry.author | [0..] | Identifiserer hvem som er ansvarlig for å legge til informasjonen i dokumentet | |||
| authenticator | DocumentEntry.legalAuthenticator | [0..1] | Hvilken person eller organisasjon autentiserer at dette dokumentet er gyldig | |||
| - | custodian | ikke kartlagt | Identifiserer organisasjonen eller gruppen som er ansvarlig for løpende vedlikehold og tilgang til dokumentet | |||
| relatesTo | DocumentEntry-assosiasjoner | [0..] | Plassholder for relasjoner dette dokumentet har med andre dokumentreferanser som allerede eksisterer | |||
| - | code | DocumentEntry-assosiasjoner.type | [0..1] | Typen relasjon dette dokumentet har med et annet dokument Verdier: [replaces | transforms | signs | appends] |
||
| - | target | DocumentEntry-assosiasjoner.reference | [1..1] | Måldokumentet for denne relasjonen | ||
| description | DocumentEntry.coments | [0..1] | Valgfri beskrivelse for dokumentreferansen | |||
| securityLabel | DocumentEntry.confidentialityCode | [1..] | Liste over konfidensialitetsinnstillinger for relatert dokument | |||
| content | [1..1] | Plassholder for referert vedlegg | ||||
| attachment | [1..1] | Plassholder for vedleggets beskrivelse | ||||
| contentType | DocumentEntry.mimeType | [1..1] | Identifiserer typen data i vedlegget og gjør det mulig å velge en metode for å tolke eller vise dataene | |||
| language | DocumentEntry.language | [1..1] | Det menneskelige språket i innholdet i det refererte dokumentet | |||
| url | DocumentEntry.repositoryUniqueId DocumentEntry.URI |
[1..1] | En plassering der dataene kan nås – referanse til dokumentets binærinnhold i lageret eller et annet sted der data kan finnes | |||
| size | DocumentEntry.size | [0..1] | Størrelse på referert dokument før base64-koding; for dokumenter opprettet på direkten = 0 byte | |||
| hash | DocumentEntry.hash | [0..1] | Den beregnede hash-verdien for dataene ved hjelp av SHA-1 | |||
| title | DocumentEntry.title | [0..1] | Navn på relatert dokument | |||
| creation | DocumentEntry.creationTime | [1..1] | Dato da det refererte dokumentet ble opprettet første gang | |||
| format | DocumentEntry.formatCode | [1..1] | En identifikator for dokumentets koding, struktur og mal som dokumentet samsvarer med, utover grunnformatet angitt i mimeType. | |||
| context | [1..1] | Plassholder for klinisk kontekst for det refererte dokumentet som dokumentet ble utarbeidet i | ||||
| - | encounter | DocumentEntry.referenceIdList | [0..] | Beskriver det kliniske møtet eller typen omsorg som dokumentinnholdet er knyttet til | ||
| event | DocumentEntry.eventCodeList | [0..] | liste over koder som representerer de viktigste kliniske handlingene, knyttet til konteksten for det refererte dokumentet under dokumenteringen | |||
| period | [0..1] | Plassholder for perioden for dokumentkonteksten | ||||
| start | DocumentEntry.serviceStartTime | [0..1] | Starttidspunkt for konteksten til referert dokument (f.eks. pasientbesøk hos fastlege) | |||
| end | DocumentEntry.serviceStopTime | [0..1] | Sluttidspunkt for konteksten til referert dokument | |||
| facilityType | DocumentEntry.healthcareFacilityType | [1..1] | Typen helseinstitusjon der pasienten ble sett Forventet verdi: kode fra urn:oid:2.16.578.1.12.4.1.1.9602 |
|||
| practiceSetting | DocumentEntry.practiceSettingCode | [1..1] | Denne egenskapen kan formidle spesifikke opplysninger om praksisomgivelsene der innholdet ble opprettet, og gjenspeiler ofte den kliniske spesialiteten Forventet verdi: kode fra ett av følgende: - urn:oid:2.16.578.1.12.4.1.1.7750 - urn:oid:2.16.578.1.12.4.1.1.8254 - urn:oid:2.16.578.1.12.4.1.1.8451 - urn:oid:2.16.578.1.12.4.1.1.8653 - urn:oid:2.16.578.1.12.4.1.1.8655 - urn:oid:2.16.578.1.12.4.1.1.8662 - urn:oid:2.16.578.1.12.4.1.1.8663 - urn:oid:2.16.578.1.12.4.1.1.8664 - urn:oid:2.16.578.1.12.4.1.1.8666 - urn:oid:2.16.578.1.12.4.1.1.8668 samme som spesifisert i tillitsrammeverket |
|||
| sourcePatientInfo | [1..1] | Plassholder for pasientkontekst slik den var kjent da dokumentet ble publisert | ||||
| reference | DocumentEntry.sourcePatientInfo | [0..1] | Pasientens opplysninger som navn, fødselsdato osv. | |||
| identifier | DocumentEntry.sourcePatientId | [0..1] | Pasientens identifikator | |||
| - | related | DocumentEntry.referenceIdList | [0..*] | Relaterte identifikatorer eller ressurser knyttet til DocumentReference-ressursene |
OBLIGATORISKE krav for registrering av DocumentReference-ressurs:
- Ressurs-id MÅ være til stede for referering på tvers av bunten (DocumentReference.resource.id)
- MÅ bruke korrekt profil (DocumentReference.Meta.Profile = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.DocumentReference")
- Patient-ressurs MÅ være inneholdt
- Alle dokumentforfattere SKAL være inneholdt og referert i DocumentReference
- Identifikatorer MÅ registreres som anbefalt i IHE MHD DocumentReference-spesifikasjonen
- Det SKAL oppgis status for registrert dokument (f.eks. «Current»)
- Dokumentklassifisering SKAL registreres som anbefalt i IHE MHD DocumentReference-spesifikasjonen
- Hver referanse SKAL ha minst 1 securityLabel
- Hvert
DocumentReference.content[x].attachmentSKAL inneholdehomeCommunityId-utvidelsen.
4.1.1.3.1 Ruting: homeCommunityId på DocumentReference.content.attachment
NHN bruker en homeCommunityId-utvidelse på DocumentReference.content.attachment for å rute hvert dokument til korrekt register/lager.
Krav
- Hvert
DocumentReference.content[x].attachmentSKAL inneholdehomeCommunityId-utvidelsen. - Tjenesten godtar for øyeblikket utvidelsen under følgende URL(er):
- Kanonisk (IHE MHD):
https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-homeCommunityId - Eldre (støttes for bakoverkompatibilitet):
urn:ihe:iti:xds:2013:homeCommunityId(dersom aktuelt i din integrasjon)
- Kanonisk (IHE MHD):
Kardinalitet
DocumentReference.content:[1..1](som beskrevet ovenfor)DocumentReference.content.attachment.extension[homeCommunityId]:[1..1]
Verdi
- Utvidingens verdi forventes å være en streng/identifikator som representerer målsamfunnet/lageret.
Valideringsadferd
- Hvis
homeCommunityIdmangler eller er tom, returnerer API-et HTTP 400 med enOperationOutcomesom angir:Missing DocumentReference.content.attachment.extension[homeCommunityId].
Eksempel
{
"content": [
{
"attachment": {
"contentType": "image/png",
"url": "urn:uuid:b124f78c-783b-446d-a9e5-a9b761e012f3",
"extension": [
{
"url": "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-homeCommunityId",
"valueString": "urn:oid:1.2.840.4711.815.1"
}
]
}
}
]
}
4.1.1.4 Binary-ressurs
Hver binærressurs som lastes opp i «provide document bundle» SKAL leveres i sin egen ressurs (FHIR R4 Binary).
OBLIGATORISKE krav for registrering av Binary-ressurs:
- Ressurs-id MÅ være til stede for referering på tvers av bunten (Binary.resource.id)
- Det SKAL registreres contentType for binærinnholdet (f.eks. «image/png»)
- Binærinnhold SKAL registreres som base64-innhold.
4.1.2 Inneholdte ressurser i Bundle entry-forespørsel
Følgende spesifikasjon gjenspeiler inneholding av ressurser i den respektive Bundle-oppføringen.
4.1.2.1 Patient-ressurs
FHIR R4 Patient forventer ikke bruk av noen bestemt profil, og er basert på bruk av standard generisk FHIR-profil for pasient.
Gjeldende implementasjon støtter ikke norske utvidelser, som (norsk) «mellomnavn» i Patient.Name, FHIR R4 HumanName (http://hl7.no/fhir/StructureDefinition/no-basis-middlename). Denne utvidelsen vil bli utelatt.
Anbefalinger definert i no-basis-Patient-profilen (ref. https://simplifier.net/hl7norwayno-basis/nobasispatient) SKAL respekteres (bruk av identifikatorer).
OBLIGATORISKE krav for bruk av inneholdt Patient-ressurs:
- Det SKAL finnes unik ID for referering innenfor bundle-oppføringen (Patient.id)
- MÅ bruke norsk identifikator (typer: FNR, D-nummer, FHN)
- Det SKAL registreres 1 og kun 1 identifikator per Patient-ressurs (Patient.identifier)
- Det SKAL registreres kun 1 HumanName i Patient.Name, som representerer pasientens faktiske navn på nåværende tidspunkt
- Mellomnavn registreres i Patient.Name.Given etter pasientens fornavn [rekkefølge på fornavn er viktig i Norge]
- Det SKAL være minst 1 etternavn og minst 1 fornavn registrert i Patient.Name-elementet
- Alle andre ressurselementer er valgfrie og vil bli forkastet etter behandling
4.1.2.2 Practitioner-ressurs
FHIR R4 Practitioner forventer ikke noen bestemt profil, og er basert på bruk av standard generisk FHIR-profil for helsepersonell.
Gjeldende implementasjon støtter ikke norske utvidelser, som (norsk) «mellomnavn» i Practitioner.Name, FHIR R4 HumanName (http://hl7.no/fhir/StructureDefinition/no-basis-middlename).
Anbefalinger definert i no-basis-Practitioner (ref. https://simplifier.net/hl7norwayno-basis/nobasispractitioner) SKAL respekteres (bruk av identifikatorer og registrering av kvalifikasjoner). Denne utvidelsen vil bli utelatt.
OBLIGATORISKE krav for bruk av inneholdt Practitioner-ressurs:
- Det SKAL finnes unik ID for referering innenfor bundle-oppføringen (Practitioner.id)
- Det SKAL registreres kun 1 HumanName i Practitioner.Name, som representerer helsepersonellets faktiske navn på nåværende tidspunkt
- Mellomnavn registreres i Practitioner.Name.Given etter personens fornavn [rekkefølge på fornavn er viktig i Norge]
- Det SKAL alltid være minst 1 etternavn og 1 fornavn registrert i Practitioner.Name-elementet
- Alle andre ressurselementer er valgfrie og vil bli forkastet etter behandling
4.1.2.3 PractitionerRole-ressurs
FHIR R4 PractitionerRole forventer ikke noen bestemt profil, og er basert på bruk av standard generisk profil.
Anbefalinger definert i no-basis-PractitionerRole-profilen (ref. https://simplifier.net/hl7norwayno-basis/nobasispractitionerrole) SKAL respekteres.
OBLIGATORISKE krav for bruk av inneholdt PractitionerRole-ressurs:
- Det SKAL finnes unik ID for referering innenfor bundle-oppføringen (PractitionerRole.id)
- Hvert helsepersonell SKAL ha en separat PractitionerRole-ressurs tildelt
- Begge referanser (organisasjon og helsepersonell) SKAL være registrert
- Helsepersonellets rolle SKAL registreres som minimum 1 instans av PractitionerRole.Code.Coding [støtte for strukturert registrering av denne informasjonen er ikke på plass ennå]
- Helsepersonellets spesialitet forventes som minimum 1 instans av PractitionerRole.Specialty [støttes ikke ennå]
- Helsepersonellets telecom forventes som minimum 1 instans av PractitionerRole.Telecom [støttes ikke ennå]
- Alle andre ressurselementer er valgfrie og vil bli forkastet etter behandling
4.1.2.4 Organization-ressurs
FHIR R4 Organization forventer ikke noen bestemt profil, og er basert på generisk standardprofil. Løsningen støtter ikke norske utvidelser, som norske adresseutvidelser i FHIR R4 Address.
Anbefalinger definert i no-basis-Organization-profilen (ref. https://simplifier.net/hl7norwayno-basis/nobasisorganization) SKAL respekteres (bruk av identifikatorer).
OBLIGATORISKE krav for bruk av inneholdt Organization-ressurs:
- Det SKAL finnes unik ID for referering innenfor bundle-oppføringen (Organization.id)
- Identifikatorer som identifiserer organisasjonen forventes som norske identifikatorer [ikke implementert ennå]
- Det SKAL registreres minimum 1 og kun 1 navn i Organization.Name
Organization.Name [1..1]
- Alle andre ressurselementer er valgfrie og vil bli forkastet etter behandling
4.1.3 Uttrykking av helsepersonellets organisasjonstilknytning
I XDS brukes følgende informasjonsmodell
<Practitioner>
<Name>...</Name>
<Role>...</Role>
<Organization>...</Organization>
<Specialty>...</Specialty>
<Telecom>...</Telecom>
</Practitioner>
IHE MHD-profilen er noe uklar på dette emnet, noe som kan føre til flere implementasjoner.
I vår tjeneste er det følgende forventning:
Hvis det er en relasjon mellom Practitioner og Organization, SKAL det finnes en PractitionerRole-ressurs som kobler disse to ressursene.
PractitionerRole.Practitioner = reference(Practitioner|no-basis-Practitioner)
PractitionerRole.Organization = reference(Organization|no-basis-Organization)
Dersom det kun er 1 Practitioner og Organization inneholdt i DocumentRefs eller List, kan PractitionerRole utelates. Ellers vil ikke ressursen bli behandlet ettersom det er umulig å koble helsepersonell og organisasjon korrekt.
NB!: Elementer som «Specialty» og «Telecom» støttes ikke ennå, og informasjon som oppgis vil ikke bli behandlet/registrert.
4.2 Meldingssvar
Ved suksess følger dette endepunktet FHIR-transaksjonssemantikk:
- HTTP-svaret er
200 OK - Svarkroppen er en
Bundleav typentransaction-response - Det returneres én
Bundle.entry.responsefor hver oppføring i forespørselen (samme rekkefølge) - For hver ressurs som ble opprettet, er
Bundle.entry.response.status201 Createdoglocationidentifiserer den opprettede ressursen
Ved feil (400, 401, 500) er svarkroppen en OperationOutcome.
| HTTP-status | Beskrivelse |
|---|---|
| HTTP-200 OK | Transaksjonen ble behandlet. Returnerer en transaction-response-bunt; hver opprettet oppføring har 201 Created i entry.response.status. |
| HTTP-400 Bad Request | Noe ble ikke registrert korrekt |
| HTTP-401 Unauthorized | Det er noe galt med JWT-tokenet |
| HTTP-500 Internal server error | Noe teknisk gikk galt [tokenbytte, intern XDS-kommunikasjon osv.] |
4.2.1 Eksempel: transaction-response-bunt
Eksempelsvar der 3 dokumentreferanser (DocumentReference) ble opprettet:
{
"resourceType": "Bundle",
"type": "transaction-response",
"entry": [
{
"response": {
"status": "201 Created",
"location": "DocumentReference/4605182e-a9df-47bc-b5e5-0ae33a465bfe"
}
},
{
"response": {
"status": "201 Created",
"location": "DocumentReference/44ca7463-8b05-45cf-8d08-ea8e429c3773"
}
},
{
"response": {
"status": "201 Created",
"location": "DocumentReference/b124f78c-783b-446d-a9e5-a9b761e012f3"
}
}
]
}
5 Dokumentlivssyklus og assosiasjoner (DocumentReference.relatesTo)
Elementet DocumentReference.relatesTo brukes til å uttrykke relasjoner mellom dokumentet som sendes inn (kilde-DocumentReference) og et allerede registrert dokument (mål-DocumentReference). I XDS-termer tilsvarer dette DocumentEntry-assosiasjoner.
DocumentReference.relatesTo brukes primært ved publisering av en ny versjon av et dokument, levering av en transformert representasjon, tilføying av signaturer, eller tillegg av ytterligere innhold.
5.1 Struktur
DocumentReference.relatesTo er en rekke med assosiasjons-objekter:
relatesTo[i].code– assosiasjonstypenrelatesTo[i].target– en referanse til måldokumentet som allerede eksisterer
FHIR R4-elementstruktur:
DocumentReference.relatesTo[0..*]
.code [0..1] (replaces | transforms | signs | appends)
.target [1..1] (Reference(DocumentReference))
5.2 Assosiasjonstyper
Følgende assosiasjonstyper er definert av IHE MHD/XDS-kartleggingen og brukes vanligvis:
5.2.1 replaces
Brukes når det innsendte dokumentet er en ny versjon som erstatter et tidligere dokument.
- Den innsendte
DocumentReferenceblir det gjeldende dokumentet targeter dokumentet som erstattes
Typiske brukstilfeller:
- Korrigert rapport
- Oppdatert epikrise
5.2.2 transforms
Brukes når det innsendte dokumentet er en transformasjon/avledning av et eksisterende dokument.
targeter kildedokumentet som ble transformert
Typiske brukstilfeller:
- CDA transformert til PDF
- Skannet bilde transformert til en konsolidert PDF
5.2.3 signs
Brukes når det innsendte dokumentet er et signaturdokument for et eksisterende dokument.
targeter dokumentet som signeres
Typiske brukstilfeller:
- Separat signaturartefakt som refererer til det kliniske dokumentet
5.2.4 appends
Brukes når det innsendte dokumentet legger til ytterligere innhold til et eksisterende dokument.
targeter dokumentet det legges til innhold i
Typiske brukstilfeller:
- Tillegg
- Supplementsside(r)
5.3 Referering til måldokumentet
target-referansen SKAL peke til den eksisterende DocumentReference-instansen som er assosiert.
Merknader:
- Måldokumentet er vanligvis et allerede registrert dokument i lageret/registeret.
- Når ITI-65 (Provide Document Bundle) brukes, er det assosierte måldokumentet normalt ikke inkludert som en fullstendig ressurs i den innkommende
Bundle. I stedet refereres det ved hjelp av kjent id/identifikator.
Eksempel (erstatter et eksisterende dokument):
{
"resourceType": "DocumentReference",
"id": "new-document-id",
"relatesTo": [
{
"code": "replaces",
"target": {
"reference": "DocumentReference/existing-document-id"
}
}
]
}
5.4 Flere assosiasjoner
relatesTo KAN inneholde flere oppføringer ved behov (f.eks. et dokument som både erstatter ett dokument og legger til innhold i et annet), men implementatorer bør unngå tvetydige relasjoner.
5.5 Gjeldende implementasjonsstøtte
På tidspunktet for skriving er livssyklustransaksjoner som erstatning/utfasing beskrevet som fremtidig funksjonalitet (se avsnitt 4). Dersom relatesTo oppgis, BØR klienter sikre at assosiasjonen er semantisk korrekt og at den refererte target eksisterer og kan løses opp i backendregisteret.
ITI-65 $validate-operasjon
$validate-operasjonen lar en avsender validere en FHIR Bundle — slik den ville blitt sendt inn via ITI-65 Provide Document Bundle — uten å lagre noe. Dette er nyttig for testing og integrasjonsformål, og sikrer at en bunt vil bli godtatt før den sendes inn for alvor.
Provide Document Bundle - profiles.ihe.net ↗
| Egenskap | Beskrivelse |
|---|---|
| HTTP-handling | POST |
| Autorisasjon | DPoP JWT |
| Endepunkt-URL | R4/fhir/Bundle/$validate |
| Content-Type | application/fhir+json |
| Forespørselskropp | En FHIR Bundle-ressurs (samme format som ITI-65) |
| Svarkropp | FHIR OperationOutcome |
| HTTP 200 | Bunten er gyldig — ingen feil eller kritiske problemer funnet |
| HTTP 400 | Bunten har én eller flere valideringsfeil |
Hva som valideres
$validate-endepunktet kjører to lag med validering:
Forretningsregler / innholdsvalidering — de samme kontrollene som brukes under en faktisk ITI-65-innsending:
- Pasientidentifikatorer må bruke et tillatt utstedende autoritetssystem
- Organisasjonsidentifikatorer må bruke en kjent OID/system
- Helsepersonellidentifikatorer må bruke et kjent system
- CodeableConcepts kontrolleres mot konfigurert terminologi:
facilityType,practiceSetting,securityLabel,type,category,format,attachment- Ukjente systemer gir en advarsel
- Kjente systemer med ukjent verdi gir en feil
IHE MHD-profilsamsvar — via Firely SDK-validatoren mot
ihe.iti.mhd@4.2.0-pakken. Dette laget kjøres i tillegg til forretningsregellaget.
Merk: Bunten lagres aldri når
$validatekalles. Internt kjøres den samme provide-bundle-prosessen med etvalidateOnly: true-flagg.
Svarformat
Svaret er alltid en FHIR OperationOutcome. Hvert problem har en severity og en diagnostics-melding som beskriver hva som feilet og hvor.
| Alvorlighetsgrad | Betydning |
|---|---|
fatal |
Inndata kunne ikke tolkes som en gyldig FHIR Bundle |
error |
Et obligatorisk felt er ugyldig eller bruker en ukjent verdi i et kjent kodesystem |
warning |
Et felt bruker en ukjent system-OID/URL som ikke er konfigurert lokalt |
information |
Valideringen bestod med 0 feil eller advarsler |
Eksempel
POST <baseurl>/R4/fhir/Bundle/$validate
Content-Type: application/fhir+json
<FHIR Bundle body — same format as ITI-65>
Vellykket svar (HTTP 200):
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "information",
"code": "success",
"diagnostics": "Bundle validated with 0 errors or warnings"
}
]
}
Feilsvar (HTTP 400):
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "code-invalid",
"diagnostics": "Unknown Value for facilityType (Value=86.999, System=2.16.578.1.12.4.1.1.1303)",
"location": ["Bundle.entry[0].resource.context.facilityType"]
},
{
"severity": "warning",
"code": "code-invalid",
"diagnostics": "Unknown System and Value for Organization (Value=UNKNOWN-ORG, System=urn:oid:9.9.9.9.9)",
"location": ["Bundle.entry[0].resource.contained[1]"]
}
]
}
Forhold til ITI-65 (Provide Document Bundle)
Ved innsending via det vanlige ITI-65-endepunktet (POST R4/fhir/Bundle) kjøres den samme innholdsvalideringen automatisk før lagring. Dersom det finnes error- eller fatal-problemer, avvises forespørselen og en OperationOutcome returneres — ingenting lagres.
Merk: Advarsler blokkerer ikke innsending.
Bruk $validate under utvikling og integrasjonstesting for å iterere på buntinnholdet uten risiko for å forurense registeret.
7 Eksempler
7.1 Eksempel på Bundle-forespørsel
{
"resourceType" : "Bundle",
"id" : "95b6dcdc-b738-4029-a94d-8da44af8cdf3",
"meta" : {
"profile" : [ "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.ProvideBundle" ],
"security" : [ {
"system" : "http://terminology.hl7.org/CodeSystem/v3-ActReason",
"code" : "HTEST"
} ]
},
"type" : "transaction",
"timestamp" : "2024-09-02T16:28:31.871+02:00",
"entry" : [ {
"fullUrl" : "urn:uuid:4605182e-a9df-47bc-b5e5-0ae33a465bfe",
"resource" : {
"resourceType" : "List",
"id" : "4605182e-a9df-47bc-b5e5-0ae33a465bfe",
"meta" : {
"profile" : [ "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.SubmissionSet" ]
},
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">SubmissionSet Narrative</div>"
},
"contained" : [ {
"resourceType" : "Practitioner",
"id" : "c94656a0-df62-4234-b23a-0c07c54ac660",
"name" : [ {
"family" : "GREVLING",
"given" : [ "KVART" ]
} ]
} ],
"extension" : [ {
"url" : "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-designationType",
"valueCodeableConcept" : {
"coding" : [ {
"system" : "urn:oid:2.16.578.1.12.4.1.1.9602",
"code" : "A03-2"
} ]
}
}, {
"url" : "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-sourceId",
"valueIdentifier" : {
"value" : "urn:oid:1.2.840.4711.815.1"
}
} ],
"identifier" : [ {
"use" : "usual",
"system" : "urn:ietf:rfc:3986",
"value" : "urn:oid:4605182e-a9df-47bc-b5e5-0ae33a465bfe"
}, {
"use" : "official",
"system" : "urn:ietf:rfc:3986",
"value" : "urn:uuid:44ca7463-8b05-45cf-8d08-ea8e429c3773"
} ],
"status" : "current",
"mode" : "working",
"title" : "SubmissionSet-17855599120-9/2/2024 4:28:23 PM",
"code" : {
"coding" : [ {
"system" : "https://profiles.ihe.net/ITI/MHD/CodeSystem/MHDlistTypes",
"code" : "submissionset"
} ]
},
"subject" : {
"reference" : "Patient/5340ef78-dc25-4d92-8d4f-44ccd99469c2"
},
"date" : "2024-09-02T16:28:26Z",
"source" : {
"reference" : "#c94656a0-df62-4234-b23a-0c07c54ac660"
},
"entry" : [ {
"item" : {
"reference" : "urn:uuid:44ca7463-8b05-45cf-8d08-ea8e429c3773"
}
} ]
},
"request" : {
"method" : "POST",
"url" : "List/4605182e-a9df-47bc-b5e5-0ae33a465bfe"
}
}, {
"fullUrl" : "urn:uuid:44ca7463-8b05-45cf-8d08-ea8e429c3773",
"resource" : {
"resourceType" : "DocumentReference",
"id" : "44ca7463-8b05-45cf-8d08-ea8e429c3773",
"meta" : {
"profile" : [ "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.DocumentReference" ],
"security" : [ {
"system" : "2.16.840.1.113883.5.25",
"code" : "N"
} ]
},
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">Narrative for DocumentRefs</div>"
},
"contained" : [ {
"resourceType" : "Patient",
"id" : "5340ef78-dc25-4d92-8d4f-44ccd99469c2",
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">SubmissionSet with Patient</div>"
},
"identifier" : [ {
"system" : "urn:oid:2.16.578.1.12.4.1.4.1",
"value" : "17855599120"
} ],
"name" : [ {
"family" : "KLOKKE",
"given" : [ "USNOBBET" ]
} ],
"gender" : "male",
"birthDate" : "1955-05-17"
}, {
"resourceType" : "Practitioner",
"id" : "c612e85b-f82e-47ee-8abe-def8db59f38d",
"name" : [ {
"family" : "Test",
"given" : [ "Darius" ]
} ]
}, {
"resourceType" : "PractitionerRole",
"id" : "63257ddd-c81f-48d1-a440-ed06a6179ff7",
"practitioner" : {
"reference" : "Practitioner/c612e85b-f82e-47ee-8abe-def8db59f38d"
},
"organization" : {
"reference" : "Organization/17181d6f-579b-4dd3-a522-13c964123ead"
},
"code" : [ {
"coding" : [ {
"display" : "Sykepleier"
} ]
} ]
}, {
"resourceType" : "Organization",
"id" : "17181d6f-579b-4dd3-a522-13c964123ead",
"name" : "St. Olavs klinikk"
}, {
"resourceType" : "Practitioner",
"id" : "be0fddfd-b66b-4403-a793-f8a581419423",
"name" : [ {
"family" : "Duck",
"given" : [ "Donald", "Reginald" ]
} ]
}, {
"resourceType" : "PractitionerRole",
"id" : "250c9286-8cc4-4fd9-87bc-2accf90527e3",
"practitioner" : {
"reference" : "Practitioner/be0fddfd-b66b-4403-a793-f8a581419423"
},
"organization" : {
"reference" : "Organization/653b3b87-204e-44fb-b6ea-f26ea1a625bd"
},
"code" : [ {
"coding" : [ {
"display" : "Lege"
} ]
} ]
}, {
"resourceType" : "Organization",
"id" : "653b3b87-204e-44fb-b6ea-f26ea1a625bd",
"name" : "St. Olavs klinikk"
}, {
"resourceType" : "Practitioner",
"id" : "610e464c-24f5-4afe-9dbf-03457129c4ea",
"name" : [ {
"family" : "Streng",
"given" : [ "Dag" ]
} ]
} ],
"masterIdentifier" : {
"use" : "usual",
"system" : "urn:ietf:rfc:3986",
"value" : "urn:uuid:44ca7463-8b05-45cf-8d08-ea8e429c3773"
},
"status" : "current",
"type" : {
"coding" : [ {
"system" : "urn:oid:2.16.578.1.12.4.1.1.9602",
"code" : "A03-2"
} ]
},
"category" : [ {
"coding" : [ {
"system" : "urn:oid:2.16.578.1.12.4.1.1.9602",
"code" : "A00-1"
} ]
} ],
"subject" : {
"reference" : "Patient/5340ef78-dc25-4d92-8d4f-44ccd99469c2"
},
"date" : "2024-02-07T14:35:41.775+01:00",
"author" : [ {
"reference" : "#c612e85b-f82e-47ee-8abe-def8db59f38d",
"type" : "Practitioner"
}, {
"reference" : "#63257ddd-c81f-48d1-a440-ed06a6179ff7",
"type" : "PractitionerRole"
}, {
"reference" : "#17181d6f-579b-4dd3-a522-13c964123ead",
"type" : "Organization"
}, {
"reference" : "#be0fddfd-b66b-4403-a793-f8a581419423",
"type" : "Practitioner"
}, {
"reference" : "#250c9286-8cc4-4fd9-87bc-2accf90527e3",
"type" : "PractitionerRole"
}, {
"reference" : "#653b3b87-204e-44fb-b6ea-f26ea1a625bd",
"type" : "Organization"
} ],
"authenticator" : {
"reference" : "#610e464c-24f5-4afe-9dbf-03457129c4ea"
},
"description" : "This has multiple actors here",
"securityLabel" : [ {
"coding" : [ {
"system" : "urn:oid:2.16.840.1.113883.5.25",
"code" : "N"
} ]
} ],
"content" : [ {
"attachment" : {
"extension": [
{
"url": "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-homeCommunityId",
"valueString": "urn:oid:2.16.578.1.12.4.5.100.3.15"
}
],
"contentType" : "image/png",
"language" : "nb-NO",
"url" : "urn:uuid:b124f78c-783b-446d-a9e5-a9b761e012f3",
"size" : 1025836,
"hash" : "DEhBSl5R+KhoDs4Rhm842F/vdft7cRH8YwzwGJQwqd0=",
"title" : "Screenshot 2024-02-07 153542.png",
"creation" : "2024-02-07T14:35:41Z"
},
"format" : {
"system" : "http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode",
"code" : "urn:ihe:iti:xds:2017:mimeTypeSufficient"
}
} ],
"context" : {
"period" : {
"start" : "2024-08-03T16:26:32Z",
"end" : "2024-08-08T16:26:32Z"
},
"facilityType" : {
"coding" : [ {
"system" : "urn:oid:2.16.578.1.12.4.1.1.1303",
"code" : "86.211"
} ]
},
"practiceSetting" : {
"coding" : [ {
"system" : "urn:oid:2.16.578.1.12.4.1.1.8653",
"code" : "4"
} ]
},
"sourcePatientInfo" : {
"reference" : "#5340ef78-dc25-4d92-8d4f-44ccd99469c2"
}
}
},
"request" : {
"method" : "POST",
"url" : "DocumentReference/44ca7463-8b05-45cf-8d08-ea8e429c3773"
}
}, {
"fullUrl" : "urn:uuid:b124f78c-783b-446d-a9e5-a9b761e012f3",
"resource" : {
"resourceType" : "Binary",
"id" : "b124f78c-783b-446d-a9e5-a9b761e012f3",
"meta" : {
"profile" : [ "http://hl7.org/fhir/StructureDefinition/Binary" ]
},
"contentType" : "image/png",
"data" : "<base64_content_of_binary>"
},
"request" : {
"method" : "POST",
"url" : "Binary"
}
} ]
}