Formatspecifikation CSV


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 XNamnBeskrivning
1Etikett/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
2HandlerHSAIdHSAId för behandlaren. Kolumner som inte berör data om behandlaren har värdet NA
3FormTemplateIdAnger 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
4FormTemplateVersionVersion för formulärmallen som har varit till grund för formulärinstansen. Kolumner som inte berör formulär har värdet NA
5FormInstanceIndexIndex/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.
6FormTypeVisar 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.
7FormNameNamn på formuläret. Kolumner som inte berör data gällande formulärfrågor/svar har värdet NA
8FormQuestionFrå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"
9FormInputTypeInmatningstyp 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
10FormAnswerAlternativesSvarsalternativ 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
11MeasurementBatteryNameNamn 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
12ResultNameNamn 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


(varning) 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.

AttributBeskrivningDatatyp/möjliga värden
exportDateDatum för när exporten gjordes

Format enligt rubriken "Tidsstämplar" ovan.

systemNameSystem som genererat exporten"Stöd- och behandling" eller "Designverktyget"
processNameNamn på den momentmall som valts för export
specifiedSelectionVisar 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
selectedCategoriesOm 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. 
statusVisar om export valts för endast avslutade eller endast pågående behandlingar.Giltiga värden är INPROGRESS|DONE|MAINTAIN
residentInformationVisar 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
modulesExportedVisar om användaren valt att exportera information om moduler som ingår i behandlingen.Möjliga värden är true|false
messageTransactionsExportedVisar 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
linkedProcessesExportedVisar om användaren valt att även exportera Id:n för eventuellt länkade momentMöjliga värden är true|false
activityPlansExportedVisar om användaren valt att exportera aktivitetsplanerMöjliga värden är true|false
measurementBatteriesExportedVisar om användaren valt att exportera svarade formulär som ingår i mätbatterierMöjliga värden är true|false
formsExportedVisar 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
startFromPeriodVisar ett valt startdatum för period inom vilken benhandlingen påbörjades, inklusive den valda dagen.

Format enligt rubriken "Tidsstämplar" ovan. Endast datum.

startToPeriodVisar 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.
endFromPeriodVisar 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.
endToPeriodVisar 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-namnBeskrivning
ProcessIdUnikt 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.
ProcessNameNamn på behandlingen. Alla dataceller i denna kolumn kolumn kommer att innehålla samma namn eftersom endast en behandlingstyp kan exporteras per CSV exportfil
ProcessMajorVersionHuvudversionsnummer på behandling. Version på en behandling representeras av <major>.<minor> exempelvis 1.1. Detta attribut innehåller <major>
ProcessMinorVersionUnderversionsnummer på behandling. Version på en behandling representeras av <major>.<minor> exempelvis 1.1. Detta attribut innehåller <minor>
ProcessStartDateDatum då behandlingen påbörjades. Format enligt rubriken "Tidsstämplar" ovan.
ProcessEndDateDatum 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.

  • INPROGRESS (pågående)
  • MAINTAIN (i vidmakthållande)
  • DONE (avslutad)
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

ProcessTerminationReasonTextBeskrivning/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"

CareGiverHsaIdHSA 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.
(varning) 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.
CareGiverNameNamn 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.
(varning)  
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.
CareUnitHsaIdHSA 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.
(varning) 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.
CareUnitNameNamn 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.
(varning) 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
(varning) 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.

UnitNameNamn 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. 
(varning) 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:

  • MALE
  • FEMALE
  • OTHER
ResidentAgeAtStartPatientens/invånarens ålder då behandlingen påbörjades. Heltal.
NoOfModulesTotala 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.

NoOfModulesPendingAntal 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.
NoOfModulesStoppedAntal 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.
NoOfMessagesFromHandlerAntalet meddelanden skickade från behandlare
NoOfMessagesFromResidentAntalet meddelanden skickade från invånaren
NoOfCommentsFromHandlerAntalet kommentarer skickade från behandlare
NoOfCommentsFromResidentAntalet kommentarer skickade från invånaren
NoOfSavedActivitiesAggregerat antal aktiviteter som är sparade. Summan som visas är totalsumman för alla sparade aktiviteter i behandlingen för invånaren.
NoOfMissedActivitiesAggregerat antal aktiviteter som är missade. Summan som visas är totalsumman för alla missade aktiviteter i behandlingen för invånaren.
NoOfSkippedActivitiesAggregerat 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.

