Detta dokument beskriver testsviten för GetMedicationHistory 2.0. Testsviten innehåller ett antal testfall som kan användas för att verifiera implementationen innan integrationen med den nationella tjänsteplattformen.
Testsviten innehåller ett antal testfall som kan användas för att samla in information om anslutande system. Denna information kan sedan ligga till grund för ett underlag för godkännande.
Ett testfall med ej förväntat utfall ska med andra ord ses som en informationskälla för den avvikelse som ska rapporteras i självdeklarationen.
I dessa fall rekommenderas mer omfattande tester och en utförlig dokumentation av vad man observerat, för att informationen redan i första granskningsrundan skall vara tillräcklig för beslut.
Detta underlag för godkännande kommer att granskas av ICC på Inera som rapporterar avvikelser. Dessa granskas därefter av Ineras avvikelsegrupp. Utkomsten av denna granskning kan leda till en eller flera avvikelser av tre olika typer där en avvikelse kan anses vara:
Innan man kör testfallen i SoapUI så måste den data som skickas med i anropen anpassas utifrån det system som man vill testa. Detta görs genom att ändra i filen data.xml enligt nedan.
Filen är i XML-format och i början finns en sektion som heter "globaldata". Här anger man den konfiguration som kommer att användas av alla testfall.
Varje element i "globaldata" kan omdefinieras för ett specifikt testfall vid behov. Följande element är globala:
De parametrar man anger för ett specifikt testfall kompletterar och/eller omdefinierar de parametrar som anges i "globaldata".
Det betyder att både parametrar från "globaldata" och det specifika testfallets sektion i filen används för det aktuella testfallet.
OBS! Om en parameter med samma namn definieras både i "globaldata" och specifikt för testfallet, så kommer värdet från testfalls-sektionen att användas.
Ett exempel kan vara "patientId". Denna definieras i "globaldata", eftersom det är troligt att det mesta av testdatan kommer att röra samma patient.
Men för vissa testfall vill man kunna använda en annan patient och för dessa testfall definierar man detta genom att ta bort kommentars-markeringen runt parametern "patientId" i testfallets sektion.
Glöm inte att spara data.xml efter att du har ändrat i den.
- 1.1.1 Personnummer
Filtrering. Verifierar att resultatet endast innehåller poster för given patient.
- 1.1.2 Samordningsnummer
Filtrering. Testfall för filtrering på samordningsnummer. Ersätt patientId med det samordningsnummer som du vill filtrera på.
Testfalls-specifika parametrar
- 1.1.3 Lokalt reservnummer
Filtrering. Testfall för filtrering på Nationellt reservID. Ersätt patientId med det NRID som du vill filtrera på.
Testfalls-specifika parametrar
- 1.2 Tidsfiltrering
Följande tester på tidsfiltrering består av flera steg.
- Anrop utan filtrering.
- Sökintervall beräknas (se respektive testfall).
- Anrop med tidsfiltrering för varje beräknat sökintervall. Resultatet jämförs med förväntat resultat.
För bra testning på dessa punkter är en varierad testdata avseende tidpunkter viktig.
Om möjligt bör poster med följande egenskaper vara registrerade:
- Läkemedel med ordinationstidpunkt och tidpunkt för behandlingens avslutande. I detta fall ska inte startOfTreatment vara med i filtreringsutvärderingen, så det spelar ingen roll vad den är satt till.
- Läkemedel med ordinationstidpunkt utan tidpunkt för behandlingens avslutande. I detta fall ska inte startOfTreatment vara med i filtreringsutvärderingen, så det spelar ingen roll vad den är satt till.
- Läkemedel utan ordinationstidpunkt, men med starttidpunkt för behandlingen (ej möjlig att åstadkomma för alla tjänsteproducenter) Man väljer själv om endOfTreatment ska vara med eller inte i denna post.
- Läkemedel utan ordinationstidpunkt, och utan starttidpunkt för behandlingen, med authorTime i header (ej möjlig att åstadkomma för alla tjänsteproducenter) Man väljer själv om endOfTreatment ska vara med eller inte i denna post.
- 1.2.1 DatePeriod
Tidsfiltrering. Sökning sker på alla datum i elementen prescriber.authorTime, accountableHealthcareProfessional.authorTime, startOfTreatment och endOfTreatment i det ofiltrerade svaret.
-
prescriber.authorTime är tidpunkt för ordination/beslut.
-
accountableHealthcareProfessional.authorTime är tidpunkt för registrering.
-
startOfTreatment är tidpunkt för insättning.
-
endOfTreatment är tidpunkt för utsättning.
- 1.2.2 DatePeriod intervall
Tidsfiltrering. Sökning sker på slumpvisa intervall mellan första och sista datum som förekommer i det ofiltrerade svaret.
Testfalls-specifika parametrar
- 1.2.3 DatePeriod tomt svar
Tidsfiltrering. Sökning sker på datum före alla tidpunkter i det ofiltrerade svaret, så att förväntat svar är tomt (inga informationsposter).
- 1.2.4 DatePeriod manuell
Tidsfiltrering. Sökintervall sätts manuellt. Detta kan användas för utforskade testning och felsökning.
Testfalls-specifika parametrar
- datePeriodStart
- datePeriodEnd
- 1.3 CareUnit
Filtrering. Verifierar att resultatet endast innehåller poster för given vårdenhet.
Testfalls-specifika parametrar
- 1.4 SourceSystem
Filtrering. Verifierar att resultatet endast innehåller poster för givet källsystem.
- 1.5 CareContact
Filtrering. Verifierar att resultatet endast innehåller poster för given vårdkontakt.
careContactId är vårdkontaktens unika id.
Testfalls-specifika parametrar
- 1.6 CareGiver
Filtrering. Verifierar att resultatet endast innehåller poster för given vårdgivare.
Testfalls-specifika parametrar
- 1.7 SoapFault
Verifierar att responsen är ett Soapfault. Detta testfall kräver att tjänsteproducenten skapar förutsättningar för ett internt fel att uppstå.
Manuell kontroll av svarsmeddelandet krävs för att säkerställa att meddelandet inte innehåller personuppgifter eller att medföljande log-id är spårbart till patienten.
Exempel kan vara att man stänger av kopplingen mot databas.
- 1.8 NonExisting Patient
Verifierar att tjänsteproducenten returnerar ett tomt resultat istället för Soap Fault, om patienten är okänd i systemet.
Testfalls-specifika parametrar
- 1.9 NonExisting CareContact
Verifierar att tjänsteproducenten returnerar ett tomt resultat istället för Soap Fault, om vårdkontakten är okänd i systemet.
Testfalls-specifika parametrar
- sourceSystemHSAId
- careContactId
- 1.10 prescriptionChainId
Filtrering. Verifierar att resultatet endast innehåller poster för given ordinationskedja Element prescriptionChainId
Om producenten saknar stöd för ordinationskedjor, så returneras alla poster med angiven status (och som möter övriga sökvillkor)
Testfalls-specifika parametrar
- ChainIdRoot
- ChainIdExtension
- 1.11 prescriptionStatus_Active
Filtrering. Verifierar att resultatet endast innehåller ordinationer med status "Active". Element prescriptionStatus
Testfalls-specifika parametrar
- 1.12 prescriptionStatus_Inactive
Filtrering. Verifierar att resultatet endast innehåller ordinationer med status "Inactive". Element prescriptionStatus
Testfalls-specifika parametrar
- 2.1 Encoding_HeaderProlog
Verifierar att
- Header-attributet "Content-type" har, om attributet finns, en teckenuppsättning som är satt till UTF-8 eller UTF-16
- Attributet "XML Prolog" har, om attributet finns, en teckenuppsättning som är satt till UTF-8 eller UTF-16
- Om båda attributen finns så ska de vara lika
- 2.2 Encoding_SpecialCharacters
Verifierar att responsen innehåller en sträng med specialtecken.
Denna sträng behöver läggas upp på en post i källsystemet och bör innehålla så många specialtecken som möjligt.
Testfalls-specifika parametrar
- 3.1 VG_VE
Verifierar att alla returnerade poster innehåller elementen healthcareProfessionalCareUnitHSAId och healthcareProfessionalCareGiverHSAId, som krävs för PDL-loggning.
- 3.2 AuthorTime
Verifierar att en av de returnerade posterna innehåller tidpunkt då informationen registrerades. Element authorTime.
- 4.1 ApprovedForPatient_true
Verifierar att tjänsteproducenten kan returnera en post som talar om att informationen får delas till patient. Element approvedForPatient.
- 4.2 ApprovedForPatient_false
Verifierar att tjänsteproducenten kan returnera en post som talar om att informationen inte får delas till patient. Element approvedForPatient.
- 5.1 signed
Verifierar att tjänsteproducenten kan returnera en signerad post. Element legalAuthenticator.
- 5.2 unsigned
Verifierar att tjänsteproducenten kan returnera en osignerad post. Element legalAuthenticator.
- 5.3 locked
Verifierar att tjänsteproducenten kan returnera en post som har låsts av systemet efter att en viss tid har förflutit utan att någon har signerat den. Element legalAuthenticator.
- 5.4 typeOfPrescription_Utsättning
Verifierar att tjänsteproducenten kan returnera en post med ordinationstyp "utsättning" som beskriver avslut av läkemedelsbehandling. Element typeOfPrescription.
- 5.5 typeOfPrescription_Insättning
Verifierar att tjänsteproducenten kan returnera en post med ordinationstyp "insättning" som används när läkemedlet är insatt, dvs. även en ändrad eller förnyad ordination har typen insättning. Element typeOfPrescription.
- 5.6 prescriptionStatus_Active
Verifierar att tjänsteproducenten kan returnera en post med ordinationsstatus "Active". Element prescriptionStatus.
- 5.7 prescriptionStatus_Inactive
Verifierar att tjänsteproducenten kan returnera en post med ordinationsstatus "Inactive". Element prescriptionStatus.
- 5.8 treatmentPurpose
Verifierar att tjänsteproducenten kan returnera en post med behandlingsändamål. Element treatmentPurpose.
- 5.9 prescriptionChains
Verifierar att tjänsteproducenten kan returnera en post med som beskriver en ordinationskedja. Elementen prescriptionChainId, precedingPrescriptionId och succeedingPrescriptionId.
- 5.10 prescriber_Name
Verifierar att tjänsteproducenten kan returnera en post med namnet på ordinatören. Element prescriber.healthcareProfessionalName.
- 5.11 prescriber_orgUnitName
Verifierar att tjänsteproducenten kan returnera en post med den organisation som ordinatören är uppdragstagare på. Element prescriber.healthcareProfessionalOrgUnit.orgUnitName.
- 5.12 evaluator_Name
Verifierar att tjänsteproducenten kan returnera en post med den hälso- och sjukvårdsperson/-enhet som utvärderat utfallet av ordinationen/förskrivningen. Element evaluator.healthcareProfessionalName.
- 5.13 evaluator_orgUnitName
Verifierar att tjänsteproducenten kan returnera en post med den organisation som utvärderande person är uppdragstagare på. Element evaluator.healthcareProfessionalOrgUnit.orgUnitName.
- 5.14 selfMedication_false
Verifierar att tjänsteproducenten kan returnera en post med egenmedicering satt till "false". Element selfMedication.
- 5.15 selfMedication_true
Verifierar att tjänsteproducenten kan returnera en post med egenmedicering satt till "true" (om ordinationen är utfärdad av patienten själv). Element selfMedication.
- 5.17 drug_unstructuredDrugInformation
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "unstructuredDrugInformation" (fritextval/extemporeberedning). Element medicationPrescription.drug.unstructuredDrugInformation.
- 5.18 drug_merchandise
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "merchandise" (handelsvara). Element medicationPrescription.drug.merchandise.
- 5.19 drug_drugArticle
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "drugArticle" (läkemedelsartikel). Element medicationPrescription.drug.drugArticle.
- 5.20 drug_routeOfAdministration
Verifierar att tjänsteproducenten kan returnera en post med administreringssätt som beskriver hur produkten skall intas/administreras. Element medicationPrescription.drug.drug.routeOfAdministration.
- 5.21 drug_pharmaceuticalForm
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsform enligt SIL (t.ex Tablett). Element medicationPrescription.drug.drug.pharmaceuticalForm.
- 5.22 drug_strength
Verifierar att tjänsteproducenten kan returnera en post med styrka enligt SIL (t.ex 20.0). Element medicationPrescription.drug.drug.strength.
- 5.23 drug_strengthUnit
Verifierar att tjänsteproducenten kan returnera en post med enhet på styrka enligt SIL (t.ex. mg). Element medicationPrescription.drug.drug.strengthUnit.
- 5.24 generics_strength
Verifierar att tjänsteproducenten kan returnera en post med styrka på generiskt läkemedel. Element medicationPrescription.drug.generics.strength.
- 5.25 generics_form
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsform på generiskt läkemedel. Element medicationPrescription.drug.generics.form.
- 5.26 drug_dosage
Verifierar att tjänsteproducenten kan returnera en post med dosering (mängd och periodicitet). Element medicationPrescription.drug.dosage.
- 5.27 dispAuth_unstructuredDrugInformation
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "unstructuredDrugInformation" (fritextval/extemporeberedning. Element dispensationAuthorization.drug.unstructuredDrugInformation.
- 5.28 dispAuth_merchandise
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "merchandise" (handelsvara). Element dispensationAuthorization.drug.merchandise.
- 5.29 dispAuth_drugArticle
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "drugArticle" (läkemedelsartikel). Element dispensationAuthorization.drug.drugArticle.
- 5.30 dispAuth_drug
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsprodukt. Element dispensationAuthorization.drug.drug
- 5.31 dispAuth_generics
Verifierar att tjänsteproducenten kan returnera en post med generiska läkemedel. Element dispensationAuthorization.drug.generics.
- 5.32 admin_routeOfAdministration
Verifierar att tjänsteproducenten kan returnera en post med administreringssätt som beskriver hur produkten skall intas/administreras. Element administration.routeOfAdministration.
- 5.33 admin_unstructuredDrugInformation
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "unstructuredDrugInformation" (fritextval/extemporeberedning. Element administration.drug.unstructuredDrugInformation.
- 5.34 admin_merchandise
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "merchandise" (handelsvara). Element administration.drug.merchandise.
- 5.35 admin_drugArticle
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsval "drugArticle" (läkemedelsartikel). Element administration.drug.drugArticle.
- 5.36 admin_drug
Verifierar att tjänsteproducenten kan returnera en post med läkemedelsprodukt. Element administration.drug.drug.
- 5.37 admin_generics
Verifierar att tjänsteproducenten kan returnera en post med generiska läkemedel. Element administration.drug.generics.
- 5.38 admin_dosage
Verifierar att tjänsteproducenten kan returnera en post med dosering (mängd och periodicitet). Element administration.drug.dosage.
- 6.1 Loadtest
6.1.1 Grund
Syftet med testet är dels att verifiera att systemet kan hantera minst 10 samtidiga trådar, dels att skapa sig en bild av systemets prestanda. Testet är designat att ta max 3 minuter.
I SLA-kapitlet i självdeklarationen, under "Övrig kommentar", ange genomsnittlig responstid. Ta värdet som visas i sista raden i kolumn "avg" och dela med antal anrop (oftast 2). Ange sedan värdet med enhet millisekunder (ms).
6.1.2 Uthållighet
Syftet med testet är att undersöka prestanda hos systemet över längre tid (30 minuter). I SLA-kapitlet i självdeklarationen, under "Övrig kommentar", notera om testet gick att genomföra utan problem. Om inte, notera hur lång tid det var möjligt att köra.
Testfalls-specifika parametrar
- 6.2 Recovery
6.2.1 Återhämtning
Syftet med testet är att utsätta systemet för maximal last och att verifiera att systemet automatiskt återhämtar sig. För att kontrollera att systemet har kunnat återhämta sig efter maximal last så rekommenderas att köra testfall "1.1.1 Personnummer" för att se att systemet svarar. I SLA-kapitlet i självdeklarationen, under "Övrig kommentar", notera om systemet kunde återhämta sig efter att ha utsatts för maximal last. Ange även hur många trådar som testet avslutades med.
Testfalls-specifika parametrar
- 7.1 CareUnit_Blacklisted
Filtrering. Verifierar att tjänsteproducenten kan filtrera resultatet baserat på tjänstekonsumentHSAId (HTTP-headern x-rivta-original-serviceconsumer-hsaid).
Undersök och jämför det ofiltrerade svaret från producenten med det senare svaret vars begäran använt ett tjänstekonsumentHSAId på vilket producenten utfört bortfiltrering av vårdenhet,
antalet poster skall i det senare svaret vara färre och parametern filterString skall då inte finnas i det filtrerade svaret. Testfallet är ej applicerbart för system som inte implementerat denna typ av filtrering.
Testfalls-specifika parametrar
- httpHeaderHsaId2
- filterString
- 7.2 Consumer_Blacklisted
Filtrering. Verifierar att tjänsteproducenten returnerar tomt svar för bortfiltrerat tjänstekonsumentHSAId (HTTP-headern "x-rivta-original-serviceconsumer-hsaid").
Undersök och jämför det ofiltrerade svaret från producenten med det senare svaret vars begäran använt ett tjänstekonsumentHSAId på vilket producenten utfört bortfiltrering av konsument,
Testfallet är ej applicerbart för system som inte implementerat denna typ av filtrering.
Testfalls-specifika parametrar
- 7.3 ConsumerIndependent
Verifierar att tjänsteproducenten returnerar samma svar oavsett vilket tjänstekonsumentHSAId (HTTP-headern "x-rivta-original-serviceconsumer-hsaid") som anges.
Testfalls-specifika parametrar
- 8 Testdata
Verifiering av testdata. Verifiering att intervall bildat av elementen prescriber.authorTime eller accountableHealthcareProfessional.authorTime eller startOfTreatment och endOfTreatment (om det finns) förekommer i testdata.
-
prescriber.authorTime är tidpunkt för ordination/beslut.
-
accountableHealthcareProfessional.authorTime är tidpunkt för registrering.
-
startOfTreatment är tidpunkt för insättning.
-
endOfTreatment är tidpunkt för utsättning.
- 8.1 AuthorTimeBody_EndOfTreatment
Verifierar att det finns testdata som använder ordinationstidpunkt och utsättningstidpunkt.
- 8.2 StartOfTreatment_EndOfTreatment
Verifierar att det finns testdata som använder insättningstidpunkt och utsättningstidpunkt.
- 8.3 AuthorTimeHeader_EndOfTreatment
Verifierar att det finns testdata som använder registreringstidpunkt och utsättningstidpunkt.
- 8.4 AuthorTimeBody
Verifierar att det finns testdata som använder ordinationstidpunkt men saknar utsättningstidpunkt.
- 8.5 StartOfTreatment
Verifierar att det finns testdata som använder insättningstidpunkt men saknar utsättningstidpunkt.
- 8.6 AuthorTimeHeader
Verifierar att det finns testdata som använder registreringstidpunkt men saknar utsättningstidpunkt.