Jämförda versioner

Nyckel

  • Dessa rader lades till.
  • Denna rad togs bort.
  • Formateringen ändrades.
Observera

Den här sidan har flyttats till Beslutsträd som hjälp i arbetet med flödet. Denna sida uppdateras inte längre och kommer att tas bort den 15 maj 2024. Om du har lagt till sidan som en favorit i webbläsaren eller i Confluence, se till att byta ut den till den rätta länken Beslutsträd som hjälp i arbetet med flödet. Om du har blivit länkad hit, rapportera gärna till e-tjänsternas support var länken finns så att nationella förvaltningen kan kontakta sidans ägare. Här kan du kontakta supporten: https://etjanster.inera.se/oversikt/flow/4221

För att hålla reda på vilka frågor och svar som ska leda till vilka utgångar är det bra att rita upp ett beslutsträd.

...

Info

Tänk på att skapa nya versioner vid förändringar för att kunna gå tillbaka eftersom arbetet med frågor/svar/texter kräver en hel del iteration

Inspelningar från när olika beslutsträd demonstreras:

🎬 2023-09-27 Användarforum 1177 formulärhantering (excelark)

🎬 2022-10-12 Användarforum Formulärhantering 1177 (miro enligt detta exempel)

Exempel på beslutsträd

Beslutsträdet börjar med en fråga som sedan delar sig i flera frågor och svarsalternativ. I slutet av varje gren, ska en utgång finnas. Utgången ska motsvara hänvisningen som invånare ska slussas vidare till. Utgången kan exempelvis vara hänvisning till en tidbokning på en specifik mottagning och för en specifik tidstyp. Utgången kan också vara hänvisning till ett ärendeflöde eller till annan godtycklig e-tjänst.. I exemplet har utgångarna markerats med en grön färg. Om vägen igenom beslutsträdet resulterar i samma utgångar, upprepas utgången, kopior märks med en vit bakgrund för att särskilja på vilka som är “nya utgångar” och vilka som redan använts.

...

Info

Märk utgångarna med ett id, gärna “Utgång 0”, “Utgång 1” etc.
Vilken utgång som invånare kommer att ledas till baserar sig på kombinationen av invånares svar. Utgången beräknas fram med hjälp av ett beräkningsskript som kan resultera i värdena 0, 1, 2, 3, 4 eller 5.

Info

Märk varje fråga med ett id, t ex Q1, Q2 etc.
Detta id sätts sedan i motsvarande fråga i formulärmallen (se bild nedan).
Detta id kommer också att bli variabelnamnet i beräkningsskriptet innehållandes invånares svarsalternativ :

Beräkningsskript

Beräkningsskriptet i formulärmallen beräknar fram ett resultat uttryckt som ett tal (0, 1, 2, 3, 4 eller 5). För respektive resultat kopplas sedan en URL, en beskrivande text samt en knapptext för knapp som leder invånaren vidare.

Formulärtjänsten kopplar svarsalternativen med en indexsiffra, med början på “1”. Första svaret motsvarar “1”, andra svaret motsvarar “2” o s v.
Exempel bild 1 ovan: För att i skriptkod läsa ut vilket svar som invånaren valt kan följande kodrad användas:

Kodblock
int svarsQ1 = $q.get("Q1").intValue();

Om invånaren väljer alternativet “Övrigt” så kommer svarsQ1 att få värdet 3

Skriptet ska till slut resultera i ett värde (0, 1, 2, 3, 4 eller 5) som motsvarar utgången. Värdet sätts med följande kodrad (där variabeln i tidigare skede tilldelats resultatet):

Kodblock
outcome.set( result );

Här följer ett skript som motsvarar flödesschemat i bild 1

Kodblock
when
    $q: Questions()

then
    double result = 0;
    
    // hämta invånares svar på fråga Q1
    int svarsQ1 = $q.get("Q1").intValue();

    if ( svarsQ1 == 1 ) 
    { 
        // invånare svarade med första svarsalternativet på fråga Q1
        
        // hämta invånares svar på fråga Q3
        int svarsQ3 = $q.get("Q3").intValue();
        if( svarsQ3 == 1 )
        {
            // invånare svarade med första svarsalternativet på fråga Q1
            // invånare ska ledas till utgång 0
            result = 0;
        }
        else
        {
            result = 1;
        }        
    }
    else if ( svarsQ1 == 2 ) 
    {
        int svarsQ2 = $q.get("Q2").intValue();
        int svarsQ4 = $q.get("Q4").intValue();
        int svarsQ7 = $q.get("Q7").intValue();

        if ( svarsQ2 == 1 || svarsQ2 == 2 )
        {
            if ( svarsQ7 == 2  )
            {
                result = 1;
            }
            else if( svarsQ4 == 2  )
            {
                result = 3;
            }
            else
            {
                result = 2;
            }
        }
        else if ( svarsQ2 == 3 || svarsQ2 == 4 )
        {
            if ( svarsQ7 == 2  )
            {
                result = 1;
            }
            else if( svarsQ4 == 2  )
            {
                result = 0;
            }
            else
            {
                result = 4;
            }
        }
    }
    else if ( svarsQ1 == 3 ) 
    {
        int svarsQ6 = $q.get("Q6").intValue();
        if( svarsQ6 == 1 )
        {
            result = 2;
        }
        else if( svarsQ6 == 2 )
        {
            result = 1;
        }
        else
        {
            result = 2;
        }
    }
    else if ( svarsQ1 == 4 ) 
    {
        int svarsQ5 = $q.get("Q5").intValue();
        int svarsQ9 = $q.get("Q9").intValue();
        if( svarsQ9 == 2 )
        {
            result = 1;
        }
        else if( svarsQ5 == 2)
        {
            result = 3;
        }
        else
        {
            result = 4;
        }
    }

    outcome.set( result );   
end

T

Exempel på beslutsträd ritat på whiteboard

...