Nærværende dokument giver et overblik over stamdataservicen med fokus på design og arkitektur. Dokumentet har som formål at give et indblik i det underliggende design, de udstillede snitflader på det overordnede niveau samt særlige forhold vedrørende de udstillede registre. Både aftagere af stamdataservicen, kildedataleverandører samt NSP operatør/driftsleverandør kan med fordel læse dette dokument.
Stamdata modulet (SDM) er udstillet på NSP, og består af flere komponenter. Der er en række webservices, som tilbyder data-adgang til forskellige registre (enkeltopslag og udtræk af registre), og et dataopsamlings framework, bestående af parsere og importere, der henter data fra en række eksterne kildedataregistre, bl.a. CPR-registret og SKS. Nedenstående figur viser en principskitse over arkitekturen, hvor stamdata services er udstillet på den enkelte NSP instans.
Figur 1 – Stamdatamodulet opsamler data fra kilderegistre og udstiller data på NSP
Adgangen til de data der udstilles via stamdata-services er beskyttet af Den Gode Webservice (DGWS), og adgangskontrollen er styret på basis af CVR-nummer.
Den logiske arkitektur er opdelt i dataindsamling, replikering til NSP instanserne og udstilling af data gennem services. I de følgende afsnit beskrives disse elementer af arkitekturen.
Stamdataregistret samler stamdata fra en række kilderegistre hos offentlige myndigheder. Indsamlingen af data implementeres i forhold til hvert enkelt kilderegister ved anvendelse af en registerspecifik Parser, men med anvendelse af en fælles Importer-komponent. Importer-komponenten kører på DoDi-platformen, og er ansvarlig for at indlæse dataset fra registerfiler, der placeres i en dedikeret mappe i filsystemet [1]. Hvert register har sin egen dedikerede mappe som automatisk bliver oprettet af Importer-komponenten.
[1] For hvert register implementeres en transportløsning (f.eks. FTP som push eller pull), der har som opgave at overføre ”rå” registerdata fra kilderegistret til NSP-platformen.
Importeren overvåger filsystemet og aktiverer de registerspecifikke parsere, når nye registerfiler er tilgængelige i filsystemet. De respektive parsere processerer registerfilerne og overfører registerdata til den lokale database. Parsningen kan i princippet bestå af en direkte dataoverførsel fra fil til database, men indeholder i de fleste tilfælde forretningslogik, f.eks. transformationer af data og denormaliseringer.
Hver mappe har tre undermapper:
Figur 2 – Principskitse af et importforløb, hvor en parser aktiveres af importeren
Dataindsamlingen fra kilderegistrene foregår på DoDi (for yderligere information om NSP-konceptets komponenter henvises til den overordnede NSP-dokumentation).
Figur 3 – principskite af envejs-replikeringen fra DoDi til NSP-instanserne
Stamdatatabellerne registreres i NSP’ens replikeringsmekanisme, og de parsede registerdata replikeres derfor automatisk ud til de enkelte NSP-instanser som illustreret på Figur 3, hvorfra de kan tilgås gennem de udstillede stamdataservices (ikke illustreret).
Stamdataregistret giver mulighed for dels enkeltopslag i de tilknyttede registre, dels mulighed for udtræk af hele registre til opbevaring og anvendelse i den lokale infrastruktur. Disse services beskrives i de følgende afsnit.
Der kan foretages komplette registerudtræk ved anvendelse af Kopiregisterservicen (KRS), der er en identitetsbaseret DGWS webservice udstillet på NSP-platformen.
Kopiregisterservicen giver dels mulighed for etableringsudtræk, hvor det komplette register leveres [2], dels såkaldte ”delta-opdateringer”, hvor ændringer i registret siden sidste udtræk leveres. De to typer udtræk er varianter af samme kald, hvor et etableringsudtræk leverer summen af samtlige ændringer i det pågældende registers levetid, og hvor et deltaudtræk leverer summen af ændringer siden sidste kald.
[2] Da registrene kan være af en størrelse, der gør det uhensigtsmæssigt at lave et komplet udtræk i et enkelt kald til KRS, gennemføres det komplette udtræk typisk ved en række på hinanden følgende kald. Dette er dog en teknisk detalje.
Figur 4 – Kopiregisterservicen udstiller snitflader til udtræk af registre
Til at styre hvilke klienter der har adgang til de respektive registre i Stamdata findes der en rettighedstabel. Tabellen opdateres af driftsoperatøren. Der henvises til driftsguiden for en detaljeret beskrivelse af rettighedstildeling.
For udvalgte registre er der implementeret såkaldte enkeltopslagsservices, der, som navnet antyder, giver mulighed for opslag på enkeltregistreringer i de respektive registre. Alle enkeltopslagsservices implementeres som identitetsbaserede web services.
Figur 5 – Stamdataservicen udstiller snitflader til enkeltopslag for udvalgte registre
Stamdataservicen stiller følgende enkeltopslagsservices til rådighed:
Register | Beskrivelse | Særlige forhold |
Autorisationsregistret | Giver mulighed for verifikation af autorisationsnummer, f.eks. til brug fra SOSI STS eller administrative systemer ved ansættelse af sundhedsfagligt personale. | Anvendelse kræver oprettelse på CVR-whitelist. |
CPR-registret | Implementering af MedCom’s ”Det gode CPR-opslag” | Anvendelse kræver oprettelse på CVR-whitelist. |
Yderregistret | Giver mulighed for opslag i yderregisret. | Anvendelse kræver oprettelse på CVR-whitelist. |
For yderligere information om enkeltopslagsservices henvises til anvenderguiden, der indgår på lige fod med nærværende dokument i den samlede dokumentationspakke for stamdataservicen.
CPR abonnementsservicen på NSP er en service til automatisk opdatering af en liste af CPR numre. De enkelte abonnenter (f.eks. en region eller et sygehus) vedligeholder deres egen liste på NSP, og abonnenterne modtager ændringer i CPR informationerne for de enkelte CPR numre på en given abonnementsliste ved kald til abonnementsservicen.
Set udefra udstiller abonnementsservicen to identitetsbaserede webservice-snitflader (DGWS):
Det bemærkes, at abonnementsservicen for CPR-registret udelukkende overvåger ændringer i selve CPR-registret. Ønskes der ajourførte oplysninger vedrørende f.eks. ”egen læge” eller yderinformationer opnås dette gennem brug af kopiregisterservicen for de pågældende registre (se afsnit 3.3 for yderligere information). Abonnementsservicen er skitseret på Figur 6. Som det fremgår af figuren vedligeholdes abonnementslister ved anvendelse af en vedligeholdelsessnitflade udstillet af den generiske opsamlingsservice (GOS), og udtræk af ændrede oplysninger fås gennem den udstillede abonnementssnitflade oprettet til formålet.
Der henvises til anvenderguiden for yderligere information om hvordan snitfladerne anvendes.
Figur 6 – Arkitekturskitse for abonnementsservicen.
For kald til at hente ændrede CPR-numre (getChangedCprs) ser dataflowet fra DoDi til NSP og internt på NSP’en ud som skitseret på Figur 7:
Figur 7 – Dataflow gennem arkitekturen ved brug af abonnementsservicen
Stamdataservicen anvender en række tabeller til at opbevare stamdataregistrene. Disse tabeller er typisk koblet relativt hårdt op mod kilderegistrenes struktur, og tidligere erfaringer har vist, at der med jævne mellemrum forekommer ændringer i kilderegistrene. Det er derfor forsøgt undgået at andre (NSP-) komponenter end stamdataservicen anvender stamdatatabellerne. Hvor andre komponenter har behov for at anvende stamdata internt på NSP, kopieres data ud i separate tabeller, som komponenterne kan bruge i stedet.
På NSP 2.0 anvendes autorisationsregistrets data af STS (til berigelse og verifikation af autorisationsnummer), og der er derfor oprettet en særlig Autorisationstabel til dette formål som illustreret på figuren nedenfor.
Figur 8 – Enkeltopslagsservicen til autorisationsregistret og STS deler datagrundlag.
Datamodellen for hvert enkelt register i Stamdataservicen er defineret i bilaget ’schema.sql’. Nedenfor er registrene beskrevet overordnet i tabelform.
Tabel | Beskrivelse |
DrugDosageStructureRelation | relationsmapning mellem lægemidler og deres doseringer. |
DosageVersion | Løbenumre for registret. Dette kan bruges til at se om man har den nyeste udgave af registret. |
DosageUnit | Enheder lægemidler doseres i (tabletter, kapsler, milliliter, …). |
DosageStructure | Tider for dosering og størrelser på doserne. |
DosageDrug | Lægemidler med ATC kode etc. |
Tabel | Beskrivelse |
Person | Navne og adresseoplysninger mm om person i CPR-registret. |
BarnRelation | En relationsmapning mellem børn og deres forældre. |
ForaeldreMyndighedRelation | En relationsmapning mellem børn og deres værger. |
UmyndiggoerelseVaergeRelation | En relationsmapning mellem umyndiggjorte og deres værger. |
Tabel | Beskrivelse |
Organisation | Referencer mellem SKS-koder og sygehusafdelinger fra SKS-registret. |
Tabel | Beskrivelse |
Praksis | Tabel over lægepraksis i SOR registret. |
SygehusAfdeling | Tabel over sygehusafdelinger i SOR registret. |
Apotek | Tabel over apoteker i SOR registret. |
Sygehus | Tabel over sygehuse i SOR registret. |
Tabel | Beskrivelse |
Yder | Tabel med ydernumre og stamdata. (Visse er tilknyttet en person andre en klinik.) |
YderLoebenummer | Løbenumre for registret. Dette kan bruges til at se om man har den nyeste udgave af registret. |
YderregisterPerson | Personer som er tilknyttet et ydernummer. Der kan være flere personer pr. Ydernummer. |
Yderregister | Tabel med ydernumre og stamdata. (Visse er tilknyttet en person, andre en klinik.) |
Tabel | Beskrivelse |
Autorisation | Tabel med autorisationer for sundhedsfaglige personer (læger, kiropraktorer, mv.). |
Tabel | Beskrivelse |
Firma | Liste af leverandører af lægemiddelprodukter. |
Formbetegnelse | Liste af formen lægemiddel kan have. |
Indikation | Liste af indikationer. |
IndikationATCRef | Referencetabel mellem ATC-koder og indikationer. |
Laegemiddel | Tabel med lægemidler. |
LaegemiddelNavn | Uforkortede navn på lægemidler. |
LaegemiddelAdministrationsvejRef | Mapningstabel mellem lægemidler og deres administrationsveje. |
Klausulering | Klausuleringskode, beregnet til ansøgninger om tilskud til behandling. |
ATC | ATC koder og tilhørende tekst. |
Medicintilskud | Liste med former for medicintilskud. |
Opbevaringsbetingelser | Liste over forskellige måder medicin skal opbevares på. |
Pakningskombinationer | Tabel med kombinationer af pakninger som kan erstatte hinanden. |
OplysningerOmDosisdisponering | Tabel med info priser og substitutionsoplysninger for dosisdispenserede lægemidler. |
LaegemiddelDoseringRef | Referencetabel mellem lægemidler og deres dosering. |
Beregningsregler | Info om hvordan en pakning prisberegnes. |
Pakning | Tabel med pakninger af lægemidler. |
PakningskombinationerUdenPriser | Tabel med kombinationer af pakninger som kan erstatte hinanden. Indeholder ikke priser. |
EmballagetypeKoder | Forskellige former for emballage brugt til pakning af lægemidler. |
PakningsstoerrelsesEnhed | Antallet af enheder der er i en pakning. |
SpecialeForNBS | Liste over specialer et lægemiddel bliver brugt indenfor. |
Priser | Udspecificering af priser for lægemidler (f.eks. indkøbspris.). |
Enhedspriser | Priser for lægemidler. |
TakstVersion | Løbenumre for registret. Dette kan bruges til at se om man har den nyeste udgave af registret. |
Dosering | Doseringsforslag fra taksten. |
Styrkeenhed | Den styrke medicinen i en pakning har. |
Rekommandationer | En referencetabel med noter om et lægemiddel anbefales eller ej. |
Substitution | Tabeller over lægemidler som kan substituere hinanden. |
TilskudsprisgrupperPakningsNiveau | Liste over tilskudsgrupper der er knyttet til en pakning. |
SubstitutionAfLaegemidlerUdenFastPris | Normale substitutioner er baseret på pris. For lægemidler uden fast pris ligger substitutioner i denne tabel. |
Administrationsvej | Måden hvorpå et lægemiddel kan administreres. |
Tilskudsintervaller | Nedre og øvre grænser for tilskud til lægemidler. |
UdgaaendeNavne | Liste af navne for lægemidler som ikke længere findes i taksten. |
Udleveringsbestemmelser | Bestemmelser over hvornår et lægemiddel må udleveres. |
Indholdsstoffer | Indholdsstoffer i et lægemiddel. |
Tidsenhed | Hvor ofte og hvornår et lægemiddel skal indtages, etc. |
Tabel | Beskrivelse |
Bemyndigelse | Tabel med bemyndigelser, indeholdende sundhedsfagligt personels uddelegerede rettigheder |
Tabel | Beskrivelse |
SORRelationer | Tabel med relationer mellem forældre og børn I SOR træet. Tabellen er speciel idet hver eneste node peger på sig selv og alle sine “efterkommere”- Tabellen udstilles ikke via KRS, men bruges kun internt af den kommende samtykkeservice (fra NPI projektet) |
SORYderSHAKRelationer | Tabel der mapper SOR koder med SHAKkoder og YDERnumre, tabellen er special da der ikke er relationer til YDER eller SHAK kolonner, men derimod kun en kolonne der via tekst og tal fortæller type og værdi (eksempelvis: “Yder=82058”eller “SHAK=2034010”) - Tabellen udstilles ikke via KRS, men bruges kun internt af den kommende samtykkeservice (fra NPI projektet) |
Kilden til dette dokument kan kan erhverves ved henvendelse til NSP-operatøren.
Version | Dato | Ændring | Ansvarlig
|
0.1 | 2011-04-28 | Initielt dokument | Trifork |
1.0 | 2011-09-12 | Opdateret med CPR tjenester | Trifork |
1.1 | 2011-10-05 | Review i forbindelse med release af CPR Tjenester | Trifork |
1.2 | 2011-12-09 | Kvalitetssikring | Lakeside |
1.3 | 2012-06-19 | Tilføjet bemyndigelser og npi-sor tabeller | Trifork |