NoOfSavedMeasurementBatteriesAggregerat antal sparade mätbatterier. Summan som visas är totalsumman för alla sparade mätbatterier i behandlingen för invånaren.
NoOfMissedMeasurementBatteriesAggregerat antal missade mätbatterier. Summan som visas är totalsumman för alla missade mätbatterier i behandlingen för invånaren.
NoOfCancelledMeasurementBatteriesAggregerat 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>_NoOfDaysKolumnen 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:
<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
<index1> = löpsiffra som visar vilken fråga i ordningen det är i formuläret. Om frågan är en flervalsfråga kommer varje valbart alternativ att exporteras i en egen kolumn. Index1 får då ett två-ställigt värde, t ex 1_1, 1_2, 1_3 om frågan har tre svarsalternativ.

<mätbatterinamn> =

  1. Om formuläret är del av ett mätbatteri tas mätbatteriets alternativa namn.
  2. Om alternativa namnet är tomt tas de 10 första tecknen på mätbatteriets namn.
  3. Om formuläret är en aktivitetsplan eller ett övrigt formulär blir <mätbatterinamn tomt>.

[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:

  1. Formulärmalls-id matchar:
  2. Formulärmalls-version matchar
  3. Formuläret är skapat ur samma sammanhang, d v s ingår i mätbatteri, aktivitetsplan eller är ett "övrigt" formulär.
  4. Fråga i formuläret 

Sorteringsordningen av kolumner som gäller formulärsvar är, i prioriteringsordning:

  1. Svar från samma formulärinstans kommer alltid efter varandra, sorterade i den ordning frågorna har i formulärmallen. Ordningen är alltid samma inom en formulär-mall
  2. Formuläret är skapat ur samma sammanhang, d v s ingår i mätbatteri
  3. Formuläret är skapat ur samma sammanhang, d v s är en aktivitet i aktivitetsplan
  4. Formuläret är skapat ur samma sammanhang, är ett formulär som inte ingår i ett mätbatteri eller är en aktivitetsplan.
  5. Om formuläret är del av ett mätbatteri och om mätbatteriet har ett alternativt namn, sorteras kolumner efter det alternativa namnet
  6. Om formuläret är del av ett mätbatteri sorteras kolumner efter mätbatteriets namn
  7. Om formulärmallen har ett alternativt namn, sorteras kolumnerna på det alternativa namnet
  8. Formulärmallens namn
  9. Formulärmallens unika ID
  10. Formulärmallens versionsnummer
  11. Inom den kvarstående grupperingen sorteras kolumnerna i tidsordning, den ordning som invånaren svarat på formulären

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.

(varning) 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):

  1. Det datum då en mätning/svar förväntades (motsvarar ReferralDate i XML)
  2. Det datum då formuläret senast sparades (motsvarar LastSavedDate i XML)

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> =

  1. Om resultatet har ett alternativt namn tas det alternativa namnet
  2. Annars tas resultatnamnet. Om resultatnamnet består av mer än 10 tecken trunkeras strängen till 10 tecken

<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:

  1. Resultatet är från formulärmall med samma formulärmall-id 
  2. Resultatet är från formulärmall med samma formulärmall-version
  3. Resultatet har samma resultatnamn (både alternativt namn och namn på resultat)

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 kolumnerKolumner som visar information om behandlareAggregerad information om moduler, mätbatterier, aktiviteter och meddelandenKolumner för formulärsvar och resultat
Exempelvis unikt id för behandlingen, starttidpunkt för behandlingen mmFö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:

  1. Svar från samma formulärinstans kommer alltid efter varandra, sorterade i den ordning frågorna har i formulärmallen. Ordningen är alltid samma inom en formulär-mall
  2. Formuläret är skapat ur samma sammanhang, d v s ingår i mätbatteri
  3. Formuläret är skapat ur samma sammanhang, d v s är en aktivitet i aktivitetsplan
  4. Formuläret är skapat ur samma sammanhang, är ett formulär som inte ingår i ett mätbatteri eller är en aktivitetsplan.
  5. Om formuläret är del av ett mätbatteri och om mätbatteriet har ett alternativt namn, sorteras kolumner efter det alternativa namnet
  6. Om formuläret är del av ett mätbatteri sorteras kolumner efter mätbatteriets namn
  7. Om formulärmallen har ett alternativt namn, sorteras kolumnerna på det alternativa namnet
  8. Formulärmallens namn
  9. Formulärmallens unika ID
  10. Formulärmallens versionsnummer
  11. Inom den kvarstående grupperingen sorteras kolumnerna i tidsordning, den ordning som invånaren svarat på formulären

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:

  1. Resultatets alternativa namn, om sådant finns
  2. Resultatets namn


