Dette dokument er rettet mod systemadministratorer og driftspersoner, som skal kunne håndtere driftsmæssige aspekter af komponenten.
Driftsvejledningen indeholder information om GM-BFF med hensyn til eksterne afhængigheder, standard placering af logfiler og konfigurationsfiler, og evt. krav til genstart af applikationer hvis komponenten ikke er responsiv.
I afsnit 3 (Komponenter) er beskrevet hvilke komponenter, der indgår i GM-BFF og deres forventede placering med hensyn til platform.
Afsnit 5 (Konfiguration) beskriver aktuelle konfigurationsparametre for GM-BFF henholdsvis Repository, samt eksempler på konfigurationsparameter-filer.
Afsnit 6.1, 6.2 og 6.3 (Overvågning) beskriver hvorledes GM-BFF komponenterne overvåges.
I afsnit 6.4 er GM-BFF-relaterede logfiler beskrevet, så disse evt. kan overvåges, og tillige danne baggrund for fejlsøgning.
Beskrivelse af standard fejlsøgning og start/stop vejledning for komponenterne er beskrevet i afsnit 7 (Standard fejlsøgning).
Specielle krav til backup er beskrevet i afsnit 8 (Krav til backup m.m.), ligesom procedure ved reetablering af komponenten ud fra backup beskrives.
Læseren forventes at have kendskab til ....
Definition | Beskrivelse |
|---|---|
| NSP | Den nationale service platform |
| SDS | Sundhedsdatastyrelsen |
Dette dokument dækker følgende komponenter:
Dette afsnit beskriver den daglige drift af systemet.
Komponenterne afvikles i et ??? setup, som ligger under ???
Log4j konfiguration findes i (hvis ovenstående format anvendes):
Se yderligere opsætning i installationsvejledningen.
SLA-logning på DDS Registry og Repository udføres vha SLALoggingInterceptor. Konfiguration af SLA-log findes i filen:
Der foretages whitelisting på to niveauer. Først er der den whitelisting, der skal til for at anvende DDS Registry og Repository. Derudover findes en whitelisting, der afgør, hvorvidt en anvender må kalde DDS med et niveua 3 Idkort. De to whitelisting-mekanismer beskrives i det følgende.
For at tilføje et CVR-nummer til white-list databasen, bruges følgende SQL insert:
For DDS registry:
|
For DDS repository:
|
Da DDS Registry og Repository sender Id-kortet videre til samtykkeservice, behandlingsrelationsservice og minlog-registrationservice skal whitelisten også opdateres med følgende værdier:
|
Alle anvendere skal whitelistes som beskrevet ovenfor for at anvende DDS Registry og Repository. Derudover findes en ekstra whitelisting mekanisme, som gør det muligt for visse anvendere at kalde DDS Registry og Repository med et niveau 3 Idkort. Dette kræver en særlig whitelisting og kan sættes op ved at tilføje oplysninger om anvenderen i konfigurationsparameteren 'whitelisted.level3.cvrs'. På trods af navnet kan whitelisting til niveau 3 sættes op på to niveauer: CVR nummer eller et specifikt certifikat.
Værdien er en kommasepereret liste som vist i følgende eksempel:
Opsætning af niveau 3 whitelisting
|
Eksemplet viser de tre formater, der kan anvendes:
I forhold til anvenderne, så tjekkes det, om der er en whitelisting af anvenderens CVR nummer og hvis dette ikke er tilfældet, så tjekkes, om det specifikke certifikat, der anvendes er whitelistet. Alle andre forsøg på adgang med niveau 3 Idkort afvises.
For at konfigurere hvilke dokumenttyper, der er relevante for et givet registry, skal dette konfigureres manuelt af driften i documenttype_configuration databasen:
|
Hvis ikke man har angivet en unik documentregistryfriendlyname værdi i documentregistry, må man manuelt finde det givne documentregistryid man ønsker at konfigurere en dokumenttype for.
Hvis et givet documentregistry ikke har en opsætning i documenttype_configuration tabellen, er alle dokumenttyper tilladte.
Servicen skal genstartes for at ændringen træder i kraft, da data indlæses ved opstart.
For at konfigurere hvilke feature, der er relevante for et givet registry, skal dette konfigureres manuelt af driften i feature_configuration databasen:
|
Hvis ikke man har angivet en unik documentregistryfriendlyname værdi i documentregistry, må man manuelt finde det givne documentregistryid man ønsker at konfigurere en feature for.
Pt er ovenstående 3 features mulige. De anvendes, når der laves en ITI-18 søgning (Registry Stored Query). Hvis det indkomne request ikke matcher opsætningen for et givet registry, søges der ikke ned i dette registry. Dvs. at har et registry ingen opsætning af query types, bliver det aldrig kaldt.
Servicen skal genstartes for at ændringen træder i kraft, da data indlæses ved opstart.
For at konfigurere, hvordan dokumenternes metadata skal filtreres for den sundhedsfaglige, skal det konfigureres manuelt af driften i en række whitelist tabeller i databasen:
|
Ovenstående er eksempler på sql. Udskift værdierne med relevante værdier for at aktuelle miljø.
Som minimum skal der åbnes op for typecode i whitelist_config_documentmetadata_typecode tabellen. Derudover kan dokumenter returnering indsnævres ved yderligere at angive eventcode og practicesettingcode. Er der for et cvr/system angivet bare een værdi for eventcode, skal dokumentes metadata indeholde denne kode. Tilsvarerende for practicesettingcode. Ellers filtreres metadata fra, og anvenderen får en fejl i svaret.
Der filtreres kun, hvis funktionaliteten er aktiveret. Den kan slåes fra med property whitelisted.document.metadata.active.
Konfigurationen indlæses automatisk peridisk, som angivet i property whitelisted.document.metadata.refresh.duration.
Nogle actors har ikke love til at lave søgninger (ITI-18) på alle værdier i query parametrene. Dette konfigureret i manuelt af driften i en tabel i databasen.
INSERT INTO documentsources.actor_query_parameter_configuration (actorquerytype, typecode_codename, typecode_schemename, formatcode_codename, formatcode_schemename, privilege) VALUES ("CitizenUserOnBehalfAsProxyHolder","39289-4", "2.16.840.1.113883.6.1", "urn:ad:dk:medcom:appointment", "1.2.208.184.100.10", "urn:dk:nspop:sts:dds:read"); |
Ovenstående er eksempler på sql. Udskift værdierne med relevante værdier for at aktuelle miljø og anvendere.
For nuværende drejer det sig om følgende brugertyper og de skal konfigureres på følgende måde:
Hvis man ønsker at anvende en mere detaljeret opsætning af tekster, der sendes til minlog, gøres det ved at manuelt at indsætte records i tabellerne minlog_text og minlog_usertype_text. Findes der ikke matchende data heri anvendes de default værdier, der er sat op i servicens property fil.
INSERT INTO minlog_text (typecode_codename, typecode_schemename, formatcode_codename, formatcode_schemename, classcode_codename, classcode_schemename, text) VALUES ('11502-2', '2.16.840.1.113883.6.1', 'urn:ad:dk:medcom:labreports:svareksponeringsservice', '1.2.208.184.100.10', '001', '1.2.208.184.100.9', 'Opslag på labsvar fra %s'); INSERT INTO minlog_usertype_text (usertype, text) VALUES ('professionalUser', 'sundhedsfaglig'); |
For minlog_usertype_text skal de angivne usertype anvendes, da disse er kendt af komponenten.
En match ved søgning sker ved at kigge på typecode, classcode og formatcode fra requestet samt anvender rollen og med disse slå op i tabellerne. For en mere detaljeret beskrivelse af denne logik se dds design og arkitektur dokumentet.
Hvis der ikke kan findes en opsætning i databasen for en given typecode, classcode og formatcode kombination, skrives en warning til applikationsloggen, så man har mulighed for at holde øje med anvendte, men ikke konfigurerede kombinationer.
Ved hentning af dokumenter (iti-43) anvendes altid værdierne fra property filen.
Hvis den fremfundne minlog tekst overstiger den maksimale længde, som minlog kan modtage (pt 75 karakterer), afkortes teksten og en fejl skriver i applikationsloggen. For lange tekster fejlmeldes også i forbindelse med servicens status endpoint. Her vil det fremgå, hvis mindst en minlog tekst er for lang (kan være en kombinationer af tekst og den tilføjede brugertype tekst). Alle ugyldige tekster kan efter kald til status endpoint findes som fejl i applikationsloggen.
Indholdet, der returneres ved kald af DCC Konfiguration Service-snitfladen (DKS), indlæses fra filen:
Filerne skal overholde DKS XML-skemaet og beskriver de webservice-operationer DDS Registry udstiller jf. [DKS-beskrivelse].
Efter konfiguration og deployering af DDS Registry og Repository servicene, kan DKS-snitfladerne testes med:
|
Succesfuldt svar giver indholdet svarende til filerne nævnt ovenfor.
Det er muligt at konfigurere registry og repository til at lede efter HTTP- og SOAP-headere, og videresende dem til bagvedliggende registries.
Videresendelse styres af databasetabellerne
Indholdet af tabel documentsources.documentregistry_forwarded_header er som følger:
Feltnavn | Indhold |
|---|---|
| headername | Navn på header, der ledes efter. Hvis headertype er 'HTTP', ledes i HTTP-headers i requestet. Hvis headertype er 'SOAP', ledes i headere i SOAP-envelopen i requestet. |
| headertype | Typen af header der ledes efter. Kan være 'HTTP' eller 'SOAP', skrevet med store bogstaver. |
| documentregistryid | Id på documentregistry, som header ønskes videresendt til. Der er opsat en foreign key-constraint, der sikrer at der refereres til et registry i documentregistry-tabellen. |
Indholdet af tabel documentsources.documentsource_forwarded_header er som følger:
Feltnavn | Indhold |
|---|---|
| headername | Navn på header, der ledes efter. Hvis headertype er 'HTTP', ledes i HTTP-headers i requestet. Hvis headertype er 'SOAP', ledes i headere i SOAP-envelopen i requestet. |
| headertype | Typen af header der ledes efter. Kan være 'HTTP' eller 'SOAP', skrevet med store bogstaver. |
| oid | oid på repository, som header ønskes videresendt til. Der er opsat en foreign key-constraint, der sikrer at der refereres til et registry i documentsource-tabellen. |
For at tilføje et kildesystem til documentsource databasen, bruges følgende SQL insert:
|
oid: OID værdien som for den pågældende XDS dokument kilde, som kan være at typen ’repository_unique_id’ eller ’home_community_id’
type: Angiver hvilken typen af OID der er angivet, og den skal have én af følgende værdier: [‘repository_unique_id’|’home_community_id’]
service_endpoint: Angiver URL til XDS dokument kilde
soap_version: Angiver XDS dokument kildens SOAP version og den skal have én af følgende værdier:
Værdi | Benytter HSUID udgående | Benytter DGWS udgående |
1.1 | + | ÷ |
1.2 | + | ÷ |
1.1_NO_HSUID | ÷ | ÷ |
1.2_NO_HSUID | ÷ | ÷ |
1.2_DGWS | + | + |
1.2_DGWS_NO_HSUID | ÷ | + |
1.2_DGWS_NO_ADDR | + | + |
1.2_MEDCOM_NO_HSUID | ÷ | (+) Kun Medcom-header |
Værdien 1.2_DGWS_NO_ADDR benyttes, når WS-Addressing ikke ønskes anvendt.
timeout: Angiver hvor lang tid DDS forsøger at hente dokumenter fra eksterne kilder inden forsøget opgives. Tiden angives i millisekunder.
failurethreshold: Angiver grænseværdi for hvor mange kald mod repositoriet der må fejle før monitoreringssnitfladen melder fejl. Angives som heltal.
Kombinationen oid og unique_id_type skal være unik.
Til statuscheck af DDS Registry og Repository findes til hver en servicecheck servlet der kalder servicens afhængigheder, samt en statuscheck servlet der monitorerer de kald der foretages fra DDS Registry og Repository. Alle servlets udstiller http-snitflader som melder 500 ved fejl.
Efter konfiguration og deploy af DDS Registry og Repository kan versionsnummeret hentes med følgende kommandoer:
|
hvilket hver giver output i stil med:
|
I eksemplet kørte servicen på en lokal maskine konfigureret til port 9090.
På grund af en kendt fejl i JBoss 6, logges en række exceptions i server loggen, hvis følgende filer ikke findes (de må gerne være tomme):
|
Databasemonitoreringen laver en simpel query mod databasen. Denne query er justbar og kan ændres i servicenes property filer.
DDSRegistry.properties:
|
DDSRepository.properties:
|
Til Monitorering af afhængigheder til egen propertyfil, trådmanager, document registry (for DDS registry) og egen database findes en servlet i DDS Registry og Repository. Bemærk at denne snitflade laver kald til databasen og healthshare registry.Efter konfiguration og deploy af komponenterne kan det testes med:
|
Servicen returnerer følgende http koder:
Til Monitorering af forbindelser til BRS, MinLog, SamtykkeVerifikationsservice, PersonInformation, registries (DDS registry), repositories (DDS Repository), egen database og længde på konfigurerede minlog tekster findes en servlet i DDS Registry og Repository. Disse services opsamler f.eks. data på hvor mange kald til de forskellige andre services der er fejlet, og melder fejl hvis det overstiger de threshold-værdier der er defineret i property-filen.
Efter konfiguration og deploy af komponenterne, kan den testes med:
|
Servicen returnerer følgende http koder:
DDS Repository anvender ”service_endpoint” til identifikation af de forskellige repositories.
Fejlbeskeder vil kunne ses i ddsregistry-status.log henholdsvis ddsrepository-status.log
Opsamlingen af kald til en service der fejler nulstilles automatisk efter et antal sekunder. Dette styrres med en properti, servicestatuscheck.unlockdelay.
Opsamlingen af kald der benyttes til monitoring af status kan nustilles. Servicen resetstatuscounters nulstiller alle de opsamlede data omkring fejlkald der har været siden sidste nulstilling.
Der skrives i statusloggen når denne service har været brugt.
Nulstil status for DDS Registry:
|
Nulstil status for DDS Repository:
|
Servicen returnerer følgende http koder:
DDS Registry og Repository overvåges hver af en servicespecifik servicechecksnitflade, samt en statussnitflade. Disse to snitfladers url’er kan aflæses i afsnit 2.
Under listen af komponenter først i dette dokument, er der henvisninger til overvågningssiderne.
Alle overvågningssider returnerer enten status 200 hvis de i øjeblikket kører fint, status 404 hvis servicen ikke er deployeret, 203 mange fejl fra intern dds kald (DDS registry) og status 500, hvis der er opstået en fejl, og komponenten derfor ikke virker korrekt.
Simpel webside deployeret på serveren. Som udgangspunkt overvåges følgende:
Alle logfiler er at finde i log/ under WildFly. Herunder findes en liste over alle logfiler med en beskrivelse af hvilke komponenter der skriver til dem. Hvorvidt der anvendes disse default-logfilnavne eller skrives til andre, er afhængig af servicens konfiguration af log4j.
DDS Registry:
Logfilnavn | Komponenter der skriver til logfilen | Beskrivelse |
|---|---|---|
ddsregistry.log | DDS Registry | Generel applikationslog |
dds-audit.log | DDS Registry | Auditlog for indkommende kald af servicens operationer |
nsputil-sla-ddsregistry.log | DDS Registry | SLA-log |
ddsregistry-consentoverride.log | DDS Registry | Log over anvendelse af værdispring ved kald af servicens operationer |
ddsregistry-servicecheck.log | DDS Registry | Logfil for aktivt servicecheck |
ddsregistry-status.log | DDS Registry | Logfil for passivt opsamlet status på webservice- og database-kald. |
ddsregistry-xdserror.log | DDS Registry | Logfil for XDS-fejl indlejret i svar samt fejl ved kald af eksterne XDS-komponenter. |
DDS Repository:
Logfilnavn | Komponenter der skriver til logfilen | Beskrivelse |
ddsrepository.log | DDS Repository | Generel applikationslog |
dds-audit.log | DDS Repository | Auditlog for indkommende kald af servicens operationer |
nsputil-sla-ddsrepository.log | DDS Repository | SLA-log |
ddsrepository-consentoverride.log | DDS Repository | Log over anvendelse af værdispring ved kald af servicens operationer |
ddsrepository-servicecheck.log | DDS Repository | Logfil for aktivt servicecheck |
ddsrepository-status.log | DDS Repository | Logfil for passivt opsamlet status på webservice- og database-kald. |
ddsrepository-xdserror.log | DDS Repository | Logfil for XDS-fejl indlejret i svar samt fejl ved kald af eksterne XDS-komponenter. |
For alle webservices er der en tilhørende SLA-log, der sørger for at logge udvalgte elementer fra requests til webservicen. For DDS Registry og Repository logges alle kald til DDSRegistryWS henholdsvis DDSRepositoryWS, hvor loggen vil indeholde information om kald til webservicens forskellige serviceoperationer og behandlingstid for kaldet inklusiv kald til kontrolservices.
SLA-logpunkter for indkommende kald til DDS Registry:
SLA-logpunkter for udgående kald fra DDS Registry:
Kaldte service | LogPoint | TargetSOAPOperation |
|---|---|---|
Behandlings-relations-service | DocumentRegistry_RegistryStoredQuery.TreatmentRelation | |
MinLog | DocumentRegistry_RegistryStoredQuery.Minlog.LogDataAdd | LogDataAdd |
Samtykke | DocumentRegistry_RegistryStoredQuery.ConsentForUserCheck | urn:dk:nsi:consentservices:verification:service:1#ConsentForUserCheck |
Samtykke | DocumentRegistry_RegistryStoredQuery.ConsentForDataCheck | urn:dk:nsi:consentservices:verification:service:1#ConsentForDataCheck |
XDS Registry | DocumentRegistry_RegistryStoredQuery | urn:ihe:iti:2007:RegistryStoredQuery |
For SLA-logning af udgående kald til XDS Registry:
SLA-logpunkter for indkommende kald til DDS Repository:
DocumentRepository_RetrieveDocumentSet
SLA-logpunkter for udgående kald fra DDS Repository:
Kaldte service | LogPoint | TargetSOAPOperation |
Behandlings-relations-service | DocumentRepository_RetrieveDocumentSet.TreatmentRelation | |
MinLog | DocumentRepository_RetrieveDocumentSet.Minlog.LogDataAdd | LogDataAdd |
Samtykke | DocumentRepository_RetrieveDocumentSet.ConsentForUserCheck | urn:dk:nsi:consentservices:verification:service:1#ConsentForUserCheck |
Samtykke | DocumentRepository_RetrieveDocumentSet.ConsentForDataCheck | urn:dk:nsi:consentservices:verification:service:1#ConsentForDataCheck |
XDS Repository | DocumentRepository_RetrieveDocumentSet | urn:ihe:iti:2007:RetrieveDocumentSet |
For SLA-logning af udgående kald til XDS Repository:
logges i feltet GenericCallParms desuden det kaldte XDS Repository’s repositoryUniqueId under parameternavnet repositoryUniqueId.
logges fejlet kald, på trods af succesfuldt kald, når en eller flere af følgende XDS-fejl/advarsler er indlejret i XDS-fejlstrukturen i svaret:
XDSMissingHomeCommunityId
XDSRepositoryBusy
XDSRepositoryError, medmindre der er tale om advarsel om tilbageholdte oplysninger grundet samtykker
XDSRepositoryOutOfResources
XDSUnavailableCommunity
XDSUnknownCommunity
XDSUnknownRepositoryId
Auditlogning foretages med det officielle NSP Audit Log modul.
De forskellige ITI-håndtag logges på følgende måde.
ITI-18 søgninger logger patient-id, bruger-id, på-vegne-af-id og for hver DocumentEntry (DE) i returneret svar (der kan være frafiltreret metadata pga. samtykker): DE.uniqueId, DE.repositoryUniqueId, DE.homeCommunityId, DE.typeCode. Se eksempel nedenfor:
|
De forskellige ITI-43 operationer logger patient-id, bruger-id, på-vegne-af-id og for hvert dokument i returneret svar (der kan være frafiltreret dokument(er) pga. samtykker, der kan være forespurgt dokumenter, der ikke er tilgængelige): requestens uniqueId, repositoryUniqueId, homeCommunityId.
Eksempel:
|
Det anbefales at aktuelle konfigurationsfiler til DDS Registry og Repository er under versionskontrol og back up.
| 3/4 2025 | Martin Henriksen/SDS | Etablering af dokumentation |