Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Numbered Headings

Indledning

Dynamisk Testdata Generator kan anvendes på to forskellige måder. Først og fremmest er der en web-klient, hvor en anvender kan logge ind og oprette personer samt tilknytte autorisationer og ydere hertil. Ud over dette er det muligt for en anvender selv at kalde den HTTP POST baserede web-snitflade, som klienten gør brug af, for på den måde at arbejde med testdata direkte i egne systemer og scripts.

Registre

Når man opretter en person eller et andet event gennem enten klienten eller web-snitfladen, så oprettes data ikke direkte i Stamdata Registrene på NSP. Dette skyldes at Stamdata på NSP kommer ind via et antal importere som asynkront modtager data fra forskellige kilder. DTG er udviklet til at simulere denne opførsel for at sikre bedst mulig datakvalitet og sammenlignlighed med produktionsregistre. Derfor kan der gå op til 24 timer inden f.eks. en autorisation bliver tilgængelig i de tilsvarende Stamdata Registre på NSP.

Denne anvenderguide indeholder ikke detaljer omkring felter og datastrukturer i stamdata-registrene på NSP, det forventes derfor at læseren kender til de forskellige fagområder som det er muligt at oprette testdata til.

Klient

Web klienten er udviklet med fokus på et brugervenligt og selvforklarende design. Klienten understøttes derfor af flere forskellige browsere, og samtidig er der foretaget flere heuristiske usability tests, der sikrer en klient, der er let forståelig og brugervenlig. Adgang fås ved henvendelse via NSPOP.dk  Brugeroprettelse.

Klienten kan tilgåes via nspop.dk hvor den offentlige adresse også kan findes. Klienten er generelt set lavet således at en bruger ikke er tvunget til at angive nogle af de mulige input, hvis et felt er tomt så finder DTG selv på noget realistisk data at anvende. Gennem klienten er det muligt at foretage sig følgende handlinger:

  • Liste de personer brugeren selv har oprettet.
  • Filtrere på fornavn, efternavn cpr-nummer mv.
  • Se detaljer for en valgt person, herunder autorisationer.
  • Oprette en ny person hvor man f.eks. kan angive navn, fødselsdag, egen læge mv.
  • Tildele en person en autorisationskode således at vedkommende f.eks. senere kan få et id-kort på NSP (kræver et medarbejdercertifikat fra Nets).
  • Tilknytte en autoriseret person til en yder således at vedkommende fremgår af Yderregisteret.
  • Tilknytte en person med et apotek således at vedkomne fremgår som apoteker i Apotekerregisteret.
  • Tilknytte en forælder til en person med eller uden forældremyndighed.
  • Udstede et særligt sundhedskort til en person (grænsegænger)
  • Fraskrive sig ejerskab af personer man ikke længere ønsker skal fremgå af ens liste.
  • Fremsøge personer ud fra cpr-nummer, herunder også personer der ikke er oprettet af brugeren selv.
  • Se detaljer for fremsøgte personer, dog uden mulighed for interaktion, såfremt personen ikke er oprettet af brugeren selv.
  • Begrænse ordinationsretten for en given autorisation.
  • Skifte stilling for en person
  • Skifte sikringsgruppekode for en person
  • Skifte læge for en person
  • Skifte adresse for en person
  • Skifte personnummer for en person
  • Markere en person som afdød
  • Tilknytte en værge til en person
  • Skifte navne for en person
  • Privatmarkere en persons adresse
  • Fratag en autorisation

Oversigt

Klienten starter på oversigtssiden hvor det er muligt at se alle de personer som tilhører den aktuelle bruger. Herfra kan man oprette nye personer, filtrere i ens data samt vælge en enkelt person (klikke på rækken) for at se detaljer omkring denne.

Ny person

På denne side kan man vælge at angive nogle af de værdier en person skal have, hvis et felt ikke udfyldes så vælger DTG selv nogle realistiske data.

Da CPR nummer, fødselsdato og køn skal hænge sammen gælder følgende regler:

  1. Hvis CPR nummer angives så bruges dette til at udregne personens fødselsdato og køn.
  2. Hvis CPR nummer ikke er angivet men personens fødselsdag og køn er angivet, bruges dette til at generere et valid CPR nummer.
  3. Hvis CPR nummer og køn ikke er angivet men personens fødsesldato er angivet, vælges der et tilfældigt køn og et valid CPR nummer genereres.
  4. Hvis hverken CPR nummer eller fødselsdato er angivet ignoreres kønet og der genereres et nyt valid CPR nummer.

