Nærværende dokument udgør driftsvejledningen for Lpr3indlæseren. Lpr3indlæseren er en stamdataindlæser som vedligeholder data fra Landspatientregisteret.
Lpr3indlæseren er en webapplikation der deployer på en Wildfly applikationsserver.
Distributionen af Lpr3indlæseren foregår som et Docker image der er bygget på NSP platform Docker imaget (registry.nspop.dk/platform/nsp
)
Tabel over datafilens placering i forhold til de servere og komponenter der findes på siden LPR 3 Indlæser - Design- og Arkitekturbeskrivelse:
Fase | Directory | Bemærkning |
---|---|---|
Input | <path_to_input_files>:/tmp/lpr3/input | Camels FetchRoute placerer filer hentet fra sftp her. |
backup | <path_to_backup_files>:/tmp/lpr3/input/.done | Efter indlæsning placeres en zippet version af filerne her. |
Alle Lpr3indlæsere overvåges via en simpel statusservice. (Se evt. https://www.nspop.dk/display/public/web/Husregler+for+udvikling+til+NSP#HusreglerforudviklingtilNSP-Snitfladetilmonitorering(gl4.4)).
Denne statusservice bliver overvåget ved at den polles hver 10. sekund for en ny status (200 ok og 500 fejl pr default HTTP). Ved 500 er det tegn på, at en supporter skal igang med at kigge på problemet.
Statusservicen giver udslag i følgende situationer, som vil sætte support igang
Lpr3Indlæseren har en udvidet servlet der gør det muligt at styre indlæsningen. Det er muligt at angive et pattern for de filer der skal indlæses. Det er også muligt at starte og stoppe indlæsningen vha. denne servlet.
Vha. parameteren "BatchAction" kan man styre indlæsningen ved at angive en af følgende værdier:
Værdi | Beskrivelse |
---|---|
GetImportSet | Viser status for indlæsningen:
|
BatchStart | Benyttes til at starte indlæsningen. |
BatchStop | Benyttes til at stoppe indlæsningen. |
Reset | Nulstiller det angivne pattern. |
<import set pattern> | Her kan man sætte et pattern. Hvis der findes et i forvejen overskrives det. |
Eksempler:
http://localhost:8080/lpr3indlaeser/status?BatchAction=01100 (Her angives at filer hvor filnavnet indeholder "01100" skal indlæses)
http://localhost:8080/lpr3indlaeser/status?BatchAction=GetImportSet (viser status for indlæsningen)
Ingen - ud over den beskrevne statusservice.
Ingen - de data der indlæses i registret via Lpr3indlæseren stilles til rådighed i Lpr3 registerdatabasen . Lpr3indlæseren selv udstiller ikke nogen services.
Når statusservicen svarer med en http 500 skal der igangsættes support til hhv.
LPR3 Indlæseren er forsynet med et tjek på navnene på de filer, der processeres. Navngivningen af filerne fra lpr3-data-leverandøren skal således afdække om indlæseren har det fulde billede af hele lpr3-historikken.
Filnavnene skal være forsynet med fra- og tildatoer på formatet yyyymmddHHMMss. Den første fils indlæsning markeres med en række 0'er (bootstrapfilen)
BR_SOR_00011_00000000000000_20190620133023.csv BR_SOR_00012_20190620133023_20190621020004.csv BR_SOR_00013_20190621020004_20190621101808.csv
Indlæseren at verificere om det er ok at tage fat i en given fil. Den validerer både om formatet indeholder datoerne som angivet ovenfor, samt om den næste fil stemmer overens med tilstanden for den senest indlæste fil i databasen.
Hvis sekvensen er brudt eller inputfilen har ukorrekt format, stoppes for yderligere indlæsning.
Som beskrevet i monitoreringsnitfladen ovenfor indeholder status for LPR3 en sigende diagnosetekst i forhold til valideringen af sekventiel indlæsning.
Disse forretningsregler blev indført i forbindelse med SDS-5519: lpr3 - indlæsning i sekvens.
Lpr3indlæseren skriver til 4 forskellige log filer, der alle er placeret lokalt i Docker containeren i Wildfly standard log folderen: /pack/wildfly8/standalone/log
Denne log ligger i filen nsputil-sla.log
og indeholder NSP SLA logninger på formen
24-10-2020 10:14:40,540 [Camel (camel-1) thread #2 - sftp://foo@lpr3sftp:22/dxc] INFO dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2020-10-24 10:14:40.539" EndTime="2020-10-24 10:14:40.539" Duration="74 microseconds" MessageId="0169ab8a-5371-4b40-bd64-c8a9fce0b54e" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="DataSet fetched" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","BR_190520111525.csv") } 24-10-2020 10:14:40,761 [Camel (camel-1) thread #3 - file:///tmp/lpr3/input] INFO dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2020-10-24 10:14:40.539" EndTime="2020-10-24 10:14:40.539" Duration="74 microseconds" MessageId="7f6a9182-5297-41ac-bc2c-68a7010766ff" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="DataSet received" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","BR_190520111525.csv") } 24-10-2020 10:14:40,890 [Camel (camel-1) thread #3 - file:///tmp/lpr3/input] INFO dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2020-10-24 10:14:40.539" EndTime="2020-10-24 10:14:40.539" Duration="74 microseconds" MessageId="7f6a9182-5297-41ac-bc2c-68a7010766ff" RequestSize=0 ReplySize=0 Result=ERROR ("File handling encountered errors and was not completed") ClientIP="<empty>" SOAPOperation="DataSet failed" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","BR_190520111525.csv") } |
Denne log ligger i filen lpr3Audit.log
og indeholder overordnet logning af Lpr3indlæserens aktivitet
timestamp="2020-10-26 10:01:36,250" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been preparsed" timestamp="2020-10-26 10:01:36,406" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been parsed and splitted" timestamp="2020-10-26 10:01:37,890" priority="ERROR" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Skipping Lpr3 delete batch for PID: null - due to SQL error: Incorrect number of rows affected by batch delete" timestamp="2020-10-26 10:01:37,907" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been completed with status Completed with 1 log(s)" |
Denne log ligger i filen lpr3Application.log
og indeholder detaljeret logning af Lpr3indlæserens aktivitet
timestamp="2020-10-27 10:53:58,207" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been fetched" timestamp="2020-10-27 10:53:58,665" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been received" timestamp="2020-10-27 10:53:58,673" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been preparsed" timestamp="2020-10-27 10:53:58,792" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.parser.Lpr3CsvParseSplitHandler" message="Parsed 7 LPR3 registreringer" timestamp="2020-10-27 10:53:58,797" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been parsed and splitted" timestamp="2020-10-27 10:53:59,584" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Received batch of Lpr3Events with size 15" timestamp="2020-10-27 10:53:59,591" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.database.dao.Lpr3RegistreringerDAO" message="Delete 6 Lpr3Registreringer" timestamp="2020-10-27 10:53:59,611" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Batched delete LPR3Registreringer. Count=0" timestamp="2020-10-27 10:53:59,611" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Persisted delete batches of LPR3Registreringer. Count=0" timestamp="2020-10-27 10:53:59,611" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.database.dao.Lpr3RegistreringerDAO" message="Insert using jdbc template." timestamp="2020-10-27 10:53:59,612" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.database.dao.Lpr3RegistreringerDAO" message="Insert 6 Lpr3Registreringer" timestamp="2020-10-27 10:53:59,629" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Batched insert LPR3Registreringer. Count=6" timestamp="2020-10-27 10:53:59,629" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Persisted insert batches of LPR3Registreringer. Count=6" timestamp="2020-10-27 10:53:59,630" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.database.dao.Lpr3RegistreringerDAO" message="Delete 1 Lpr3Registreringer" timestamp="2020-10-27 10:53:59,648" priority="ERROR" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Skipping Lpr3 delete batch for PID: null - due to SQL error: Incorrect number of rows affected by batch delete" timestamp="2020-10-27 10:53:59,648" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Batched delete LPR3Registreringer. Count=0" timestamp="2020-10-27 10:53:59,648" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Persisted delete batches of LPR3Registreringer. Count=0" timestamp="2020-10-27 10:53:59,648" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Done persisting LPR3Registreringer. Written Lpr3: 6, Updated Lpr3: 0, Deleted Lpr3: 0" timestamp="2020-10-27 10:53:59,666" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been completed with status Completed with 1 log(s)" |
Denne log ligger i filen lpr3Stat.log
og indeholder statistik logning af Lpr3indlæserens aktivitet
{"Time to preparse":"PT0.001S","Time to parse":"PT0.075S","Parsed records":"Parsed 7 LPR3 registreringer","Application":"Lpr3Indlæser","Timestamp":"2020-10-27 10:55:05,810","Processing Time":"PT445052H25M13.306S","ExchangeId":"89807c80-11d5-465b-a198-90e6a2d6f501"} |