Indledning

Denne side sammenfatter forskellige design oplæg og beslutninger som er foretaget i løbet af udviklingen af Prøvebestillingsindlæseren. Følgende dokument er indledningsvis udarbejdet

Orkestrering

Krav

Det er et grundliggende krav at breve ikke må udsendes før rekvisitioner er oprettet (for at undgå at personer forsøger at booke men ikke får lov hvis rekvisitionen mangler).

Et mere implicit krav er, at der i løsningen skal være en form for kapacitets styring - en styring som i dag til dels er implementeret ved det tempo hvorved SSI sender CPR filer til behandling.

Grundliggende design

Prøvebestillingsindlæseren vil behandle filer fra SSI i det tempo som de ankommer fra SSI - dvs. der vil ikke ske en bundling af filerne og de berigede oplysninger sendes til hhv. Synlab og Strålfors så hurtigt som muligt.

Hvis der mht. indlæsnings kapacitet i Synlab og/eller Strålfors ønskes behandling efter bestemte tidspunkter på døgnet, kan Prøvebestillingsindlæseren undlade at hente filer fra SFTP serveren i bestemte tidsrum.

Løsning ved Synlab kvittering

Med forventning om at Synlab kan generere en kvitteringsfil, er flowet ligetil 

  1. CPR fil ankommer fra SSI
  2. CPR fil valideres og parses til intern repræsentation af CPR numre samt data fra filnavn
  3. CPR fil beriges til hhv. Synlab Rekvisitionsoplysninger og Strålfors Brevoplysninger
  4. Brevoplysninger til Strålfors gemmes med BatchId (i database eller i filsystem)
  5. Rekvisitionsoplysninger sendes til Synlab
  6. Der ventes på kvittering fra Synlab
  7. Kvitteringsfil ankommer fra Synlab 
  8. Strålfors Brevoplysninger fil med BatchId som matcher kvitteringsfil fra Synlab sendes til Strålfors
  9. Evt. kvittering modtages fra Strålfors

Denne løsning betyder, at indlæseren ikke er afhængig af at Synlab behandler de leverede filer i samme sekvens som de afsendes fra indlæseren.

Denne løsning betyder, at leveringen af brevoplysninger til Strålfors er afhængig af en korrekt modtagen kvittering fra Synlab, og dermed er der en risiko for at Brevoplysninger aldrig leveres til Strålfors hvis en Rekvisitions-behandling hos Synlab ikke udløser den ventede kvittering.

Løsning uden Synlab kvittering

Hvis der ikke kan fås en kvittering fra Synlab - eller at den mulige kvittering ikke kan udpege et givent batch, kan flowet være:

  1. CPR fil ankommer fra SSI
  2. CPR fil valideres og parses til intern repræsentation af CPR numre samt data fra filnavn
  3. CPR fil beriges til hhv. Synlab Rekvisitionsoplysninger og Strålfors Brevoplysninger
  4. Brevoplysninger til Strålfors gemmes med BatchId (i database eller i filsystem)
  5. Rekvisitionsoplysninger sendes til Synlab
  6. Hvert 10. minut køres et job der tjekker tidsstempel for ikke afleverede Brevoplysninger
  7. Strålfors Brevoplysninger med tidsstempel der er mere end 60 minutter gammelt sendes til Strålfors - antallet af minutter som Brevoplysninger venter er konfigurerbart
  8. Evt. kvittering modtages fra Strålfors

Denne løsning er dermed ikke afhængig af kvitteringsfil fra Synlab

I tilfælde af at behandlingen af Rekvisitioner forsinkes/fejler hos Synlab vil denne løsning sende Brevoplysninger til Strålfors uden at Rekvisitioner er oprettet.

Undtagelser

Da det er kritisk for Covid-19 test-indsatsen at data kommer korrekt igennem indlæseren, skal det overvejes om der skal indbygges mulighed for undtagelses håndtering.

F.eks. - hvis afsendelsen af Brevoplysinger til Strålfors afhænger af en kvittering fra Synlab, skal det så være muligt manuelt at frigive Brevoplysningerne for et givent BatchId hvis kvitteringen af en eller anden grund udebliver? Evt. på baggrund af en liste over ikke frigivede Brevoplysninger?

Ligeldes - hvis afsendelsen af Brevoplysninger til Strålfors frigives efter et antal minutter, skal det så være muligt at tilbageholde Brevoplysningerne for et givent BatchId hvis man ved at Rekvisitions behandlingen hos Synlab er fejlet?


Skabelonhåndtering

Krav

Helt grundliggende skal der sendes forskelligt brev til personer bosiddende i Danmark i sygesikringsgruppe 1 og til alle andre personer. Differentieringen bunder i at det kun er den første gruppe af personer for hvem der oprettes en rekvisition i Synlab så alle andre skal have et brev som beskriver at de selv skal kontakte læge for at få oprettet en rekvisition.

Yderligerer forventes det at forskellige prøver/tests vil give anledning til forskellige breve og dermed skabeloner. Prøvebestillingsindlæseren skal derfor kunne mappe en given prøve og en given person entydigt til en given skabelon.

For at undgå at der skal bygges og deployes en ny version af Prøvebestillingsindlæseren hver gang der kommer nye prøver og skabeloner, skal der etableres et rammeværk som dynamisk kan udvides med nye skabeloner.

I datafilen til Strålfors er der også angivet en forsendelsestype. Forsendelsestypen er ID’et for den faktiske forsendelsestype, oprettet i SSI’s Strålfors Connect afsendersystem. Forsendelsestyperne kan være en af følgende:

Fra Kenneth/NC: De sidste to (7125 og 7126) vil formentlig ikke blive brugt. I øvrigt kan vi sagtens nøjes med kun at anvende 7121 og 7122, da de andre kun eksisterer af hensyn til at kunne adskille dem i Connect administrationsportalen. Dette bliver dog så vidt vides ikke brugt.

Det skal afklares hvordan denne forsendelsestype skal anvendes og om vi, som beskrevet ovenfor, kan nøjes med at angive 7121 og 7122 og ud fra hvilke kriterier forsendelsestypen vælges.

Leveringen til Strålfors foretages ved at Brevoplysningerne samt skabeloner leveres samlet til Strålfors i en .zip fil.

Design

Skabelonudvælgelsen forventes som minimum at tage udgangspunkt i den bestilte prøvetype og dernæst, indenfor den bestilte prøvetype, at vælge den skabelon som knytter sig til persongruppen.

Dette kan forholdsvist simpelt løses ved navngivning af skabeloner. 

F.eks. ved navngivning af skabeloner som PODNINGSTEST_GRP1.docx og PODNINGSTEST_GRP2.docx - hvor "PODNINGSTEST" skal matche den prove der anmodes om og GRP1 hav GRP 2 angiver skabelon for den ene eller anden persongruppe.

Løsningen via navngivning vil, ved tilføjelse af nye prøvetyper, blot kræve at der registreres yderligere skabeloner i den folder med skabeloner som leveres med datafilen til Strålfors.

Når denne folder volume-mapped ind i Prøvebestillingsindlæserens Docker-image, er det enkelt for driften at tilføje yderligere skabeloner efter behov.