Introduktion

Formål

Formålet med dette dokument er at beskrive systemarkitekturen for NXRG.

Læsevejledning

Nærværende dokument er tiltænkt udviklere og IT-arkitekter med interesse i NXRG og dens opbygning.

Definitioner og referencer


NSPNational Service Platform
NXRGNXP XDS Registry
IHEIntegrating the Healthcare Enterprise (se https://www.ihe.net/)

Overblik over NXRG

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.

Løsningsoverblik

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

Samarbejdende services

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

Snitflader

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

Forretningslag

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

Databaselag

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.

Databasemodel

Følgende overblik viser, hvorledes datamodellen i NXGR er opbygget. Datamodellen er opbygget med udgangspunkt i følgende overordnede principper:

  1. Understøtte MVP: NXRG er startet som et Minimal Viable Product med intentionen om senere at kunne skifte til et andet mere modent produkt. Dette betyder, at modellen ikke skal være mere kompliceret, end højst nødvendigt.
  2. Kunne understøtte udvidelser af NXRG: Selvom kravene (MVP) fra starten er begrænsede, så giver det mening at overveje, at det skal være muligt at udvide NXRG f.eks. med flere ITI-18 query typer. Datamodellen skal i denne sammenhæng være robust over for denne slags ændringer (dvs det skal være velforstået, hvad sådanne udvidelser betyder i forhold til databasemodellen).
  3. Understøtte migrering: Da en væsentlig del af MVP indeholder migrering af data fra OpenText Registry til NXRG, så skal databasemodellen være lavet på en måde, således at migreringen er understøttet.
  4. Driftsvenlig: Det skal være muligt for driften at foretage opgaver i forbindelse med support og drift (f.eks. oprydningsjob)

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

DocumentEntryContent

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.

DocumentEntries

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.


DocumentEntryentryUuiduniqueIdURIpatientIdsourcePatientIdsourcePatientInfotitle

objectType

(stable/on-demand)

classCode

(code)

languageCode


commentstypeCode

practiceSettingCode

(code)

creationTimeserviceStartTimeserviceStopTime

healthcareFacilityTypeCode

(code)

eventCodeList

(list<code>)

confidentilityCode

(code)

legalAuthenticatorlimitedMetadataauthor.authorInstituionauthor.authorPersonauthor.authorRole

formatCode

(code)

availabilityStatusreferenceIdList

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)


































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.

Migrering

TODO