Formålet med dette dokument er at beskrive systemarkitekturen for NXRG.
Nærværende dokument er tiltænkt udviklere og IT-arkitekter med interesse i NXRG og dens opbygning.
NSP | National Service Platform |
NXRG | NXP XDS Registry |
IHE | Integrating the Healthcare Enterprise (se https://www.ihe.net/) |
I det følgende gives et overblik over NXRG. Først beskrives NXRG i forhold til dennes samarbejdende services og interne arkitektur (modulopdeling etc.)
Efterfølgende beskrives og begrundes den underliggende datamodel.
I nedenstående dokument vises overblik over NXRG. Diagrammet viser både løsningens snitflader og eksterne services, som denne samarbejder med. Derudover vises den NXRGs intern lagdelte opbygning (herunder specificering af ansvarsfordelingen i de forskellige lag i applikation).
NXRG samarbejder med følgende komponenter i NSP infrastrukturen:
NXRG er opbygge i en lagdelt arkitektur. I ovenstående diagram er pakkenavne specificeret og giver en kobling til den konkrete sourcekode, der realiserer NXRG (se i øvrigt NXRG - Guide til Udviklere).
De udbudte snitflader er realiseret som SOAP webservices (dk.nsp.nxrg.ws). ITI-XX snitfladerne er specificeret i IHE XDS revision 17 fra juli 2020.
Se følgende:
Til at realisere disse ITI-XX snitflader anvendes tredjeparts biblioteker fra IPF Open eHealth Integration Platform til implementations- og hjælpeklasser (herunder mapning af XML baseret model til domænemodel).
Forretningsregler i relation til de udbudte ITI-XX services er implementeret udfra specifikationen af IHE XDS (dk.nsp.nxrg.service). For ITI-18 er det besluttet ikke at understøtte samtlige querytyper, der fremgår af specifikationen, men at nøjes med følende:
Kald af ITI-18 med andre querytyper vil resultere i en fejlkode fra NXRG (se NXRG - Guide til Anvendere).
NXRG har behov for at persistere data i en database. NXRGs datamodel er realiseret udfra følgende principper:
For en detaljeret beskrivelse af databasemodellen se afsnittet nedenfor.
Følgende overblik viser, hvorledes datamodellen i NXGR er opbygget. Datamodellen er opbygget med udgangspunkt i følgende overordnede principper:
I det følgende beskriver vi datamodellen for NXRG og beskriver, hvorledes ovenstående principper er respekteret.
TODO: Tegn datamodellen, når den er mere færdig (spare tid....se beskrivelser nedenfor for begrundelse af valg etc).
En af de grundlæggende datatyper i et XDS Registry er DocumentEntry. Dette objekt beskriver en indexering af et dokument, der så senere kan hentes i et XDS Repository. Da ITI-XX snitfladerne er SOAP baserede er det i sidste ende XML, der skal returneres fra snitfladerne i NXRG. Det nuværende OpenText Registry baserer sig på en XML database (xDB), som indeholder sådanne XML baserede strukturer.
Indholdet i xml feltet i DocumentEntryContent er det rå XML, der beskriver sådan en DocumentEntry.
For at kunne understøtte de udbudte ITI-XX services er det nødvendigt at kunne søge på udvalgte felter i en DocumentEntry. Disse søgbare felter er trukket ud af den lagrede XML og lagres i den relaterede tabel DocumentEntries. En reference documentEntryId i DocumentEntryContent vedligeholder 1-0 relationen mellem de to tabeller.
I forhold til migrering er det således nødvendigt at loade XML ind i DocumentEntryContent tabellen. Migreringsfunktionaliteten (se nedenfor) anvender denne tabel som dens input.
Denne tabel er den søgbare udgave af det data, der ligger i DocumentEntryContent. Behovet for fremsøgning er i høj grad påvirket af kravene fra de enkelte ITI-XX services og i ITI-18's tilfælde i kravene fra de understøttede query typer. Nedenstående tabel er en oversigt over, hvilke elementer der findes i DocumentEntry (se ITI TF-3). Hvert af DocumentEntry's attributter giver anledning til en kolonne i tabellen.
De enkelte rækker i tabellen viser, hvilke attributter, som de enkelte ITI-XX transaktioner er afhængige af at kunne søge på (for ITI-18 listes de enkelte QueryTypes, der understøttes af NXRG). De øvrige ITI-XX services kan også have behov for at kunne fremsøge DocumentEntry's i forbindelse med validering af forrretningsregler. Forretningsreglen er markeret med en afsnitshenvisning til det afsnit i ITI-TF-2b som beskriver den konkrete forretningsregel.
DocumentEntry | ITI-18 (FindDocuments) | ITI-18 (FindDocumentsByReferenceId) | ITI-42 (forretningsregler) | ITI-57 (forretningsregler) | ITI-61 (forretningsregler) |
---|---|---|---|---|---|
author.authorInstituion | |||||
author.authorPerson | x (liste) | x (liste) | |||
author.authorRole | |||||
availabilityStatus | x (liste) | x (liste) | |||
classCode(code) | x (liste) | x (liste) | |||
comments | |||||
confidentilityCode(code) | x (liste) | x (liste) | |||
creationTime | x (interval) | x (interval) | |||
entryUuid | 3.42.4.1.3.5(opslag) | ||||
eventCodeList(list<code>) | x (flere lister) | x (flere lister) | |||
formatCode(code) | x (liste) | x (liste) | |||
hash(string) | 3.42.4.1.3.3.1(brug) | ||||
healthcareFacilityTypeCode(code) | x (liste) | x (liste) | |||
homeCommunityId(string) | |||||
languageCode | |||||
legalAuthenticator | |||||
limitedMetadata | |||||
mimeType | |||||
objectType(stable/on-demand) | x (højst een) | x (højst een) | |||
patientId | x (netop een) | x (netop een) | 3.42.4.1.3.5(brug) | ||
practiceSettingCode(code) | x (liste) | x (liste) | |||
referenceIdList | x (liste) | ||||
reposistoryUniqueId(string) | |||||
serviceStartTime | x (interval) | x (interval) | |||
serviceStopTime | x (interval) | x (interval) | |||
size | 3.42.4.1.3.3.1(brug) | ||||
sourcePatientId | |||||
sourcePatientInfo | |||||
title | |||||
typeCode | x (liste) | x (liste) | |||
uniqueId | 3.42.4.1.3.3.1(opslag) | ||||
URI |
NXRGs datamodel er normaliseret i forhold til alle behov beskrevet i tabellen ovenfor. D.v.s alle attributter, der anvendes af en ITI-XX er trukket ud og er en del af den søgbare tabel DocumentEntries.
Attributter, der ikke refereres af ovenstående tabel vil ikke være en del af DocumentEntries, men vil udelukkende persisteres som en del af xml feltet i tabellen DocumentEntryContent.
TODO