Formatspecifikation CSV
- Elin Åkerblom
- Jenny Axelsson
- Anders Planting (Unlicensed)
- Carola Anetoft
Som ett alternativ till XML exportformatet tillhandahåller Stöd- och behandlingsplattformen utdata i CSV format (komma-separerade värden). Den komma-separerade datafilen innehåller data från behandlingar i ett tvådimensionellt upplägg, lämpligt för bearbetning och beräkning i program som tillhandahåller en tabellvy, där jämförbar data från olika behandlingar sorteras i kolumner. Exempelvis hamnar datum för när de exporterade behandlingarna påbörjades under varandra i samma kolumn. Varje data-rad motsvarar vidare information om en behandling som en invånare genomgår/genomgått.
Stöd- och behandlingsplattformen tillåter en användare med behörigheten DataAdmin att exportera behandlingsinformation från den vårdenhet som användaren har medarbetaruppdrag i. Stöd- och behandlingsplattformen kan, utifrån en urvalsfunktion, generera en export-XML. Denna fil konverteras vidare till en CSV, för närvarande via en separat tjänst (CSV-generatorn). Tjänsten tillhandahåller en webbsida där användaren ges möjlighet att välja skiljetecken, teckenkodning samt att peka ut den XML fil som ska konverteras till CSV. Notera att Stöd- och behandlingsplattformens exportfunktionalitet komprimerar ihop XML filen till en ZIP fil. ZIP filen måste packas upp innan den kan pekas ut i CSV-konverteringsverktyget.
Informationsinnehållet i CSV filen är begränsat till att som mest kunna innehålla den information som XML-filen innehåller.
Teckenkodning
CSV-filen är textbaserad och kan väljas att kodas antingen i UTF-8 eller ISO-8859-1. Den teckenkodning du väljer måste stämma överens med teckenkodningen som systemet eller programmet använder som du vidare vill importera CSV-filen i. Oftast ges möjlighet att välja teckenkodning i samband med att du importerar filen. Ett tydligt resultat av att fel teckenkodning valts är att svenska tecken (Å, Ä, Ö) blir förvanskade.
CSV-filen som genereras innehåller teckenkodningen i filnamnet för att göra det tydligare när den ska vidare importeras.
Skiljetecken
I standardläge genereras kommatecken som skiljetecken mellan data. Detta medför i sin tur att kommatecken blir ett "förbjudet" tecken i allt datainnehåll så som svarstexter som invånare skrivit i formulärsvar eller kommatecknet i resultatvärden. I sådant fall kommer CSV generatorn att ersätta kommatecken med blanksteg i texter och med punkt (.) i resultatvärden.
CSV generatorn tillhandahåller dock möjligheten att definiera andra skiljetecken. Detta är användbart om användaren önskar få decimaltecknet som kommatecken i resultatvärdena istället för punkt. Det tecken som då väljs som skiljetecken kommer i sin tur att bli ett "förbjudet" tecken och därmed ersättas av CSV generatorn i exempelvis svarstexter.
Varje rad (motsvarande hjälprubrikerna eller information från en behandling) avgränsas med ett radbryt. I CSV-filen motsvaras detta av de två bytes "0x0d, 0x0a" (hexadecimala tal). Det betyder således att även dessa tecken är "förbjudna" tecken i datainnehållet. Om vagnretur/radbryt finns i exempelvis en svarstext i ett formulärsvar kommer detta att ersättas av ett blanksteg av CSV generatorn.
Exempel på genererad data
När CSV filen vidare importeras till ett program så som exempelvis Excel, kommer data att delas upp så att data organiseras i separata celler, baserat på skiljetecknen och radbryten:
Definition av radrubriker (hjälp-rader överst i CSV:n)
De första raderna i CSV filen representeras av kolumnrubriker. Genom att exportera multipla rubrikrader, där varje datakolumn får flera rader med tillhörande rubriker, kan ytterligare hjälpinformation om kolumnen exporteras. Om exempelvis en kolumn gäller data från formulärsvar kan kolumnen kompletteras med information om mall-id för den formulärmall som var grund för formuläret. Vidare kan versionen för formulärmallen eller frågetexten visas.
Rubrikrad 1 håller en etikett/namn som visar vad för data som kolumnen innehåller (förutom första cellen på rad 1, kolumn 1, som är ett specialfall).
Se rubriken Definition på kolumnrubriker längre ner för kolumnernas definition och namnsyntax. De följande rubrikraderna är hjälp-rubriker med mera information som tillhör kolumninnehållet. Varje hjälp-rubrik är applicerbar för en delmängd av kolumnerna. För kolumner där rubriker ej är applicerbara står det NA (= NotApplicable) i cellen. Här följer definitionen på de översta rubrik-raderna.
Definition på kolumnrubriker
Rubrikrad X | Namn | Beskrivning |
---|---|---|
1 | Etikett/namn på kolumn | Översta raden består av kolumnrubriker som beskriver kolumninnehållet. Se kapitlet Kolumn-namnsättning på första rubrikraden för vidare definition av kolimnrubrikerna |
2 | HandlerHSAId | HSAId för behandlaren. Kolumner som inte berör data om behandlaren har värdet NA |
3 | FormTemplateId | Anger unikt id (UUID) för formulärmallen som har varit till grund för formulärinstansen. Kolumner som inte berör formulärinformation har värdet NA |
4 | FormTemplateVersion | Version för formulärmallen som har varit till grund för formulärinstansen. Kolumner som inte berör formulär har värdet NA |
5 | FormInstanceIndex | Index/räknare som identifierar instanser av formulär. Denna räknare är till hjälp för att enkelt kunna se vilka kolumner i en datarad härstammar från samma formulärinstans. Räknaren börjar på 1 och ökas för varje nytt formulär som visas på en rad. Räknaren ska inte ses som en identiferare av en specifik formulärinstans för en specifik behandling/moment. Räknaren är endast till för att enkelt gruppera kolumnerna visuellt i CSV uttaget. |
6 | FormType | Visar om formuläret är en del av ett mätbatteri, en del av en aktivitetsplan eller ett fristående formulär. Giltiga värden är MEASUREMENT_BATTERY_FORM|ACTIVITY_PLAN_FORM|FORM. Kolumner som innehåller resultat märks med RESULT. |
7 | FormName | Namn på formuläret. Kolumner som inte berör data gällande formulärfrågor/svar har värdet NA |
8 | FormQuestion | Fråga i formuläret. Kolumner som inte berör data gällande formulärfrågor/svar har värdet NA. Kolumner som tillhör samma formulärinstans föregås av en kolumn som visar datum för formuläret. För de kolumnerna märks FormQuestion med strängen "FORM_DATE" |
9 | FormInputType | Inmatningstyp för frågan. Visar vad för typ av inmatningsgränssnitt som frågan har i formuläret, exempelvis enkelt textinmatningsfält, lista med förval, flervalslista mm. Giltiga värden är TEXT|TEXTAREA|CHECKBOX|RADIO|SELECT|NUMBER|RANGE|MATRIXRADIO|MATRIXCHECKBOX|SCALE |
10 | FormAnswerAlternatives | Svarsalternativ för formulärfrågor som har flera förutbestämda svarsalternativ. Kolumner som inte berör data gällande formulärfrågor/svar med flerval har värdet NA |
11 | MeasurementBatteryName | Namn på mätbatteri, i de fall som kolumnen innehåller svar från formulär från mätbatterier. Kolumner som inte berör data gällande formulärfrågor/svar från mätbatterier har värdet NA |
12 | ResultName | Namn på resultatet. Kolumner som inte berör data gällande resultat har värdet NA |
Tidsstämplar
Samtlig data som representerar tidsstämplar i CSV-uttaget som är genererade från datum eller datum+tid från händerlser i en behandling/moment visas i formatet:
Datum och tid
CCYY-MM-DD hh:mm
Exempel: 2017-12-12 16:16
Datum - (då ingen tidsstämpel finns med i XML uttaget)
CCYY-MM-DD 00:00
Exempel: 2017-12-12 00:00
Observera:
Export-XML filen från Stöd- och behandlingsplattformen innehåller även sekunder och millisekunder för datum som inkluderar tiden. Likaså finns tidszonen angiven i XML filen för båda varianterna ovan. Millisekunderna och tidszonen filtreras bort av CSV generatorn. Detta för att underlätta för bearbetningen i exempelvis Excel.
Kolumn-namnsättning på första rubrikraden
Specialfall - Cell (1, 1)
Första cellen (rad 1, kolumn 1) visar vilka inställningar/filter användaren valde i exportgränssnittet vid export. Följande inställningar exporteras.
Attribut | Beskrivning | Datatyp/möjliga värden |
---|---|---|
exportDate | Datum för när exporten gjordes | Format enligt rubriken "Tidsstämplar" ovan. |
systemName | System som genererat exporten | "Stöd- och behandling" eller "Designverktyget" |
processName | Namn på den momentmall som valts för export | |
specifiedSelection | Visar om alla behandlingar ska exporteras eller om filtrering ska ske på kategorier, personnummer eller endast export gällande en individ (ett personnummer) | Möjliga värden är ALL|FILTER_ON_CATEGORIES|ONLY_ONE_RESIDENT|SELECT_RESIDENTS |
selectedCategories | Om filtrering valts baserat på kategorier visas de kategorier som önskats exporteras. | Den eller de kategorier som valts för export. Om mer än en kategori valts separeras kategorinamnen med tecknet "|". Exempelvis "Referensgrupp A|Referensgrupp B". Tomt om ingen filtering gjorts på kategorier. |
status | Visar om export valts för endast avslutade eller endast pågående behandlingar. | Giltiga värden är INPROGRESS|DONE|MAINTAIN |
residentInformation | Visar om personuppgifter för behandlade personer ska ingå i exporten. Om personuppgifter valts exporteras personnummer och namn för behandlade personer (NONE). Exporten kan även anonymiseras (ANONYMIZED) alternativt att personumret krypteras i kombination med att namnet utelämnas (PSEUDOANONYMIZED). Vid kryptering av personumret skapas en till synes slumpmässig kod. Denna kod är dock densamma för en specifik individ. På så sätt kan exportdata som berör en specifik individ jämföras vid olika exporttillfällen eller om olika behandlingar som specifika individer gått ska korreleras. | Möjliga värden är NONE|ANONYMIZED|PSEUDOANONYMIZED |
modulesExported | Visar om användaren valt att exportera information om moduler som ingår i behandlingen. | Möjliga värden är true|false |
messageTransactionsExported | Visar om användaren valt att exportera information om meddelanden och kommentarer som skickats under behandlingen. Endast metadata kring emddelanden kommer i så fall att skickas med så som exempelvis datum då meddelandet skickades, i vilken riktning meddelandet skickats (invånare eller behandlare skickade). HSAId och namn på behandlaren om det var behandlaren som skickade meddelandet. Meddelandetexten exporteras inte. | Möjliga värden är true|false |
linkedProcessesExported | Visar om användaren valt att även exportera Id:n för eventuellt länkade moment | Möjliga värden är true|false |
activityPlansExported | Visar om användaren valt att exportera aktivitetsplaner | Möjliga värden är true|false |
measurementBatteriesExported | Visar om användaren valt att exportera svarade formulär som ingår i mätbatterier | Möjliga värden är true|false |
formsExported | Visar om användaren valt att exportera övrigt svarade formulär osm inte ingår i mätbatterier eller asktivitetsplaner. | Möjliga värden är true|false |
startFromPeriod | Visar ett valt startdatum för period inom vilken benhandlingen påbörjades, inklusive den valda dagen. | Format enligt rubriken "Tidsstämplar" ovan. Endast datum. |
startToPeriod | Visar ett valt slutdatum för period inom vilken benhandlingen påbörjades, inklusive den valda dagen. | Format enligt rubriken "Tidsstämplar" ovan. Endast datum. Om inget datum anges, saknas detta attribut. |
endFromPeriod | Visar ett valt startdatum för period inom vilken benhandlingen avslutades, inklusive den valda dagen. | Format enligt rubriken "Tidsstämplar" ovan. Endast datum. Om inget datum anges, saknas detta attribut. |
endToPeriod | Visar ett valt slutdatum för period inom vilken benhandlingen avslutades, inklusive den valda dagen. | Format enligt rubriken "Tidsstämplar" ovan. Endast datum. Om inget datum anges, saknas detta attribut. |
De ovan nämnda attributen och deras värden konkateneras som en sträng och exporteras i cell (1, 1). Exempelvis:
exportDate=2017-01-30|systemName=Stöd- och behandlingsplattformen|processName=Depressionsbehandling|specifiedSelection=ALL|selectedCategories=Referensgrupp A|status=DONE ... o s v |
Övriga kolumnrubriker i första rubrikraden
Kolumnnamnen på första raden, efter cell (1, 1) har följande namn och innebörd. Ordningen i tabellen nedan visar även den ordning som kolumnerna genereras i CSV filen.
Kolumn-namn | Beskrivning |
---|---|
ProcessId | Unikt ID för behandlingen. Det unika ID:t pekar på instansen, d v s ett unikt ID för en behandling som invånare X deltar i. |
ProcessName | Namn på behandlingen. Alla dataceller i denna kolumn kolumn kommer att innehålla samma namn eftersom endast en behandlingstyp kan exporteras per CSV exportfil |
ProcessMajorVersion | Huvudversionsnummer på behandling. Version på en behandling representeras av <major>.<minor> exempelvis 1.1. Detta attribut innehåller <major> |
ProcessMinorVersion | Underversionsnummer på behandling. Version på en behandling representeras av <major>.<minor> exempelvis 1.1. Detta attribut innehåller <minor> |
ProcessStartDate | Datum då behandlingen påbörjades. Format enligt rubriken "Tidsstämplar" ovan. |
ProcessEndDate | Datum då behandlingen avslutades. Format enligt rubriken "Tidsstämplar" ovan. |
ProcessLastActivityDate | Senaste invånaraktivitet enligt formatet i rubriken "Tidsstämplar" ovan. Kan vara tomt om invånaren aldrig varit aktiv enligt momentets definition på aktivitet. T.ex. 2015-01-13 |
ProcessStatus | Status på behandlingen vid exportens tidpunkt.
|
ProcessTerminationReasonCode | Kod till avslutningsorsak i Snomed. Tom om behandlingen inte är avslutad, är i vidmakthållande, avslutningsorsak är satt till "Övrigt" eller om momentet avslutades innan release 1.12 (innan 24:e oktober 2017). Beskrivning av möjliga koder finns här Snomed CT |
ProcessTerminationReasonText | Beskrivning/namn på avslutningsorsak enligt konfiguration i Stöd- och behandling. Konceptnamnet för Snomed CT koden kommer inte med i CSV:n. Tom om behandlingen inte är avslutad, är i vidmakthållande, avslutningsorsak är satt till "Övrigt" eller om momentet avslutades innan release 1.12 (innan 24:e oktober 2017). |
ProcessCategory_XXX | Om filtreringen för exportuttaget baserats på kategorier kommer det att skapas en kolumn för varje kategori som valts att exporteras (enligt listan för selectedCategories i exportfiltreringen). XXX kommer att ersättas med kategorinamnet. Om exempelvis två kategorier av behandlingen filtrerats ut för att exporteras (exempelvis "Referensgrupp A" och "Referensgrupp B") kommer kolumnnamnen att bli ProcessCategory_Referensgrupp A och ProcessCategory_Referensgrupp B. Om inget filter för kategorier valts kommer denna/dessa kolumner att utelämnas i CSV:n. Sorteringsordningen av kolumnerna för kategorier följer den ordningen som Stöd- och behandlingsplattformen exporterar kategorierna i XML filen, således den ordning som kategorierna renderas i XML noderna export.selectedCategories. |
ConnectedProcessIds | Lista med behandlingar som invånare deltagit i och som är länkade till denna behandling. Listan består av det eller de unika ID för behandlingarna, motsvarande ProcessId ovan. Om den exporterade behandlingen har mer än ett länkat moment kommer de unika ID:n att konkateneras ihop i cellen, separerade med skiljetecknet "|". Exempel "c5c0b045-6208-4fcc-82af-838093ad2504|a9c69253-2e32-45fe-9201-72b92006cb15" |
ConnectedProcess_XXX | Lista med namn på behandlingar som invånare deltagit i och som är länkade till denna behandling. Listan består av det eller de namn för behandlingarna, motsvarande ProcessName ovan. Om den exporterade behandlingen har mer än ett länkat moment kommer namnen att konkateneras ihop i cellen, separerade med skiljetecknet "|". Exempel "Depressionsbehandling|Behandling för sömnsvårighet" |
CareGiverHsaId | HSA Id för vårdgivare som behandlaren arbetar under, för momentet. HSAId för organisation hämtas från medarbetaruppdraget för den behandlare som senast ansvarade för behandlingen. I de fall ett moment överlämnats mellan olika enheter visar vi den enhet och vårdgivare som den behandlare som sist var ansvarig för momentet tillhörde. |
CareGiverName | Namn för vårdgivare som utför behandlingen. Namn för organisation hämtas från medarbetaruppdraget för den behandlare som senast ansvarade för behandlingen. I de fall ett moment överlämnats mellan olika enheter visar vi den enhet och vårdgivare som den behandlare som sist var ansvarig för momentet tillhörde. |
CareUnitHsaId | HSA Id för vårdenhet som behandlaren arbetar under, för momentet. HSAId för organisation hämtas från medarbetaruppdraget för den behandlare som senast ansvarade för behandlingen. I de fall ett moment överlämnats mellan olika enheter visar vi den enhet och vårdgivare som den behandlare som sist var ansvarig för momentet tillhörde. |
CareUnitName | Namn för vårdenhet som utför behandlingen. Namn för organisation hämtas från medarbetaruppdraget för den behandlare som senast ansvarade för behandlingen. I de fall ett moment överlämnats mellan olika enheter visar vi den enhet och vårdgivare som den behandlare som sist var ansvarig för momentet tillhörde. |
UnitHsaId | Ändra sen HSA Id för den avdelning/enhet/kopplad enhet som utför behandlingen. HSAId för avdelning/enhet/kopplad enhet hämtas från den behandlare som senast ansvarade för behandlingen. Se förklaring i XML dok |
UnitName | Namn för avdelning/enhet/kopplad enhet som utför behandlingen. Namn för avdelning/enhet/kopplad enhet hämtas från den behandlare som senast ansvarade för behandlingen. I de fall ett moment överlämnats mellan olika enheter visar vi den enhet och vårdgivare som den behandlare som sist var ansvarig för momentet tillhörde. |
ResidentId | Personnummer för patient/invånare. Detta fält kommer bara med om användare valt "invånarinformation" i gränssnitet. Användaren måste specifikt välja att personnumer ska exporteras för att data ska finnas med. Användaren kan dessutom välja att kryptera personnumret i de fall som det finns behov av att samköra flera olika exportuttag där information från samma individ ska sammankopplas. När personnummer krypteras genereras ändå samma kryptoresultat för samma individ, vid olika exporttillfällen. |
ResidentFirstName | Patientens förnamn. Om användaren valt att inte skicka med personnummer eller om personnummer valts att krypteras kommer detta fält att utelämnas. Om invånaren har skyddad identitet skrivs "skyddad" i detta fält. |
ResidentLastName | Patientens efternamn. Om användaren valt att inte skicka med personnummer eller om personnummer valts att krypteras kommer detta fält att vara tomt. Om invånaren har skyddad identitet skrivs "identitet" i detta fält. |
ResidentGender | Patientens/invånarens kön, möjliga värden är:
|
ResidentAgeAtStart | Patientens/invånarens ålder då behandlingen påbörjades. Heltal. |
NoOfModules | Totala antalet moduler i behandlingen |
NoOfModulesStarted | Antal moduler som var i tillståndet Startade för invånaren. Om behandlingen är avslutad visar denna räknare vilka moduler som var i tillståndet Startade då behandlingen avslutades. Summan baserar sig på den senaste tillståndet modulen hade. |
NoOfModulesPending | Antal moduler som var i tillståndet Kommande för invånaren. Om behandlingen är avslutad visar denna räknare vilka moduler som var i tillståndet Kommande då behandlingen avslutades. Summan baserar sig på den senaste tillståndet modulen hade. |
NoOfModulesStopped | Antal moduler som var i tillståndet Stoppade/Avklarade för invånaren. Om behandlingen är avslutad visar denna räknare vilka moduler som var i tillståndet Stoppade/Avklarade då behandlingen avslutades. Summan baserar sig på den senaste tillståndet modulen hade. |
NoOfMessagesFromHandler | Antalet meddelanden skickade från behandlare |
NoOfMessagesFromResident | Antalet meddelanden skickade från invånaren |
NoOfCommentsFromHandler | Antalet kommentarer skickade från behandlare |
NoOfCommentsFromResident | Antalet kommentarer skickade från invånaren |
NoOfSavedActivities | Aggregerat antal aktiviteter som är sparade. Summan som visas är totalsumman för alla sparade aktiviteter i behandlingen för invånaren. |
NoOfMissedActivities | Aggregerat antal aktiviteter som är missade. Summan som visas är totalsumman för alla missade aktiviteter i behandlingen för invånaren. |
NoOfSkippedActivities | Aggregerat antal aktiviteter som är skippade. Summan som visas är totalsumman för alla skippade aktiviteter i behandlingen för invånaren. |
NoOfCancelledActivities | Aggregerat antal aktiviteter som är kancellerade. Summan som visas är totalsumman för alla kancellerade aktiviteter i behandlingen för invånaren. |
NoOfSavedMeasurementBatteries | Aggregerat antal sparade mätbatterier. Summan som visas är totalsumman för alla sparade mätbatterier i behandlingen för invånaren. |
NoOfMissedMeasurementBatteries | Aggregerat antal missade mätbatterier. Summan som visas är totalsumman för alla missade mätbatterier i behandlingen för invånaren. |
NoOfCancelledMeasurementBatteries | Aggregerat antal kancellerade mätbatterier. Summan som visas är totalsumman för alla kancellerade mätbatterier i behandlingen för invånaren. |
<förnamn>_<efternamn>_StartDate | Kolumnen visar när behandlaren fick/övertog ansvaret för behandlingen. Kolumnnamnet består av förnamn, efternamn, ihopslagna med "_" samt följt av "_startDate". Kolumnen itereras lika många gånger som det finns unika behandlare i hela uttagsfilen. Om en behandlare har haft ansvaret under flera perioder under momentet kommer kolumnen visa startdatumet för första ansvarsperioden. |
<förnamn>_<efternamn>_EndDate | Kolumnen visar när behandlaren avslutade behandlingen eller lämnade över ansvaret till annan behandlare. Kolumnnamnet består av förnamn, efternamn, ihopslagna med "_" samt följt av "_endDate". Kolumnen itereras lika många gånger som det finns unika behandlare i hela uttagsfilen. Om en behandlare har haft ansvaret under flera perioder under momentet kommer kolumnen visa slutdatumet för sista ansvarsperioden. Om behandlingen fortfarande pågår kommer EndDate att vara "dagens datum", för när exportuttaget gjordes. (TODO: Att fundera över: behandlare med flera förnamn, dubbel-efternamn mm) |
<förnamn>_<efternamn>_NoOfDays | Kolumnen visar hur många dagar behandlaren ansvarat för behandlingen. Om behandlaren lämnat över ansvaret under perioden räknas dessa dagar bort. |
<formulärnamn>_<index1>_<mätbatterinamn>_[M|A|F]_<index2> | Kolumnen visar svar från fråga i ett formulär. För att avgöra från vilket formulär frågan/svaret kommer har kolumnnamnet byggts upp på följande sätt: <mätbatterinamn> =
[M|A|F] = märkning som visar om formuläret är del av ett mätbatteri (M), del av aktivitetsplan (A) eller ett vanligt formulär (F) <index2> löpsiffra som ökas för varje ny formulärsvarskolumn För frågor som är envalsfrågor eller flervalsfrågor kommer det att skapas en kolumn per svarsalternativ. Datacellen innehåller vidare ett boolskt värde (0/1) som visar om invånaren svarat med att välja alternativet (0 = alternativet ej valt, 1 = anternativet valt). För att formulärsvar från olika moment ska hamna i samma kolumn gäller följande kriterier:
Sorteringsordningen av kolumner som gäller formulärsvar är, i prioriteringsordning:
XML:en som är till grund för CSV:n sorterar datat dessutom i tidsordning. Det betyder att om samma fråga i ett formulär svarats flera gånger (olika formulärinstanser av samma formulärmall) kommer kolumnerna att hamna i "tidsordning". Dock har generatorn för CSV ingen egen logik för att säkerställa detta. Gruppen av kolumner som tillhör samma formulärinstans föregås av en kolumn som innehåller datum för formuläret. Datumet som då visas är (i prioritetsordning):
Kolumnnamnet byggs upp enligt <formulärnamn>_<index1>_<mätbatterinamn>_[M|A|F]_Date_<index2> |
<resultatnamn>_<formulärnamn>_R_<index>_<index2> | Resultat från formulärberäkning. <resultatnamn> =
<formulärnamn> = I första hand alternativnamnet för formuläret. Om detta är tomt tas de första 10 tecknen från formulärnamnet <index> = Index som visar vilket resultat i ordningen det är inom formulärinstansen.. <index2> = löpsiffra för att skilja på resultatkolumner med samma namn. CSV exporten säkerställer att resultat som hamnar i samma kolumn (från olika behandlingar) härstammar från samma formulär (samma formulärnamn) och har samma namn på resultatet. För att resultat från olika moment ska hamna i samma kolumn gäller följande kriterier:
Resultatkolumner kommer efter de formulärkolumnerna som genererat resultaten. |
Övriga rader - dataraderna
Raderna efter rubrikraderna innehåller exporterad data från behandlingarna. En data-rad motsvarar en behandling för en invånare. Kolumn-namn som nedan är definierade med exempelvis <förnamn> kommer att i exporten ersättas med den berörda behandlarens förnamn, o s v.
Kolumnsortering i CSV:n
Datainnehållet i CSV-filen bygger dels på statisk information, d v s sådan information som enkelt kan visas på fasta positioner, exempelvis namn på behandlingen, datum då behandlingen påbörjades, information om invånaren som gått behandlingen mm. Dels på sådan information som skapas dynamiskt, allteftersom behandlingen/momentet fortgår, exempelvis formulärsvar, utifrån mätbatterier eller aktiviteter som invånaren har svarat på.
Den statiska informationen kan enkelt positioneras i kolumner där ordningen blir förutsägbar. Det går m a o att förutsäga att exempelvis första datakolumnen innehåller ett unikt id för behandlingen/momemtet, den femte datakolumnen innehåller tidsstämpel då behandlingen påbörjades. Dessa kolumner följer den positionering som visas i tabellen ovan, Övriga kolumner i första rubrikraden.
Positioneringen av den data som skapas dynamiskt ger däremot en mer utmanande logik. Som exempel kan det i exportuttaget finnas information om flera behandlingar/moment som pågått olika länge och med olika mängd aktivitet från invånare. En invånare kan ha valt att fylla i aktiviteter från en aktivitetsplan varje dag, medan en annan invånare kan ha valt att avstå från att vara lika delaktig och därmed endast fyllt i samma aktiviteter ett fåtal gånger.
Utifrån syftet med CSV-uttaget, som är att i största mån kunna jämföra data från olika behandlingar, finns det ett behov av att para ihop informationen från olika behandlingar i gemensamma kolumner. Samtidigt behöver CSV-generatorn säkerställa att endast jämförbar information ska placeras i samma kolumner. CSV-generatiorn har således inbyggd logik för att maximera dessa två behov. Sorteringsordningen för den dynamiskt skapade informationen blir även den en utmaning i ett uttag där olika behandlingar/moment innehåller olika mängd data, har påbörjats under olika tidspunker och vidare där invånarens progress genom behandlingen varierat i tiden.
Sorteringsordningen av kolumner sker på följande sätt:
Statiska kolumner | Kolumner som visar information om behandlare | Aggregerad information om moduler, mätbatterier, aktiviteter och meddelanden | Kolumner för formulärsvar och resultat |
---|---|---|---|
Exempelvis unikt id för behandlingen, starttidpunkt för behandlingen mm | För varje unik behandlare som indentifieras inom hela XML exportfilen skapas tre kolumner motsvarande start- och slutdatum då behandlaren först fick ansvar för behandlingen, Sist hade ansvaret, samt hur maånga dagar totalt behandlaren hade ansvaret. | Dessa kolumner, som exempelvis summerar antalet moduler i tillståndet "startade", antalet meddelanden som behandlaren skickat till invånaren mm, är fasta i sitt antal. Dock påverkas kolumnerna utifrån det urval data-administratören gjort vid exporten. Om data-administratören valt att inte exportera information om moduler kommer de kolumner som visar aggregering av modulers tillstånd att uteslutas. | Samtliga formulärsvar från en behandling grupperas ihop. Inom denna grupp sorteras kolumnerna inbördes genom följande sorteringsordning:
Antalet totalt skapade formulärsvars-kolumner i CSV:n blir unionen av alla unika svar från samtliga behandlingar i exportuttaget. Det betyder att den behandlingen som har flest ifyllda formulär från en specifik formulärmall, av en specifik formulärmallsversion, kommer att bestämma det totala antalet kolumner för den formulärmallsversionen. Samtidigt kan en annan behandling ha flest ifyllda instanser på en annan formulärmallsversion. Den behandlingen kommer då att bestämma antalet skapade kolumner för dem formulärmallsversionen. Samtliga resultat som genererats från en formulärinstans grupperas ihop och kommer efter den tillhörande formulärinstansen. Inom denna grupp sorteras kolumnerna inbördes genom följande sorteringsordning:
|
Gruppen av kolumner för formulärsvar
Inom gruppen för formulärsvar (gulmarkerad ovan) kommer sorteringsordningen att bli enligt följande:
Mätbatterierier | Aktivitetsplaner | Övriga formulär |
---|
Inom undergruppen Mätbatterier (rödmarkerad ovan) kommer sorteringsordningen att vara baserad på mätbatteriets namn, i bokstavsordning. Om ett mätbatteri i sin tur innehåller flera formulärmallar, kommer dessa att grupperas ihop och sorteras efter varandra, i bokstavsordning. I exemplet nedan har Mätbatteriet Axxx-mätbatterinamn som innehåller två formulärmallar svarats på i två omgångar. De övriga mätbatterierna innehåller en formulärmall per mätbatteri.
A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn | B-mätbatterinamn | C-mätbatterinamn |
---|---|---|---|---|---|
A-formulärnamn | A-formulärnamn | B-formulärnamn | B-formulärnamn | något-formulärnamn | något-annat-formulärnamn |
Vidare sorteras CSV-kolumnerna inom varje grupp ovan (varje kolumn i tabellen) efter det unika ID för formulärmallen, i bokstavsordning. Det betyder att om det finns flera olika formulärmallar (exempelvis om det är olika revisioner av dem) som har samma mätbatterinamn och samma formulärmallsnamn så sorteras de i sin tur, baserat på det unika ID.
A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn |
---|---|---|---|
A-formulärnamn | A-formulärnamn | B-formulärnamn | B-formulärnamn |
ac047117-bcc6-4d0c-9f93-feec86ba530a | b8ba9751-2983-4ba2-9891-8fef86a890d7 | 56b98343-c4de-4cf9-8793-8612feba7155 | 56b98343-c4de-4cf9-8793-8612feba7155 |
Sist, inom varje undergrupp som håller ihop svar från samma formulärmall, sorteras kolumnerna med svar efter den ordning frågorna/svaren finns i formulärmallen.
A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn | A-mätbatterinamn |
---|---|---|---|---|---|---|
A-formulärnamn | A-formulärnamn | A-formulärnamn | A-formulärnamn | A-formulärnamn | A-formulärnamn | A-formulärnamn |
ac047117-bcc6-4d0c-9f93-feec86ba530a | ac047117-bcc6-4d0c-9f93-feec86ba530a | ac047117-bcc6-4d0c-9f93-feec86ba530a | ac047117-bcc6-4d0c-9f93-feec86ba530a | b8ba9751-2983-4ba2-9891-8fef86a890d7 | b8ba9751-2983-4ba2-9891-8fef86a890d7 | b8ba9751-2983-4ba2-9891-8fef86a890d7 |
Svar från fråga 1 | Svar från fråga 2 | Svar från fråga 1 | Svar från fråga 2 | Svar från fråga 1 | Svar från fråga 2 | Svar från fråga 3 |
I varje datarad (varje behandling) i CSV:n kommer formulärsvaren att placeras i den första tomma kolumnen, från vänster till höger, där kriterierna för att det är jämförbar information stämmer. Dessa är:
- Formulärmalls-id matchar:
- Formulärmalls-version matchar
- Formuläret är skapat ur samma sammanhang, d v s ingår i mätbatteri, aktivitetsplan eller är ett "övrigt" formulär.
- Fråga i formuläret
Exempel på hur CSV filens rubriker byggs upp
- position 1, 1 (grön) visar information och eventuella filter om exporten.
- Röda celler = ytterligare rubriker
- Gula celler = data från behandlingar (3 rader = behandlingar/invånare i exemplet)
- (Kolumn eller rad markerad som "..." visar att det specifika exemplet här har klippt bort celler i exporten).
Exempel på hur de statiska kolumnerna byggs upp
De statiska kolumnerna visar på information som alltid finns i ett konstant antal för en behandlingsplan. Det kan exempelvis vara namn, unikt id på behandlingen, patient/invånare som gått behandlingen,startdatum för behandlingen mm.
exportDate=2017-01-30|systemName=Stöd- och behandlingsplattformen|processName .... | ProcessId | ProcessVersion | CareGiverHSAId | CareGiverName | ... |
HandlerHSAId | NA | NA | NA | NA | ... |
FormTemplateId | NA | NA | NA | NA | ... |
FormTemplateVersion | NA | NA | NA | NA | ... |
FormType | NA | NA | NA | NA | ... |
FormName | NA | NA | NA | NA | ... |
FormQuestion | NA | NA | NA | NA | ... |
FormInputType | NA | NA | NA | NA | ... |
FormAnswerAlternatives | NA | NA | NA | NA | ... |
GroupName | NA | NA | NA | NA | ... |
ResultName | NA | NA | NA | NA | ... |
... | ... | ... | ... | ... | ... |
NA | fd6a521d-53ed-4907-98a7-40c56bd0ad31 | 1.0 | SE999999-ABCD | SE888888-ABCD | ... |
NA | ac33521d-53ed-4907-98a7-40c56bd0ad64 | 2.0 | SE999999-ABCD | SE888888-ABCD | ... |
NA | 45cc521d-53ed-4907-98a7-40c56bd0adff | 2.0 | SE999999-ABCD | SE888888-ABCD | ... |
Exempel på hur information om behandlare byggs upp
- I exemplet nedan har två behandlare varit verksamma sammantaget i uttaget.
- För behandling1 (första gula raden) var endast Stina delaktig
- För behandling2 (andra gula raden) började Anders, Stina tog över
- För behandling3 (tredje gula raden) började Stina, Anders tog över
- Notera att rubrikerna har berikats med HSAId för behandlare för ytterligare spårning (rubrikrad HandlerHSAId)
exportDate=2017-01-30|systemName=Stöd- och behandlingsplattformen|processName .... | ... | Anders_Lind_startDate | Anders_Lind_endDate | Anders_Lind_NoOfdays | Stina_Ek_startDate | Stina_Ek_endDate | Stina_Ek_NoOfdays | ... |
HandlerHSAId | ... | SE123456-ABCD | SE123456-ABCD | SE123456-ABCD | SE123456-BCAD | SE123456-BCAD | SE123456-BCAD | ... |
FormTemplateId | ... | NA | NA | NA | NA | NA | NA | ... |
FormTemplateVersion | NA | NA | NA | NA | NA | NA | ||
FormType | ... | |||||||
FormName | ... | NA | NA | NA | NA | NA | NA | ... |
FormQuestion | ... | NA | NA | NA | NA | NA | NA | ... |
FormInputType | ... | NA | NA | NA | NA | NA | NA | |
FormAnswerAlternatives | ... | NA | NA | NA | NA | NA | NA | ... |
GroupName | ... | NA | NA | NA | NA | NA | NA | ... |
ResultName | ... | NA | NA | NA | NA | NA | NA | ... |
NA | ... | 2017-04-04 | 67 | ... | ||||
NA | ... | 2017-04-04 | 2017-04-07 | 3 | 2017-04-07 | 64 | ... | |
NA | ... | 2017-05-14 | 27 | 2017-05-12 | 2017-05-14 | 2 | ... |
Exempel på hur data från formulärfrågor och svar byggs upp
- I exemplet nedan visas formuläret med namnet "PHQ" som ingår i mätbatteriet med alternativnamnet "Mätbatt". Invånaren förväntas fylla i ett sådant formulär 2ggr. Formuläret uppdaterades från ver 1 till ver 2 där fråga 2 ändrats, vilket resulterat att Behandling 1 har data för PHQ_1_Mätbatt_F_1... och PHQ_2_Mätbatt_F_4... medan övriga kolumner gäller behandling av version 2.0
- Första index för formulärfrågor baserar sig på en löpsiffra som visar vilken fråga i ordningen det är i formuläret
- Andra index är en löpsiffra som ökas med "1" för varje formulärsvarskolumn. Den nollställs aldrig inom ett uttag.
- Vidare syns att frågan är en envalsfråga, radio-knapp (FormInputType = RADIO)
- Observera att kolumnnamnen kan variera mellan olika uttag. De kan m a o inte korreleras mellan olika exportfiler.
- Vissa av svaren kan saknas för en behandling i CSV:n då invånaren eventuellt hoppat över en fråga eller då frågan är en följdfråga från annan fråga
exportDate=2017-01-30|systemName=Stöd- och behandlingsplattformen|processName .... | ... | PHQ_1_Mätbatt_F_1 | PHQ_2_Mätbatt_F_2 | PHQ_1_Mätbatt_F_3 | PHQ_2_Mätbatt_F_4 | PHQ_1_Mätbatt_F_5 | PHQ_2_Mätbatt_F_6 | PHQ_1_Mätbatt_F_7 | PHQ_2_Mätbatt_F_8 |
HandlerHSAId | ... | NA | NA | NA | NA | NA | NA | NA | NA |
FormTemplateId | ... | 7ed800fe-2e62-4027-ae85-e53b85b30cca | 7ed800fe-2e62-4027-ae85-e53b85b30cca | 7ed800fe-2e62-4027-ae85-e53b85b30cca | 7ed800fe-2e62-4027-ae85-e53b85b30cca | 8ed800fe-2e62-4027-ae85-e53b85b30bbd | 8ed800fe-2e62-4027-ae85-e53b85b30bd | 8ed800fe-2e62-4027-ae85-e53b85b30bbd | 8ed800fe-2e62-4027-ae85-e53b85b30bbd |
FormTemplateVersion | ... | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
FormName | ... | Formulär för patienthälsa | Formulär för patienthälsa | Formulär för patienthälsa | Formulär för patienthälsa | Formulär för patienthälsa | Formulär för patienthälsa | Formulär för patienthälsa | Formulär för patienthälsa |
FormQuestion | ... | Känt dig trött eller haft för lite energi? | Dålig aptit eller ätit för mycket? | Känt dig trött eller haft för lite energi? | Dålig aptit eller ätit för mycket? | Känt dig trött eller haft för lite energi | Lite intresse eller glädje av att göra saker | Känt dig trött eller haft för lite energi | Lite intresse eller glädje av att göra saker |
FormInputType | ... | RADIO | RADIO | RADIO | RADIO | RADIO | RADIO | RADIO | RADIO |
FormAnswer Alternatives | ... | 1=Inte alls|2=Flera dagar|3=Mer än hälften av dagarna|4=Nästan varje dag | 1=Inte alls|2=Flera dagar|3=Mer än hälften av dagarna|4=Nästan varje dag | 1=Inte alls|2=Flera dagar|3=Mer än hälften av dagarna|4=Nästan varje dag | 1=Inte alls|2=Flera dagar|3=Mer än hälften av dagarna|4=Nästan varje dag | 1=Inte alls|2=Flera dagar|3=Mer än hälften av dagarna|4=Nästan varje dag | 1=Inte alls|2=Flera dagar|3=Mer än hälften av dagarna|4=Nästan varje dag | 1=Inte alls|2=Flera dagar|3=Mer än hälften av dagarna|4=Nästan varje dag | 1=Inte alls|2=Flera dagar|3=Mer än hälften av dagarna|4=Nästan varje dag |
GroupName | ... | MEASUREMENT_BATTERY_FORM | MEASUREMENT_BATTERY_FORM | MEASUREMENT_BATTERY_FORM | MEASUREMENT_BATTERY_FORM | MEASUREMENT_BATTERY_FORM | MEASUREMENT_BATTERY_FORM | MEASUREMENT_BATTERY_FORM | MEASUREMENT_BATTERY_FORM |
ResultName | ... | NA | NA | NA | NA | NA | NA | NA | NA |
NA | ... | 1 | 2 | 1 | 1 | ||||
NA | ... | 4 | 4 | 4 | 1 | ||||
NA | ... | 4 | 4 | 3 | 3 |
Exempel på hur data från formulärresultat byggs upp
Resultaten beräknas utifrån formulärinformation. Varje resultat presenteras med en kolumnrubrik så som består av de första 10 tecknen av det namn en designer har gett resultatet, följt av de 10 första tecknen i formulärnamnet, därefter ett index som ökas för varje ny resultatkolumn i CSV:n.
I exemplet nedan har användaren valt att använda kommatecken som skiljetecken, vilket medför att CSV generatorn sätter punkt som decimaltecken i resultatvärdena.
- Inga enheter kommer med i exporten
exportDate=2017-01-30|systemName=Stöd- och behandlingsplattformen|processName .... | ... | Löptid_Formulär f_1 | Löplängd_Formulär f_2 | Löptid_Formulär f_3 | Löplängd_Formulär f_4 |
HandlerHSAId | ... | NA | NA | NA | NA |
FormTemplateId | ... | 2d769c69-644e-43b5-9c45-84fff6c0eeb7 | 2d769c69-644e-43b5-9c45-84fff6c0eeb7 | 2d769c69-644e-43b5-9c45-84fff6c0eeb7 | 2d769c69-644e-43b5-9c45-84fff6c0eeb7 |
FormTemplateVersion | 1 | 1 | 1 | 1 | |
FormType | ... | NA | NA | NA | NA |
FormName | ... | Formulär för patienthälsa | Formulär för patienthälsa | Formulär för patienthälsa | Formulär för patienthälsa |
FormQuestion | ... | NA | NA | NA | NA |
FormInputType | ... | NA | NA | NA | NA |
FormAnswerAlternatives | ... | NA | NA | NA | NA |
GroupName | ... | RESULT | RESULT | RESULT | RESULT |
ResultName | ... | Löptid | Löplängd | Löptid | Löplängd |
NA | ... | 40.0 | 5.0 | 20.0 | 3.0 |
NA | ... | 45.0 | 7.0 | 20.0 | 4.0 |
NA | ... | 30.0 | 3.5 | 30.0 | 5.0 |
Avgränsningar
Genereringen av CSV fil innehåller avgränsningar i form av datainnehåll relativt den XML fil som genereras direkt från Stöd- och Behandlingsplattformen.
Listan med avgränsningar nedan tar således inte hänsyn till avgränsningar som gjorts för XML-fil genereringen, så som exempelvis att etikettering/kodning av formulärfrågor inte finns i XML.
Informationsmängd | Lista på avgränsningar |
---|---|
Mätbatteri |
|
Formulär |
|
Resultat |
|
Moduler |
|
Personnummer |
|
Kategorier |
|
Meddelanden/kommentarer |
|
Moment |
|