Gå till slutet av bannern
Gå till början av bannern

Beräkningar och ihopkoppling av formulärmall med tidbokning

Hoppa till slutet på meta-data
Gå till början av metadata

Du visar en gammal version av den här sidan. Visa nuvarande version.

Jämför med nuvarande Visa sidhistorik

« Föregående Version 11 Nästa »

Koppla ihop formulärmallen med tidbokning

Det krävs några steg för att koppla ihop en formulärmall med tidbokning

  1. Ta fram beräkning utifrån de olika frågorna och svaren i formuläret för att peka på ett visst utfall (id på en utgång)

  2. Länka från beräkning i formulärmallen till tidbokningstjänst

  3. Lägg in URL-parameter vid utdelning av tjänst

Steg 1 - Ta fram beräkning som räknar ut utfallen av frågor/svar

I formulärmallen finns möjlighet att lägga in beräkningar för att ange vilka resultat i formulärets frågor/svar som ska leda till vilket utfall.

Beräkningen skrivs med kod i formulärtjänstens designverktyg, så personer med kunskap om enklare typer av kodning kan göra detta.

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:

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

outcome.set( result );

 

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

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

 

Länk till Formulärtjänstens dokumentation: Steg för steg, konfiguration

För att underlätta, rekommenderas att ett beslutsträd tas fram för att enklare skapa scriptet. Se exempel: Beslutsträd som hjälp i arbetet med flödet

Exempel på beräkning Fysioterapimottagning

Nedan skript visar hur en beräkning kan se ut. Utgångarna kan ha ett värde mellan 0 och 5, dvs totalt 6 utgångar.

TODO: komplettera med beskrivningar i scriptet som mappar mot frågorna i beslutsträdet

when
    $q: Questions()

then
    double result = 0;
    int svarsQ1 = $q.get("Q1").intValue();

    if ( svarsQ1 == 1 ) 
    { 
        int svarsQ3 = $q.get("Q3").intValue();
        if( svarsQ3 == 1 )
        {
            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

Kontrollera beräkningen

Beräkningen kan kontrolleras genom en förhandsgranskningsvy. Genom att välja vad invånaren kan svara, blir resultatet olika baserat på vad som är inlagt i scriptet. Se mer i Formulärtjänstens dokumentation [länk].

Steg 2 - Länka från beräkning i formulärmallen till tidbokningstjänst

I externalApplication kopplas en vidarelänkning från beräkningen i formulärmallen

Exempel på länkning

förklara delarna i url:en

https://tidbok.1177.se/make?configid=c3fb8b23-466b-45b2-bc35-b7b42565ebf7&hsaid=TSTNMT2321000156-112C&timetypeCode=2&terms=false

Steg 3 - lägg in URL-parameter vid utdelning av tjänst

[beskrivning av detta steg]

Läs mer hos Formulärtjänstens dokumentation:

Uthoppslänk på mottagningens startsida i inloggat läge

Exempel på URL-parameter

förklara delarna i url:en

?externalApplication=TRIAGE_VARMLAND

Tips och trix

Problem / behov

Lösning

Vid konfigurering av beräkningen i formulärmallen, går det inte att peka på samma utgång från flera frågor/svarsalternativ

Frågan och svarsalternativen behöver kopieras och kan inte gå ihop till samma.

Dvs inte:

Utan:

  • Inga etiketter