Gruppen av kolumner för formulärsvar

Inom gruppen för formulärsvar (gulmarkerad ovan) kommer sorteringsordningen att bli enligt följande:

MätbatterierierAktivitetsplanerÖ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ätbatterinamnA-mätbatterinamnA-mätbatterinamnA-mätbatterinamnB-mätbatterinamnC-mätbatterinamn
A-formulärnamnA-formulärnamnB-formulärnamnB-formulärnamnnågot-formulärnamnnå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ätbatterinamnA-mätbatterinamnA-mätbatterinamnA-mätbatterinamn
A-formulärnamnA-formulärnamnB-formulärnamnB-formulärnamn
ac047117-bcc6-4d0c-9f93-feec86ba530ab8ba9751-2983-4ba2-9891-8fef86a890d756b98343-c4de-4cf9-8793-8612feba715556b98343-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ätbatterinamnA-mätbatterinamnA-mätbatterinamnA-mätbatterinamnA-mätbatterinamnA-mätbatterinamnA-mätbatterinamn
A-formulärnamnA-formulärnamnA-formulärnamnA-formulärnamnA-formulärnamnA-formulärnamnA-formulärnamn
ac047117-bcc6-4d0c-9f93-feec86ba530aac047117-bcc6-4d0c-9f93-feec86ba530aac047117-bcc6-4d0c-9f93-feec86ba530aac047117-bcc6-4d0c-9f93-feec86ba530ab8ba9751-2983-4ba2-9891-8fef86a890d7b8ba9751-2983-4ba2-9891-8fef86a890d7b8ba9751-2983-4ba2-9891-8fef86a890d7
Svar från fråga 1Svar från fråga 2Svar från fråga 1Svar från fråga 2Svar från fråga 1Svar från fråga 2Svar 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:

  1. Formulärmalls-id matchar:
  2. Formulärmalls-version matchar
  3. Formuläret är skapat ur samma sammanhang, d v s ingår i mätbatteri, aktivitetsplan eller är ett "övrigt" formulär.
  4. 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 ....ProcessIdProcessVersionCareGiverHSAIdCareGiverName...
HandlerHSAIdNANANANA...
FormTemplateIdNANANANA...
FormTemplateVersionNANANANA...
FormTypeNANANANA...
FormNameNANANANA...
FormQuestionNANANANA...
FormInputTypeNANANANA...
FormAnswerAlternativesNANANANA...
GroupNameNANANANA...
ResultNameNANANANA...
..................
NAfd6a521d-53ed-4907-98a7-40c56bd0ad311.0SE999999-ABCDSE888888-ABCD...
NAac33521d-53ed-4907-98a7-40c56bd0ad642.0SE999999-ABCDSE888888-ABCD...
NA45cc521d-53ed-4907-98a7-40c56bd0adff2.0SE999999-ABCDSE888888-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_startDateAnders_Lind_endDateAnders_Lind_NoOfdaysStina_Ek_startDateStina_Ek_endDateStina_Ek_NoOfdays...
HandlerHSAId...SE123456-ABCDSE123456-ABCDSE123456-ABCDSE123456-BCADSE123456-BCADSE123456-BCAD...
FormTemplateId...NANANANANANA...
FormTemplateVersion
NANANANANANA
FormType...






FormName...NANANANANANA...
FormQuestion...NANANANANANA...
FormInputType...NANANANANANA
FormAnswerAlternatives...NANANANANANA...
GroupName...NANANANANANA...
ResultName...NANANANANANA...
NA...


