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 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 | entryUuid | uniqueId | URI | patientId | sourcePatientId | sourcePatientInfo | title | objectType (stable/on-demand) | classCode (code) | languageCode | comments | typeCode | practiceSettingCode (code) | creationTime | serviceStartTime | serviceStopTime | healthcareFacilityTypeCode (code) | eventCodeList (list<code>) | confidentilityCode (code) | legalAuthenticator | limitedMetadata | author.authorInstituion | author.authorPerson | author.authorRole | formatCode (code) | availabilityStatus | referenceIdList | homeCommunityId (string) | reposistoryUniqueId (string) | mimeType | hash (string) | size |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ITI-18 (FindDocuments) | x (netop een) | x (højst 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 (højst 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(opslag) | 3.42.4.1.3.3.1(opslag) | 3.42.4.1.3.5(brug) | 3.42.4.1.3.3.1(brug) | 3.42.4.1.3.3.1(brug) | |||||||||||||||||||||||||||
ITI-57 (forretningsregler) | ||||||||||||||||||||||||||||||||
ITI-61 (forretningsregler) |
TODO