Det ydernummer der angives ved oprettelse af en ny person angiver personens alment praktiserende læge ifm. sygesikring. Hvis der ikke angives et nummer vælges der et tilfældigt.

Den nye persons far og mor vælges tilfældigt blandt den aktive brugers eksisterende data. Hvis der ikke kan findes en passende person til rollen angives der i stedet et tilfældigt navn og fødselsdato.

Vis person

På denne side kan man se yderligere detaljer omkring den valgte person samt tilføje nye events for personen. I bunden af siden kan man se en oversigt over de events som tidligere er blevet tilføjet.

Hvis der trykkes på "Fraskriv ejerskab" flyttes personen væk fra den aktive bruger og over i en pulje af baggrundsdata. Dvs. personen findes stadig på NSP, men den tilhører ikke længere den aktive bruger og man kan ikke længere se eller opdatere data for den.

I denne version kan man ikke se forældre/barn relationer, men dette forventes i en kommende version.

Tildel Autorisation

På denne side kan man tildele en autorisation og tilknytte den autoriserede person til en yder.

Hvis man ikke udfylder autorisationskode eller uddannelseskode så vælger DTG tilfældige værdier i stedet.

Hvis man ikke angiver et ydernummer så laves der ingen tilknytning til en yder. Hvis man vælger et ydernummer som ikke findes i forvejen så oprettes der en yder med det angivne nummer i yderregisteret.

Tilknyt apotek

På denne side kan man gøre en person til en apoteker ved at tilknytte et apoteksnummer til vedkomne. Hvis apoteket med det angivne apoteksnummer ikke allerede findes, oprettes det af systemet.

Hvis man vælger et apoteksnummer der allerede findes kan man ikke udfylde de resterende felter da disse værdier derfor allerede er fastlagte.

Flere personer kan godt være knyttet til det samme apoteksnummer og ligeledes kan en person godt være tilknyttet flere apoteksnumre.

En person kan tilknyttes et apotek igen, hvis de forrige tilknytningers gyldighedsperioder alle er udløbet.

Tilknyt forælder

På denne side kan man knytte en forælder til det valgte barn. Man kan ligeledes vælge om der også skal tilknyttes forældermyndighed.

Begge personer skal være ejet af den aktive bruger, man kan ikke tilknytte en forælder der ikke tilhører en selv.

Typen 'anden' bruges hvis der ikke er tale om biologiske forældre og kræver at forældremyndighed er valgt.

Den tilknyttede forælder skal være minimum 18 år ældre end den valgte person.

Det er kun de to nyeste forældremyndigheder der er aktive i det genererede testdata, ligeledes er det den nyeste mor og far relation der er aktive.

Udsted særligt sundhedskort

På denne side kan man udstede et særligt sundhedskort. Personer med et særligt sundhedskort er også nogle gange omtalt som grænsegængere.

Hvis man vælger at personen har bopæl i udlandet bør man angive sikringsgruppe 7, da denne gruppe netop dækker over dette.

Hvis man udsteder to særlige sundhedskort til en person er det den nyeste af dem der bliver det aktive i registeret

Begræns ordinationsret

På denne side er det muligt at angive begrænsninger til ordinationsretten på en given autorisation. Såfremt den valgte person har minimum en autorisation er det muligt at vælge begræns ordinationsret eventet.

Fra dropdownlisten vælges en autorisation og efterfølgende udfyldes de ønskede begrænsninger i autorisationsfraskrivelse, delvisindskrænkning, autorisationsfratagelse etc.

Der skal udfyldes valide ATC koder og * kan anvendes som wildcard. ATC koderne skal adskilles med mellemrum. Klienten giver løbende feedback på validiteten af de ATC koder man indtaster.

Der kan angives fra 1. til 5. niveau af ATC koder, så det er ikke en nødvendighed at angive alle 7 karakterer.

Skift stilling

På denne side kan man skifte en persons stilling.

Skift sikringsgruppe

På denne side kan man skifte sikringsgruppe for en person.

Hvis man vælger sikringsgruppekode 1 kan man også angive et ydernummer til egen læge. Hvis man ikke angiver et ydernummer vælges der et tilfældigt.


Skift læge

På denne side kan man skifte en persons læge. Det gøres ved at indtaste et ydernummer.