2017-04-04
67...
NA...2017-04-042017-04-0732017-04-07
64...
NA...2017-05-14
272017-05-122017-05-142...


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_1PHQ_2_Mätbatt_F_2PHQ_1_Mätbatt_F_3PHQ_2_Mätbatt_F_4PHQ_1_Mätbatt_F_5PHQ_2_Mätbatt_F_6PHQ_1_Mätbatt_F_7PHQ_2_Mätbatt_F_8
HandlerHSAId...NANANANANANANANA
FormTemplateId...7ed800fe-2e62-4027-ae85-e53b85b30cca7ed800fe-2e62-4027-ae85-e53b85b30cca7ed800fe-2e62-4027-ae85-e53b85b30cca7ed800fe-2e62-4027-ae85-e53b85b30cca8ed800fe-2e62-4027-ae85-e53b85b30bbd8ed800fe-2e62-4027-ae85-e53b85b30bd8ed800fe-2e62-4027-ae85-e53b85b30bbd8ed800fe-2e62-4027-ae85-e53b85b30bbd
FormTemplateVersion...11112222
FormName...Formulär för patienthälsaFormulär för patienthälsaFormulär för patienthälsaFormulär för patienthälsaFormulär för patienthälsaFormulär för patienthälsaFormulär för patienthälsaFormulä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 energiLite intresse eller glädje av att göra sakerKänt dig trött eller haft för lite energiLite intresse eller glädje av att göra saker
FormInputType...RADIORADIORADIORADIORADIORADIORADIORADIO
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_FORMMEASUREMENT_BATTERY_FORMMEASUREMENT_BATTERY_FORMMEASUREMENT_BATTERY_FORMMEASUREMENT_BATTERY_FORMMEASUREMENT_BATTERY_FORMMEASUREMENT_BATTERY_FORMMEASUREMENT_BATTERY_FORM
ResultName...NANANANANANANANA
NA...1211



NA...



4441
NA...



4433

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_1Löplängd_Formulär f_2Löptid_Formulär f_3Löplängd_Formulär f_4
HandlerHSAId...NANANANA
FormTemplateId...2d769c69-644e-43b5-9c45-84fff6c0eeb72d769c69-644e-43b5-9c45-84fff6c0eeb72d769c69-644e-43b5-9c45-84fff6c0eeb72d769c69-644e-43b5-9c45-84fff6c0eeb7
FormTemplateVersion
1111
FormType...NANANANA
FormName...Formulär för patienthälsaFormulär för patienthälsaFormulär för patienthälsaFormulär för patienthälsa
FormQuestion...NANANANA
FormInputType...NANANANA
FormAnswerAlternatives...NANANANA
GroupName...RESULTRESULTRESULTRESULT
ResultName...LöptidLöplängdLöptidLöplängd
NA...40.05.020.03.0
NA...45.07.020.04.0
NA...30.03.530.05.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ängdLista på avgränsningar
Mätbatteri
  • Information om hur mätbatterier är schemalagda saknas
  • Status för formulär gällande mätbatterier saknas.
  • Tidsstämpel för när mätbatteri skapats eller mäts saknas
  • Repetitionsintervall för mätbatterier saknas
  • Om ett mätbatteri byter namn och mätbatteriet innehåller gemensamma formulärmallar (som behålls utan att uppdateras) kommer CSV uttaget fortfarande att kunna korrelera kolumnerna för formulärsvaren (endast för de gemensamma formulärmallarna). Kolumnnamnet på kolumnen kommer att byggas upp utifrån det mätbatterinamn som mätbatteriet hade först.
Formulär
  • Formulär som blivit raderade (status = ERASED i XML filen) visas inte i CSV:n.
  • Relationen mellan frågor och följdfrågor syns inte i CSV:n
Resultat
  • Datumstämplar för resultat kommer INTE med i CSV:n, exempelvis datum då formulär senast sparades
  • Resultat saknar referens till den specifika formulärinstansen som resultatet är genererat från
  • Resultaten saknar märkning som visar om resultatet är beräknat från ett aktivitets-formulär
  • Resultat saknar datumstämpel för när resultatet "remitterades" och genererades
  • Resultaten saknar enhet (exempelivs km, st)
Moduler
  • Händelseloggen för när moduler startades, stoppades kommer inte med i CSV:n. CSV:n aggregerar antalet startade, stoppade, väntande moduler med en kolumn för respektive värde.
  • Inga tidsstämplar kommer med.
  • Namn på moduler kommer inte med
Personnummer
  • Det framgår inte i CSV uttaget om kolumnen för personnummer håller ett krypterat värde eller ett riktigt personnummer.
Kategorier
  • Det kommer endast att skapas kolumner för kategorier, för de kategorier som filtreras ut i SoB exportgränssnittet. Om användaren valt att inte filtrera på kategorier skapas inga kolumner alls.
Meddelanden/kommentarer
  • Logg som visar alla meddelanden/kommentarer saknas, med bl a tidsstämpel för när meddelandet skickades samt vilken behandlare (HSAId och namn) som skickade meddelandet/kommentaren.
  • CSV:n aggregerar meddelande/kommentarskonversationen i fyra kolumner, med antal skickade meddelanden från invånare, antal skickade från behandlare, likaså för kommentarer.
  • Antalet konversationer syns inte i CSV:n.
Moment
  • I csv-filen kommer vi inte kunna visa om ett moment har överlämnats mellan olika enheter.