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 |
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 samt validering af hhv requests og responses).
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.
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 i DocumentEntry, der skal kunne søges på:
DocumentEntry | entryUuid | uniqueId | patientId | classCode | typeCode | practiceSettingCode | creationTime | serviceStartTime | serviceStopTime | healthcareFacilityTypeCode | eventCodeList | confidentilityCode | authorPerson | formatCode | availabilityStatus | referenceIdList | hash | size |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ITI-18 (FindDocuments) | x (netop een) | x (liste) | x (liste) | x (liste) | x (interval) | x (interval) | x (interval) | x (liste) | x (flere lister) | x (liste) | x (liste) | x (liste) | x (liste) | |||||
ITI-18 (FindDocumentsByReferenceId) | x (netop een) | x (liste) | x (liste) | x (liste) | x (interval) | x (interval) | x (interval) | x (liste) | x (flere lister) | x (liste) | x (liste) | x (liste) | x (liste) | x (liste) | ||||
ITI-42 (forretningsregler) | 3.42.4.1.3.5 | 3.42.4.1.3.3.1 | 3.42.4.1.3.5 | 3.42.4.1.3.3.1 | 3.42.4.1.3.3.1 |
TODO