Page History
...
Design- og arkitekturbeskrivelse - Migrering
!! Dette afsnit er ikke længere aktuelt men bevares for historikkens skyld. Kildekode, som har med migrering at gøre, er taget ud af NXRG projektet i revision r10379 !!
Migrering af data fra OpenText Registry til NXRG skal sikre, at al data, der ligger i OpenText Registry overføres til NXRG på en måde, så data bevares: Det vil sige, at de data, der kan udsøges gennem NXRGs snitflader svarer 1:1 til det data, der kan udsøges gennem OpenText Registrys snitflader.
...
Da driften kan trække liste over nye/opdaterede data i OpenText Registry (se pkt 1 ovenfor) er det muligt at lave en trinvis migrering. Dette betyder yderligere, at det bliver muligt at komme i gang med migreringen på et tidligere tidspunkt (da det kan foretages uden at der skal meldes servicevinduer ud).
| Gliffy Diagram | macroId | 9bd31676-8edb-4fdd-8a5e-8a616455806b|||||
|---|---|---|---|---|---|---|
|
...
Desuden opdateres til tabellen migration_properties under migreringskørslen. Formålet med dette er at holde styr på, hvor langt man er nået med id'erne for association og documententry, sådan at man kan fortsætte herfra ved næste kørsel.
Contents
| Feltnavn | Datatype | Indhold |
|---|---|---|
| PID | bigint(20) | Unik nøgle. |
| RowModified | timestamp | Angivelse af, hvornår rækken sidst er opdateret. |
| DocID | varchar(255) | Id på dokument. |
| content | mediumblob | XML-repræsentation af dokumentet (kan være enten submissionset eller document). |
Status
| Feltnavn | Datatype | Indhold |
|---|---|---|
| PID | bigint(20) | Unik nøgle. |
| RowModified | timestamp | Angivelse af, hvornår rækkken sidst er opdateret. |
| DocID | varchar(255) | Id på dokument. Refererer til DocID-kolonnen i contents-tabellen. |
| DocDate | timestamp | Angivelse af, hvornår dokumentet er oprettet. |
| DocExportState | int(11) | Status-felt, der bruges til at angive om et dokument er blevet eksporteret eller ej. Kan antage følgende værdier: 0 (NotReady), 1 (Ready), 2 (Migrating), 100 (Migrated). |
| DocImportState | int(11) | Status-felt, der bruges til at angive om et dokument er blevet importeret eller ej. Kan antage følgende værdier: 0 (NotReady), 1 (Ready), 2 (Migrating), 100 (Migrated). |
migration_properties
| Feltnavn | Datatype | Indhold |
|---|---|---|
| Id | int(11) | Unik nøgle. |
| finish_time | datetime | Angivelse af, hvornår migreringskørslen afsluttede |
| current_association_id | int(11) | Angivelse af, hvor langt man nåede i række af id på associations i NXRG databasen |
| current_documententry_id | int(11) | Angiver hvor langt man nåede i række af id på documententry i NXRG databasen |
XML-format
OpenText registry'et eksporterer sine data i et xml-format, som der ind til videre ikke er tilvejebragt noget schema for. Nedenfor kan man se et eksempel på et submissionset og et tilhørende document i dette format.
...
De følgende metrikker foreslås. Det skal afklares, om det kan lade sig gøre at trække disse ud af både xDB og NXRG.
| Nr | Beskrivelse af validering | NXRG | xDB |
|---|---|---|---|
| 1 | Antal documententries i alt | OK | |
| 2 | Antal documententries fordelt på type (stable/on-demand) | OK | |
| 3 | Antal documententries fordelt på status | OK | |
| 4 | Antal documententries fordelt på typecode | OK | |
| 4.5 | Antal documententries fordelt på version | OK | |
| 5 | Antal forskellige patient-id'er for documententries (id, OID/idtype) | OK | |
| 5.1 | Trække lister ud af patient-id'er for documententries | OK | |
| 5.2 | Antal documententries, som ikke har en association | OK | |
| 6 | Antal submissionsets i alt | OK | |
| 7 | Antal forskellige patient-id'er for submissionsets | OK | |
| 7.1 | Trække lister ud af patient-id'er for submissionset | OK | |
| 7.2 | Antal submissionsets, som ikke har en association | OK | |
| 8 | Antal associations i alt | OK | |
| 9 | Antal forskellige patient-id'er for associations | OK | |
| 9.1 | Trække lister ud af patient-id'er for associations | OK | |
| 9.2 | Antal associations som ikke har documentEntries, submissionsets eller folders | OK | NA |
| 9.3 | Antal associations som peger på forskellige patient-id'er i source og target | OK | |
| 9.3 | Antal associations som peger på folders eller associations | OK | |
| 99 | Antal anvendte patientid assigningauthorityid og assigningauthoritytype | OK | |
| 100 | Udtræk af top-100 cpr numre for documententries (dem med flest), tælle docentries også | OK |
Der er et issue omkring, hvornår valideringen kører, hvis der tikker ny data ind i xDB. Vi antager, at vi kan køre migrering-validering/verifikation-cyklen, uden at det eksisterende OpenText slettejob fjerner data fra xDB (det skal være slået fra). I udtrækket fra xDB er der styr på en skæringsdato, som kan anvendes til at begrænse tælle-queries mod xDB opadtil, hvorfor resultaterne mellem NXRG og xDB ventes at være ens - både efter første migrering og efterfølgende efter deltaerne.
...
Der sammenlignes følgende metrikker for hver kørsel (dvs for hvert cpr nummer)
| Beskrivelse af verifikation |
|---|
| Antal document entries i NXRG |
| Antal document entries i OpenText |
| Forskel i antal mellem NXRG og OpenText for document entries |
| Forskel i antal mellem NXRG og OpenText for dokumenter |
| Forskel i antal mellem NXRG og OpenText for associationer |
| Forskel i antalmellem NXRG og OpenText for foldere |
| Forskel i antal mellem NXRG og OpenText ror submissionsets |
| Forskel i antal mellem NXRG og OpenText for referencer |
| Forskel i antal mellem NXRG og OpenText for fejl |
| Forskel mellem NXRG og OpenText for status |
| For document entries: hver document entry konverteres til en XML streng og sammenlignes, hvis forskellig skrives entryuuid til en liste |
| For document entries: findes et entryuuid kun i NXRG skrives det til en liste |
| For document entries: findes et entryuudi kun i OpenText skrives det til en liste |
| Alle kald og svar logges |
De to første variable er for at se, at der kommer data retur i det hele taget. Da de øvrige værdier er sammenligniner, som gerne skulle være 0. Men 0 minus 0 er også 0, så det viser ikke om der er dokumenter i svaret.
...
Da OpenText Registry er closed source er det ikke muligt ved kodeinspektion at danne sig et overblik over, hvilke valideringer, der findes i OpenText Registry. Vi har forsøgt at køre Tookit Tests op i mod test1 for enkelte test cases, for at give en ide om, hvorledes denne svarer (se NXRG/SDS Patientindex - Testvejledning).
For en endelig anvendelse af dette forslag, skal prod og test1 open text konfigureres ens (hvis ikke allerede) og samtlige eller udvalgte test køres.
...
Andre env, der kan sættes:
| ENV | Beskrivelse | Eksempel | Bemærkninger |
|---|---|---|---|
| opentext_data_url | URL til databasen med opentext data | jdbc:mysql://localhost:3307/opentext | |
| opentext_data_user | Bruger til opentext databasen | opentext | |
| opentext_data_pass | Password for bruger | opentext | |
| migrationfilesize | Antal inserts statements per migreringsfil | 100000 | Migrering filen prefixes med løbenummer per fil: Eksempel: 11_submissionset_20211020_150541_002.sql |
| migration_batchsize | Antal records fra Open Text databasen der læses ad gangen *1 | 1000 | |
| migration_no_of_batches | Antal batches der skal håndteres i een kørsel, default er 0 som betyder alle batches *1 | 1000 | Migrering filen prefixes med tidsstempel per kørsel: Eksempel: 11_submissionset_20211020_150541_002.sql Alle filer i samme kørsel vil have samme tidsstempel. Tidstemplet kan ses i log data. |
1) Antal records der hermed håndteres er således migration_batchsize x migration_no_of_batches
Driftsvejledning - Migreringsverifikationstool
Som beskrevet i NXRG/SDS Patientindex - Design- og arkitekturbeskrivelse kan der efter en migrering foretages hhv
...
Env, der kan sættes i forbindelse med validering:
| ENV | Beskrivelse | Eksempel |
|---|---|---|
| nxrg_data_url | URL til databasen med NXRG data | jdbc:mysql://localhost:3307/nxrg |
| nxrg_data_user | Bruger til NXRG databasen | nxrg |
| nxrg_data_pass | Password for bruger | nxrg |
Env, der kan sættes i forbindelse med verifikation:
| ENV | Beskrivelse | Eksempel |
|---|---|---|
| nxrg_iti18_url | url til NXRG iti-18 snitflade | https://nxrg.nspnxrg.medcom.dk/nxrg/iti18 |
| opentext_iti18_url | url til OpenText iti-18 snitflade | https://test1-cnsp.ekstern-test.nspop.dk:8443/registry/services/xds-iti18 |
Driftsvejledning - Replaytool
Som beskrevet i NXRG/SDS Patientindex - Design- og arkitekturbeskrivelse kan der inden idriftsættelse køres en række "anvender integrationstest", som er replay af en række "gamle" open text request. Efter kørsel kan response sammenlignes med det svar som i sin tid blev givet af open text.
...
Env, der kan sættes i forbindelse med replay:
| ENV | Beskrivelse | Eksempel |
|---|---|---|
| nxrg_iti18_url | url til NXRG iti-18 snitflade | http://localhost:8060/nxrg/iti18 |
| nxrg_iti57_url | url til NXRG iti-57 snitflade | http://localhost:8060/nxrg/iti57 |
| nxrg_iti42_url | url til NXRG iti-42 snitflade | http://localhost:8060/nxrg/iti42 |
| nxrg_iti61_url | url til NXRG iti-61 snitflade | http://localhost:8060/nxrg/iti61 |
Output i result.csv:
| Kolonne | Beskrivelse | Note |
|---|---|---|
| Id | Request og response id fra filen | |
| Operation | Hvilken type kald det, eks iti57 | |
| Resultat | Gik det overordnet godt eller ej | Der er en række kombinationer af svar fra kaldende, som vurderes at være ok. F.eks. når NXRG ikke kan finde et specifik dokument i forbindelse med en replace. Dette er implementeret i klassen StatusCodeCombination, hvor kombinationer kan læses for nu. |
| Note | Lidt information omkring en vurdering af Resultat | |
| KaldStatusEns | Er ForventetKaldStatus og FaktiskKaldStatus ens? | |
| FejlkodeAntalEns | Er ForventetFejlkodeAntal og FaktiskFejlkodeAntal ens? FejlKodeAntal er de antal fejl, som er blevet returnernet. | ForventetFejlkodeAntal og FaktiskFejlkodeAntal bør være 0 eller 1 for hver linie, ellers kan FejlkodeListeEns, samt kolonnerne med ForventetFejl* og FaktiskFejl* være ikke fyldesgørende. |
| FejlkodeListeEns | Er FejlkodeListeForventet og FejlkodeListeFaktisk ens? (sammenlignet en til en hvis flere) | |
ForventetFejlkode1 ForventetFejlContext1 ForventetFejlLocation1 ForventetFejlSeverity1 | Fejl 1 i det oprindelige svar, hvis nogen | |
FaktiskFejlkode1 FaktiskFejlContext1 FaktiskFejlLocation1 FaktiskFejlSeverity1 | Fejl 1 i det faktisk NXRG svar, hvis nogen | |
| HsuidheaderMed | Er hsuidheaderen med i kaldet? | Blev på et tidspunkt brugt til at vurdere om eventuelle forskelle skyldtes denne |
Filen kan med fordel åbnes i et regneark, og funktioner som autofilter og pivot tabeller anvendes til vurdering af dens indhold.
...
Env, der skal sættes i forbindelse med kørsel:
| ENV | Beskrivelse | Eksempel |
|---|---|---|
| nxrg_data_url | URL til databasen med NXRG data | jdbc:mysql://localhost:3307/nxrg |
| nxrg_data_user | Bruger til NXRG databasen | nxrg |
| nxrg_data_pass | Password for bruger | nxrg |
| cpr_file | Inputfil med cprnumre, der skal fixes | /input/cprinput.txt |