Hvis personen ikke allerede er i sikringsgruppe 1 vil et skift af læge også betyde at personen får skiftet sikringsgruppe til gruppe 1.


Skift adresse

På denne side kan man skifte en persons adresse.

Man kan indtaste postnummer, postdistrikt, kommunekode, vejkode, husnummer, og vejnavn.

Hvis man lader felter stå blanke vil DTG generere tilfældige værdier.


Skift personnnummer

På denne side kan man skifte en person personnummer. Det gøres ved at indtaste et personnummer.

På detaljesiden for den person, som har fået skiftet personnummer, vil nu findes et link til den nye person, der er skiftet til.


Marker som afdød

På denne side kan man markere en person som afdød.

Handlingen er permanent og kan ikke fortrydes.

Personen, der er blevet markeret som afdød, kan ikke redigeres efterfølgende.


Tilknytte en værge til en person

På denne side kan man tilknytte en værge til en person.

Man kan vælge mellem tre forskellige typer af relation:

  •  'Værge findes ikke i CPR' - her bruges kun værgens navn
  •  'Værges Personnummer findes' - her bruges personnummer
  •  'Værges adresse findes' - her bruges en adresse, som skrives i felterne Tekst 1 - 5

Hvis man lader typen eller felter stå blanke vil DTG generere tilfældige værdier.


Skift navn

På denne side kan man skifte navn for en person.

Man kan indtaste fornavn, mellemnavn, og efternavn.

Hvis man lader felter stå blanke vil DTG generere tilfældige værdier.


Privatmarker adresse

På denne side kan man vælge om personen skal have markeret sin adresse som privat.

Man kan enten vælge at privatmarkere adressen eller, hvis den allerede er privatmarkeret, fjerne markeringen igen.


Fratag autorisation

På denne side kan man fratage en tildelt autorisation.

Man vælger i listen en autorisationkode og kan fratage personen denne.

Personen kan få tildelt samme autorisationskode igen på siden Opret ny autorisation.


Script

De endpoints som klienten bruger til at oprette personer og events med er ligeledes tilgængelige for anvendere således at de f.eks. kan udvikle egne integrationer eller blot simple scripts til oprettelse af ny testdata. NSP offentliggør kildekode for DTG projektet og her kan man under "modules/webservice/src/main/resources" finde Swagger filen swagger.yml som beskriver input og output til de forskellige endpoints.

Eksempler

Følgende er et eksempel på hvordan man får oprettet en enkelt person, tildelt en autorisation og listet sine data. Under "modules/webservice/src/test/curl" kan man finde yderligere eksempler.

Opret

Antag at filen opret.json indeholder følgende:

Code Block
languagejs
{
	"person" : {}
}

Hvis vi så udfører følgende kommando:

Code Block
curl -v --user brugernavn:kodeord --header "Content-Type: application/json" \
		--data-binary @opret.json https://stamdata.nspop.dk/dtg-webservice/service/persons/create

Får vi følgende tilbage:

Code Block
languagejs
{  
   "entity_id":"1907813173",
   "person":{  
      "gaeldendeCpr":"1907813173",
      "koen":"M",
      "foedselsdato":"1981-07-19",
      "stilling":"Journalist",
      "navnTilAdressering":"Søren Møller",
      "coNavn":"",
      "lokalitet":"",
      "vejnavnTilAdressering":"Strandvejen",
      "bynavn":"",
      "postnummer":1758,
      "postDistrikt":"København V",
      "kommuneKode":161,
      "vejKode":6214,
      "husnummer":"36",
      "etage":"",
      "sideDoerNummer":"",
      "bygningsnummer":"",
      "vejnavn":"Strandvejen",
      "fornavn":"Søren",
      "mellemnavn":"",
      "efternavn":"Møller",
      "foedselsregistreringsstedKode":"7223",
      "foedselsregistreringsstedTekst":"Sæby Sogn",
      "folkekirkeForhold":"U",
      "folkekirkeStartDato":"1981-07-19T16:40:29.284+02:00",
      "kommunaleForholdType":"4",
      "kommunaleForholdKode":"740",
      "kommunaleForholdStartDato":"1981-07-19T16:40:29.284+02:00",
      "valgKode":1,
      "valgretDato":"1999-07-19T16:40:29.284+02:00",
      "valgOplysningerStartDato":"1999-07-19T16:40:29.284+02:00",
      "civilstand":"U",
      "aegtefaelleCpr":"",
      "aegtefaelleFoedselsDato":"",
      "aegtefaelleNavn":"",
      "civilstandStartDato":"",
      "separationStartDato":"",
      "civilstandSeparationHenvisning":"",
      "separationCivilstandHenvisning":"",
      "morNavn":"Lone Bach",
      "morFoedselsdato":"1956-07-19T15:40:29.284+01:00",
      "farCpr":"1301086233",
      "morDato":"1981-07-19T16:40:29.284+02:00",
      "farDato":"1981-07-19T16:40:29.284+02:00",
      "tilflytningsDato":"",
      "tilflytningKommuneDato":"1981-07-19T16:40:29.284+02:00",
      "fraflytningKommuneKode":0,
      "fraflytningKommuneDato":"",
      "startMyndighedAdr":740,
      "statsborgerskabLandekode":5100,
      "statsborgerskabStartDato":"1981-07-19T16:40:29.284+02:00",
      "startDatoAdr":"1981-07-19T16:40:29.284+02:00",
      "sletDatoAdr":"",
      "yderNr":"415875",
      "ikraftDatoYder":"1981-07-19T16:40:29.284+02:00",
      "regDatoYder":"1981-07-19T16:40:29.284+02:00",
      "sikrGrpKode":"1",
      "ikraftDatoGrp":"1981-07-19T16:40:29.284+02:00",
      "regDatoGrp":"1981-07-19T16:40:29.284+02:00",
      "sikrKomKode":"161",
      "ikraftDatoKomKode":"1981-07-19T16:40:29.284+02:00",
      "alder":"35",
      "folgerskabsperson":"1301086233",
      "bevisDato":"1981-07-19T16:40:29.284+02:00",
      "navn":"Søren Møller",
      "statsborgerskabKode":"DK",
      "statsborgerskab":"Denmark",
      "owner":"test",
      "created":"2016-12-21T15:40:29+01:00",
      "readOnly":false
   },
   "autorisationer":[  

   ],
   "events":[  

   ],
   "prescriptionLimitations": [
   
   ],
   "permissions": {
    "authorizePerson": true,
    "assignPharmacy": true,
    "assignParent": true,
    "issueSpecialHealthInsuranceCard": true,
    "relinquishPerson": true,
    "limitPrescription": false
  }
}


Et eksempel på en person med en given fødselsdag (opret.json):

Code Block
languagejs
{
  "person": {
    "foedselsdato": "2021-06-18T12:00:00.092Z"
  }
}


Et eksemple på en person med et givent personnummer (opret.json) - erstat 'xxxx' med noget fornuftigt:

Code Block
languagejs
{
  "person": {
    "personnummer": "180621xxxx"
  }
}

Autorisation

Antag at filen autorisation.json indeholder følgende:

Code Block
languagejs
{
	"person" : {
		"entity_id" : "1907813173"
	},
	"autorisation" : {
		"autorisationsId" : "A1B2C"
	},
	"yder" : {
		"yderNr" : "123456"
	}
}

Hvis vi så udfører følgende kommando:

Code Block
curl -v --user brugernavn:kodeord --header "Content-Type: application/json" \
		--data-binary @autorisation.json https://stamdata.nspop.dk/dtg-webservice/service/persons/authorize

Får vi følgende tilbage:

Code Block
languagejs
{  
   "entity_id":"1907813173",
   "person":{  
      "gaeldendeCpr":"1907813173",
      "koen":"M",
      "foedselsdato":"1981-07-19",
      "stilling":"Journalist",
      "navnTilAdressering":"Søren Møller",
      "coNavn":"",
      "lokalitet":"",
      "vejnavnTilAdressering":"Strandvejen",
      "bynavn":"",
      "postnummer":1758,
      "postDistrikt":"København V",
      "kommuneKode":161,
      "vejKode":6214,
      "husnummer":"36",
      "etage":"",
      "sideDoerNummer":"",
      "bygningsnummer":"",
      "vejnavn":"Strandvejen",
      "fornavn":"Søren",
      "mellemnavn":"",
      "efternavn":"Møller",
      "foedselsregistreringsstedKode":"7223",
      "foedselsregistreringsstedTekst":"Sæby Sogn",
      "folkekirkeForhold":"U",
      "folkekirkeStartDato":"1981-07-19T16:40:29.284+02:00",
      "kommunaleForholdType":"4",
      "kommunaleForholdKode":"740",
      "kommunaleForholdStartDato":"1981-07-19T16:40:29.284+02:00",
      "valgKode":1,
      "valgretDato":"1999-07-19T16:40:29.284+02:00",
      "valgOplysningerStartDato":"1999-07-19T16:40:29.284+02:00",
      "civilstand":"U",
      "aegtefaelleCpr":"",
      "aegtefaelleFoedselsDato":"",
      "aegtefaelleNavn":"",
      "civilstandStartDato":"",
      "separationStartDato":"",
      "civilstandSeparationHenvisning":"",
      "separationCivilstandHenvisning":"",
      "morNavn":"Lone Bach",
      "morFoedselsdato":"1956-07-19T15:40:29.284+01:00",
      "farCpr":"1301086233",
      "morDato":"1981-07-19T16:40:29.284+02:00",
      "farDato":"1981-07-19T16:40:29.284+02:00",
      "tilflytningsDato":"",
      "tilflytningKommuneDato":"1981-07-19T16:40:29.284+02:00",
      "fraflytningKommuneKode":0,
      "fraflytningKommuneDato":"",
      "startMyndighedAdr":740,
      "statsborgerskabLandekode":5100,
      "statsborgerskabStartDato":"1981-07-19T16:40:29.284+02:00",
      "startDatoAdr":"1981-07-19T16:40:29.284+02:00",
      "sletDatoAdr":"",
      "yderNr":"415875",
      "ikraftDatoYder":"1981-07-19T16:40:29.284+02:00",
      "regDatoYder":"1981-07-19T16:40:29.284+02:00",
      "sikrGrpKode":"1",
      "ikraftDatoGrp":"1981-07-19T16:40:29.284+02:00",
      "regDatoGrp":"1981-07-19T16:40:29.284+02:00",
      "sikrKomKode":"161",
      "ikraftDatoKomKode":"1981-07-19T16:40:29.284+02:00",
      "alder":"35",
      "folgerskabsperson":"1301086233",
      "bevisDato":"1981-07-19T16:40:29.284+02:00",
      "navn":"Søren Møller",
      "statsborgerskabKode":"DK",
      "statsborgerskab":"Denmark",
      "owner":"test",
      "created":"2016-12-21T15:40:29+01:00",
      "readOnly":false
   },
   "autorisationer":[  
      {  
         "autorisationsId":"A1B2C",
         "uddannelseskode":"5158",
         "created":"2016-12-21T15:59:17+01:00"
      }
   ],
   "events":[  
      {  
         "id":187547,
         "title":"Tilknyttet yder",
         "description":"Personen blev tilknyttet yderen med ydernummeret 123456",
         "created":"2016-12-21T15:59:17+01:00"
      },
      {  
         "id":187548,
         "title":"Autoriseret",
         "description":"Personen fik tildelt autorisationskoden A1B2C med uddannelseskoden 5158",
         "created":"2016-12-21T15:59:17+01:00"
      }
   ],
   "prescriptionLimitations": [
   
   ],
   "permissions": {
    "authorizePerson": true,
    "assignPharmacy": true,
    "assignParent": true,
    "issueSpecialHealthInsuranceCard": true,
    "relinquishPerson": true,
    "limitPrescription": true
  }
}

List

Antag at filen list.json indeholder følgende:

Code Block
languagejs
{ }

Hvis vi så udfører følgende kommando:

Code Block
curl -v --user brugernavn:kodeord --header "Content-Type: application/json" \
		--data-binary @list.json https://stamdata.nspop.dk/dtg-webservice/service/persons/list

Får vi følgende tilbage:

Code Block
languagejs
{  
   "persons":[  
      {  
         "entity_id":"1907813173",
         "created":"2016-12-21T15:40:29+01:00",
         "fornavn":"Søren",
         "mellemnavn":"",
         "efternavn":"Møller",
         "gaeldendeCpr":"1907813173"
      }
   ]
}

Kendte fejl

Der er i øjeblikket følgende kendte udeståender. Eventuel workaround er beskrevet i sagerne:

Jira
serverNSI JIRA
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
maximumIssues20
jqlQueryproject = SDS and component = DynamiskTestdataGenerator and status in ("Deployet Test1","Deployet Test2","Klar til planlægning","Klar til godkendelse", "Klar til udv. estimering", "Under QA") order BY updated DESC
serverIde64c3bc3-001c-3439-bc53-f7a235a8cd61