Kunskapsbaserade system, *38

 

HT 2001

 

Ulrika Attermo

Maria Björkman

Elisabeth Mirow

Anne Thelander

 

Expertsystemet Hemdoktorn

 

1. Inledning

 

Hemdoktorn är ett system som bygger på ett så kallat fallbaserat resonerande, det vill säga det slutresultat via CBRS (Case-Based-Reasoning-System) som erhålles ur de olika modulerna kan användas för en intuitivare form av resonerande. Detta går i huvudsak ut på att med hjälp av en matchningsalgoritm söka i en kunskapsmodul (kunskapsbas) med redan lagrade fallbeskrivningar. Tanken är att vi som systemutvecklare skall kunna köpa färdiga tjänster i form av avpersonifierade journaler från olika sjukhus.

 

2. Syfte och problemformulering

 

Den första tanken vi i gruppen hade, var att konstruera en typ av rådfrågningssystem som föräldrar kan använda sig av för att få råd och tips om vad barnet kan ha för sjukdom. Problemet vi då stötte på var ansvarsfrågan, det vill säga ett expertsystem kan aldrig ersätta de kunskaper och erfarenheter som en läkare har. Vi har därför konstruerat ett system som kan användas som ett komplement till en redan ställd diagnos, ett så kallat "second-opinionsystem". Som exempel kan nämnas en förälder som på barnklinikens akutmottagning fått veta att barnet har kikhosta och vid hemkomsten undrar vad läkaren egentligen sagt.

 

3. Systembeskrivning

 

3.1. Input

 

Då användaren startar systemet kan denne välja att först svara på ett antal allmänna frågor som exempelvis om barnet har feber, i så fall hör hög samt allmänpåverkan. Val görs dels via rullgardinsmenyer men också via "kortsvarsrutor" (Se bild nedan). Därefter har han/hon möjlighet att välja mer specifika symtom som kräkningar, utslag, hosta, klåda med mera. Beroende på vad användaren anger för symtom viktas svaren till ett antal moduler. De moduler som ingår i vårt system är Startmodulen, modul M för mage/tarmåkommor, modul F för förkylningsåkommor, modul B för barnsjukdomar, modul H för hudåkommor samt CBSmodulen för slutresultaten. I alla moduler utom slutmodulen får användaren svara på mer sjukdomsspecifika frågor. I varje modul går sökalgoritmer igenom frågeträdet, både på djupet och på bredden. Då tillräckligt många sjukdomsspecifika frågor har triggats, viktas dessa och skickas till slutmodulen.

 

Modul B för barnsjukdomar är i sin tur uppdelad i sex undermoduler för sjukdomarna Mässling, Röda hund, Scharlakansfeber, Vattkoppor, Körtelfeber samt Tredagarsfeber.

 

För information om hur de olika modulerna kan fungera, se respektive modul nedan eller gå direkt till önskad modul.

 

3.2. Output

 

I slutmodulen matchas frågorna mot ett antal lagrade diagnoser och en metod som heter showDiagnos() skriver ut resultatet på skärmen.

 

3.3. Arbetsminne
 
Nedanstående variabler är ett utdrag av alla de variabler som detta expertsystem använder sig av. Dessa kommer att lagras i en hashtabell.
 
·               feber 
·               allmäntillstånd 
·               ålder
·               kräks
·               diarré
·               buksmärta
·               förstoppning
·               snuva
·               hosta
·               halsont
·               klåda
·               utslag
·               blåsor
·               fläckar
·               prickar
 
En beräkningsalgoritm kommer sedan att räkna ut ett specifikt värde som skickas till hashtabellen. 

 

3.4. Skärmlayout

 

Skärmlayouten kan se ut som på bilden nedan. En förklaring till hur systemet är tänkt att användas måste givetvis finnas tillgänglig så fort systemet startats. Användaren kan bland annat välja att avsluta, ångra val, köra systemet en gång till. Val till de olika modulerna görs som redan nämnts ovan.

 

Exempel på dialog med användaren: Välkommen till diagnossystemet Vad sade doktorn?! Klicka på knappen "Information" för att komma igång med programmet………..och så vidare.

Barnets ålder     Har barnet feber?   Ja   Nej   Hur mycket feber?     Hur länge?  

Vilka symtom har barnet?  

      Vet du vilken slags åkomma ditt barn har?  



Lägg in ny diagnos ställd av läkare Ny diagnos

Matcha ditt barns symtom med redan inlagda diagnoser Söka

4. Startmodul

 

void main()

{

 

 /* Huvudprogrammet */

 

IF ("Starta system") THEN start_module.weight = 1000;

IF ("Lägga in ny diagnos") THEN CBS.weight:=900;

 

WHILE (getNextExpertModule());

 

weight:=0;

 

/*Returnerar och kör den modul med högst vikt. Är vikten 0 returneras NULL och villkoret := FALSE*/

 

showDiagnos()

 

{ /*showDiagnos är en metod som går igenom slutmodulen med alla fallbeskrivningar och matchar dessa med svarsalternativen i de olika symtommodulerna. Skriver ut namnet på den diagnos som satts till TRUE.*/ }

 

exitSytem()

 

{ /*exitSystem() är en metod som avslutar systemet.*/}

 

4.1. Regelbas (Start)

 

systemStart()

 

/*Variablerna ålder, feber med mera väljs på skärmen då användaren startat systemet (Se bild ovan). Man kan välja att ange ett, fler eller inget alternativ (AND/OR), gå direkt till en viss modul, avsluta, ångra val med mera.*/

 

private int ålder;

private Boolean påverkan, feber;

private String barnsjukdomar, hudåkommor, förkylningsåkommor, magtarmåkommor, nydiagnos, ångra;

{

IF (first_time) THEN ställ_fråga (initiering);

IF (ålder) THEN ställ_fråga (Frågaålder) AND/OR

IF (allmänpåverkan) THEN ställ_fråga (Frågapåverkan) AND/OR

IF (feber) THEN ställ_fråga (Frågafeber1) AND/OR

IF (Frågafeber1)=True THEN ställ_fråga ((Frågafeber2) AND/OR (Frågafeber3));

 

} ELSE DO {

 

/*Välj symtom nedan.*/

 

IF (ställ_frågor(Frågamage1)=True) THEN kräks:=True;

IF (ställ_frågor(Frågamage 2)=True) THEN diarré:=True;

IF (ställ_frågor(Frågamage 3)=True) THEN buksmärta:=True;

IF (ställ_frågor(Frågamage 4)=True) THEN förstoppning:=True;

IF (kräks, diarré, buksmärta, förstoppning,) THEN ModulM.weight :=900

 

} ELSE {

 

IF (ställ_frågor(Frågaförkylning1)=True) THEN snuva:=True;

IF (ställ_frågor(Frågaförkylning2)=True) THEN hosta:=True;

IF (ställ_frågor(Frågaförkylning3)=True) THEN halsont=:True;

IF (snuva, hosta, halsont) THEN ModulF.weight :=800;

 

} ELSE {

 

IF (ställ_frågor(Frågahud1)=True) THEN klåda := True;

IF (ställ_frågor(Frågahud2)=True) THEN utslag := True;

IF (ställ_frågor(Frågahud3)=True) THEN blåsor := True;

IF (ställ_frågor(Frågahud4)=True) THEN fläckar := True;

IF (ställ_frågor(Frågahud5)=True) THEN prickar := True;

IF (klåda, prickar, blåsor, fläckar, utslag) THEN ModulH.weight :=700;

 

} ELSE {

 

IF NOT (kräks, diarré, förstoppning) AND (ställ_frågor(Frågabarnsjukdom1)=True) THEN barnsjukdom:=True;

IF (barnsjukdom) THEN ModulB.weight :=600;

 

} ELSE DO {

 

/*Välj åkomma för att starta respektive modul M, F, H eller B direkt vid start*/

 

IF (magtarmåkommor) THEN ModulM.weight:=500;

ELSE

IF (hudåkommor) THEN ModulH.weight:=400;

ELSE

IF (förkylningsåkommor) THEN ModulF.weight:=300;

ELSE

IF (barnsjukdomar) THEN ModulB.weight:=200;

ELSE

IF (nydiagnos) THEN ModulCBS.weight:=100;

ELSE

IF (avsluta) THEN GOTO exit_system(); /*Avslutar systemet*/

ELSE

IF (fortsätt) THEN  GOTO startSystem(); /*Repeterar hela tiden till användaren väljer att sluta*/

ELSE

IF (ångra) THEN ("Rensa fältet och gå tillbaka ett steg");

weight :=0;

}}

 

4.2. Frågeträd (Start)

 

I frågeträdet skall förutom nedanstående frågor finnas med avsluta program, ångra val med mera. Här har vi endast tagit upp de specifika frågorna.

 

 

·        0-3 månader

·        3-6 månader

·        6-12 månader

·        1-2 år

·        2-3år

·        3-6 år

·        6-10 år

·        10-13 år

·        13-16 år

 

·        Frågapåverkan: Är barnet allmänpåverkat? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågafeber1: Har barnet feber? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        38-39 grader

·        39-40 grader

·        40 grader

 

·        < 1 dygn

·        1 dygn

·        2-3 dygn

·        3-5 dygn

·        5 dygn

 

·        Frågamage 1: Kräks barnet? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågamage 2: Har barnet diarré? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågamage 3: Har barnet ont i magen? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågaförkylning 3: Har barnet ont i halsen? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågaförkylning 1: Är barnet snuvigt? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågaförkylning 2: Hostar barnet? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågahud 1: Har barnet klåda? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågamage 4: Är barnet förstoppat? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågahud 2: Har barnet utslag? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågahud 3: Har barnet blåsor? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Fågahud 4: Har barnet fläckar? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågahud 5: Har barnet prickar? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

·        Frågabarnsjukdom 1: Har barnet en barnsjukdom? : specat_svar (Välj ett alternativ nedan);

·        Ja (True)

·        Nej (False)

 

5. Modul M (Mag - och tarmsjukdomar)

/* Denna modul behandlar mag- och tarmsjukdomar. I startmodulen viktas de svar som användaren har matat in och vid hög vikt på svar som "tillhör" Modul M körs reglerna i denna modul. Dessa regler triggar frågorna i frågeträdet. När hela regelbasen gåtts igenom tills det att inga fler frågor kan triggas så görs en sökning i CBSmodulen efter den diagnos som stämmer in på svarssymtomen. Modul A som nämns i regelbasen, har vi inte gjort men den är tänkt att den ska innehålla olyckor samt skador, så som vrickningar, stukningar och dylikt.*/

5.1. Regelbas

IF (first_time) THEN ställ_fråga (initiering);

IF (mag och tarmbesvär)THEN ställ_fråga (Fråga1);

IF (mag och tarmbesvär) THEN ställ_fråga (Fråga2);

IF (medicin) THEN ställ_fråga (Fråga3);

IF (Kräkning) AND/OR (Diarré) AND/OR (Buksmärtor) THEN ställ_fråga (Fråga4);

IF (Kräkning) AND/OR (Diarré) AND (symtom började >= 3 dygn) THEN ställ_fråga (Fråga5);

IF (Kräkning) THEN ställ_fråga (Fråga6);

IF (Olycka) THEN add vikt 900 Modul A.

IF (Kräkning)THEN ställ_fråga (Fråga7);

IF (Kräkning) AND (barn under 3 månader) AND (efter måltid) THEN ställ_fråga (Fråga8);

IF (Kräkning) THEN ställ_fråga (Fråga9);

IF (Kräkning) THEN ställ_fråga (Fråga10);

IF (Kräkning) THEN ställ_fråga (Fråga11);

IF (Kräkning) AND/OR (Diarré) AND (Påverkat allmäntillstånd) THEN ställ_fråga (Fråga12);

IF (Kräkning) AND/OR (Diarré) AND/OR (Förstoppning) AND (barn under 2 år) THEN ställ_fråga (Fråga13);

IF (Diarré) THEN ställ_fråga (Fråga14);

IF (Diarré)THEN ställ_fråga (Fråga15);

IF (Diarré) THEN ställ_fråga(Fråga16);

IF (Diarré) THEN ställ_fråga (Fråga17);

IF (Förstoppning)THEN ställ_fråga (Fråga18);

IF (Buksmärtor) THEN ställ_fråga (Fråga19);

IF (Buksmärtor) AND (barn under 3 månader) THEN ställ_fråga (Fråga20);

IF (Buksmärtor) AND (barn under 3 månader) AND (skrikperioder) THEN ställ_fråga (Fråga21);

 

5.2. Frågeträd

 
 

·        Fråga 1: Typer av besvär? : specat_svar {användaren väljer ett eller flera utav dessa alternativ}

·                             kräkning

·                             diarré

·                             förstoppning

·                             buksmärtor

 

·        Fråga 2: Äter barnet någon medicin? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             Ja, barnet äter medicin

·                             Nej, barnet äter ingen medicin

 

·        Fråga 3: Vilken typ av medicin äter barnet? : text_svar {här får användaren skriva in medicin namnet}

 

·                             Hur länge har barnet ätit denna medicin? : specat_svar {användaren väljer ett utav dessa alternativ}

·          några dagar

·          en vecka

·          två veckor

·          flera veckor

·          månader

·          halvår

·          år

·          flera år

 

·        Fråga 4: När började dessa symtom? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             för mindre än ett dygn sedan

·                             för 2-3 dygn sedan

·                             för mer än 3 dygn sedan

 

·        Fråga 5: Har barnet gått ned i vikt? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             ja

·                             nej

·                             vet inte

 

·          Hur mycket vikt har barnet förlorat? : specat_svar {användaren väljer ett utav dessa alternativ}

·                      under 10% utav barnets normala kroppsvikt

·                      över 10% utav barnets normala kroppsvikt

 

·        Fråga 6: Har barnet råkat ut för en olycka och slagit i huvudet? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             ja

·                             nej

·                             vet inte

 

·        Fråga 7: När kräks barnet? : specat_svar {användaren väljer ett utav dessa alternativ}        

·                             efter/under varje måltid

·                             ibland

·                             sällan

 

·        Fråga 8: Hur kräks barnet? : specat_svar  {användaren väljer ett utav dessa alternativ}

·                             små mängder mjölk eller välling

·                             kraftig sprutande kräkning

 

·        Fråga 9: Har barnet fått behålla någon vätska? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             senaste timmen

·                             senaste 3 timmarna

·                             senaste 5 timmarna

 

·        Fråga 10: När kissade barnet sist? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             senaste timmen

·                             senaste 3 timmarna

·                             senaste 5 timmarna

 

·        Fråga 11: Andra symtom? : specat_svar {användaren väljer ett eller flera utav dessa alternativ}

·                             kräkning och kissar dåligt

·                             kräks efter måltid

·                             mår bra förutom kräkningarna

·                             feber och kräkningar (inga förkylningssymptom)

·                             förkylning och kräkningar

·                             har mycket ont

 

·        Fråga 12: Är barnet ovanligt trött och slött? : specat_svar

·                             ja

·                             nej

 

·        Fråga 13: Ammar du ditt barn? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             ja

·                             ja och ger tillägg (välling)

·                             nej

 

·        Fråga 14: Hur ofta förekommer diarrén? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             mindre än 1 gång/timme

·                             mer än 1 gång/timme

 

·          Har barnet ont i magen? : specat_svar  {användaren väljer ett utav dessa alternativ}

·                      ja, det skriker

·                      nej inte alls

·                      vet inte

 

·        Fråga 15: Äter barnet som vanligt? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             ja, äter som vanligt

·                             äter nästan som vanligt

·                             äter sämre än vanligt

·                             äter inte alls

 

·        Fråga 16: Dricker barnet som vanligt? :specat_svar {användaren väljer ett utav dessa alternativ}

·                             ja, dricker som vanligt

·                             dricker nästan som vanligt

·                             dricker sämre än vanligt

·                             dricker inte alls

 

·        Fråga 17: Har barnet blodig avföring? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             ja, har blodig avföring

·                             nej, har inte blodig avföring

 

·        Fråga 18: Är det längre tid än 3 dagar sedan barnet tömde sina tarmar? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             ja, det är det

·                             nej, det är det inte

 

·          Är avföringen hård? : specat_svar

·                      ja

·                      nej

·          Har barnet ont vid tarmtömningen? : specat_svar

·                      ja

·                      nej

 

·        Fråga 19: Vilka symtom på buksmärtor har barnet? : specat_svar {användaren väljer ett eller flera utav dessa alternativ}

·                             buksmärta och feber

·                             buksmärta och spänd buk

·                             buksmärta och blekhet

·                             buksmärta och kallsvettas

·                             buksmärta och ont på natten

·                             buksmärta och blodig eller svart avföring

·                             buksmärta och smärtor i intervaller

·                             buksmärta och barnet är hängigt

·                             buksmärta efter yttre våld

·                             buksmärta och dricker inte

·                             buksmärta och minsta rörelse gör att barnet skriker

·                             buksmärta och barnet vill ligga ned

·                             buksmärta efter att ha ätit någonting

 

·        Fråga 20: Har barnet långa skrikperioder? : specat_svar

·                             ja

·                             nej

 

·        Fråga 21: Återkommer skrikperioderna en eller flera gånger om dagen? : specat_svar {användaren väljer ett utav dessa alternativ}

·                             endast en gång

·                             ja, flera gånger

·                             nej,bara ibland

 

·          Har barnet en spänd buk? : specat_svar

·                      ja

·                      nej

 

·          Har barnet mycket gaser? : specat_svar

·                      ja

·                      nej

 

6. ModulF (Förkylning)

 

Den här modulen består av symtomen halsont, feber, snuva och hosta. De går i varandra i större eller mindre omfattning. En förkylning börjar ju ofta med halsont och snuva vilket kan leda till hosta och/eller feber. Reglerna i modulen triggar frågorna. Sökningen i frågeträdet sker både på bredden och djupet. Då ett visst antal frågor valts kan fallbeskrivningen leda till en diagnos eller skapa en ny.

 

6.1. Regelbas

 

systemStart()

 

IF (first_time) THEN ställ_fråga (initiering);

IF (halsont) THEN ställ_fråga (har barnet ont i halsen?);

IF (halsont) THEN ställ_fråga (hur länge);

IF (halsont) THEN ställ_fråga (har annan familjemedlem);

IF (halsont) THEN ställ_fråga (har annan familjemedlem haft);

IF (halsont) THEN ställ_fråga (torr sovrumsluft);

IF (halsont) AND/OR (snuva) ställ_fråga (barnet kinkigt och gnälligt);

IF (halsont) AND/OR (snuva) ställ_fråga (barnet trött och hängigt);

IF (halsont) AND/OR (snuva) ställ_fråga (försämrad smak och lukt);

IF (halsont) THEN ställ_fråga (svårt att äta eller dricka);

IF (halsont) THEN ställ_fråga (ilsket röd i halsen);

IF (halsont) THEN ställ_fråga (svullna och ömma halsmandlar);

IF (halsont) THEN ställ_fråga (vita beläggningar på tonsillerna);

IF (halsont) AND (hosta) ställ_fråga (kräkningar och illamående);

IF (halsont) AND (snuva) AND (hosta) AND/OR (feber) ställ_fråga (huvudvärk);

IF (halsont) AND (snuva) AND (feber) THEN ställ_fråga (ont mellan ögonbrynen);

IF (halsont) AND (snuva) AND (feber) THEN ställ_fråga (ont i kinderna);

IF (halsont) AND (snuva) AND (feber) THEN ställ_fråga (öm över öronen);

IF (halsont) AND (snuva) AND (feber) THEN ställ_fråga (nedsatt hörsel);

IF (halsont) AND (snuva) AND (feber) THEN ställ_fråga (ont i ena eller båda öronen);

IF (halsont) AND (snuva) AND (feber) THEN ställ_fråga (varig-blodig flytning från öra);

IF (halsont) AND (snuva) AND (feber) AND (hosta) THEN ställ_fråga (yrsel);

IF (snuva) THEN ställ_fråga (är barnet snuvigt);

IF (snuva) THEN ställ_fråga (hur länge);

IF (snuva) THEN ställ_fråga (färg och konsistens);

IF (snuva) THEN ställ_fråga (sömnproblem);

IF (hosta) THEN ställ_fråga (hostar barnet?);

IF (hosta) THEN ställ_fråga (hostar i intervall);

IF (hosta) THEN ställ_fråga (hur ofta);

IF (hosta) THEN ställ_fråga (dov och enkelljudig);

IF (hosta) AND (snuva) AND (feber) THEN ställ_fråga (dov med biljud);

IF (hosta) AND (snuva) AND (feber) THEN ställ_fråga (hängig och lätt andfådd);

IF (hosta) AND (snuva) THEN ställ_fråga (hostar upp segt slem);

IF (hosta) AND (halsont) AND (snuva) THEN ställ_fråga (rostfärgad upphostning);

IF (hosta) AND (halsont) AND (snuva) AND (feber) THEN ställ_fråga (rödblå ansiktsfärg);

IF (hosta) AND (halsont) AND (snuva) THEN ställ_fråga (blodbristningar i ögonvitorna);

IF (hosta) AND (halsont) AND (snuva) THEN ställ_fråga (kliar sig i ögonen);

IF (hosta) AND (halsont) AND (snuva) THEN ställ_fråga (pipande luftindragningar);

IF (hosta) AND (halsont) AND (snuva) AND (feber) THEN ställ_fråga (andningssvårigheter);

IF (hosta) AND (halsont) AND (snuva) THEN ställ_fråga (varit i kontakt med små barn);

IF (hosta) AND (halsont) AND (snuva) THEN ställ_fråga (anfall nattetid, ofta med kräkning);

IF (hosta) AND (snuva) THEN ställ_fråga (kliar i halsen);

IF (hosta) AND (snuva) THEN ställ_fråga (kliar i ögonen);

IF (hosta) AND (snuva) THEN ställ_fråga (allergi i familjen);

IF (hosta) AND (snuva) THEN ställ_fråga (finns husdjur);

IF (hosta) AND (snuva) THEN ställ_fråga (finns däggdjur med päls);

IF (hosta) AND (snuva) THEN ställ_fråga (finns fågel);

IF (hosta) AND (snuva) THEN ställ_fråga (har barnet haft eksem);

IF (hosta) AND (snuva) THEN ställ_fråga (finns heltäckande mattor);

IF (hosta) AND (snuva) THEN ställ_fråga (finns fuktskador i fastigheten);

IF (hosta) AND (snuva) THEN ställ_fråga (har barnet matallergi);

IF (hosta) AND (snuva) THEN ställ_fråga (finns blommande inomhusväxter);

IF (hosta) AND (snuva) THEN ställ_fråga (finns rökare i familjen);

IF (hosta) AND (snuva) THEN ställ_fråga (är barnet ofta förkyld);

IF (hosta) AND (snuva) THEN ställ_fråga (förkyld på sommarhalvåret);

IF (hosta) AND (snuva) THEN ställ_fråga (vilka månader);

IF (hosta) AND (snuva) THEN ställ_fråga (hur ofta bytes sängkläder);

IF (hosta) AND (snuva) THEN ställ_fråga (dammsugartyp);

IF (feber) THEN ställ_fråga (frysningar);

IF (feber) THEN ställ_fråga (frossbrytngar);

IF (feber) THEN ställ_fråga (har barnet feber?);

IF (feber) THEN ställ_fråga (hur hög);

 

6.2. Frågeträd

 

 

·        Ja

·        Nej

 

·        < än 3 dygn

·        >än 3 dygn

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        < 3 dagar

·        3 dagar

 

·        Transparent, rinnande

·        Vit, halvtjock

·        Gul, tjock

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        < 2 gånger i timmen

·        2 gånger i timmen

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Maj

·        Juni

·        Juli

·        Augusti

·        September

 

·        varje vecka

·        varannan vecka

·        var tredje vecka

·        var fjärde vecka

 

·        med standardfilter

·        med extrafilter

·        med vattenfilter

·        centraldammsugare

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        Ja

·        Nej

 

·        < än 38 grader, låg

·        än 38 grader, måttlig

·        än 39 grader, hög

·        än 40 grader, mycket hög

 

7. Modul H (Hudåkommor)
 
/*Denna modul behandlar hudåkommor utifrån de besvär användaren har valt att mata in: utslag/prickar, klåda, blåsor, fläckar, feber, allmäntillstånd som är några av de allmänna frågorna. Sedan kommer mer specifika frågor om exempelvis allergi, överkänslighet etcetera beroende av vad användaren har matat in för svar. Reglerna i regelbasen bestämmer vilka frågor som ska triggas. När hela regelbasen gåtts igenom tills det att inga fler frågor kan triggas så görs en sökning i CBSmodulen efter den diagnos som stämmer in på svarssymtomen. Användaren får upp ett svar om vad det kan vara för åkomma.*/
 
7.1. Regelbas
 

IF (first_time) THEN ställ_fråga (initiering);

IF (hudbesvär) OR (utslag/prickar) OR (blåsor) OR (fläckar) OR (klåda) THEN ställ_fråga ("Hur länge?");
IF (hudbesvär) THEN ställ_fråga (typ av besvär);
IF (utslag/prickar) OR (blåsor) OR (fläckar) OR (klåda) THEN ställ_fråga ("Begränsat?");
IF (begränsat) THEN ställ_fråga ("Vilket/vilka områden?");
IF (klåda) AND (huvud) THEN ställ_fråga ("Små vita prickar vid hårstrået?");
IF NOT (vita prickar) THEN ställ_fråga ("Torra partier?");
IF ((blåsor) AND OR (utslag/prickar) AND OR (klåda) AND OR (fläckar)) AND (feber) THEN ställ_fråga ("Barnsjukdom?");
IF (misstanke om barnsjukdom) add_inication_to expert_module(75, barnsjukdomModule);
IF (ålder 3 mån<>5 år THEN ställ_fråga ("Har barnet blöjor?");
IF (ålder 3 mån<>2 år THEN ställ_fråga ("Ammas barnet?")
IF NOT (begränsat) THEN ställ_fråga ("Områden med fjällande och/eller rodnande hud?");
IF (annat område)AND/OR (ljumskar)and OR (knäveck) AND/OR (armhålor) THEN ställ_fråga ("Nya underkläder/tvättmedel?");
IF (ljumskar) AND OR (annat) AND (utslag/prickar)AND OR (klåda) THEN ställ_fråga ("Tidigare tecken på överkänslighet eller allergi?");
IF (tidigare allergi eller överkänslighet) THEN ställ_fråga ("Mot vad?");
IF NOT (tidigare allergi eller överkänslighet) THEN ställ_fråga ("Finns allergi i släkten?");
IF (klåda) THEN ställ_fråga ("Har klådan uppkommit i samband med utslag?");
IF (klåda) THEN ställ_fråga ("Äter barnet någon medicin?");
IF (medicin) THEN ställ_fråga ("Vilken?");
IF NOT (i samband med utslag) THEN ställ_fråga ("i samband med annat");
IF ((3 mån<>1 år) AND (ammas)) THEN ställ_fråga ("Har barnet regerat tidigare?");
IF (reagerat tidigare) THEN ställ_fråga ("På något moder ätit?");
IF (ja på något) THEN ställ_fråga ("vad?");
IF ((blöjor) AND (röda prickar eller fläckar)) AND (ljumskar) AND/OR (könsorgan) THEN ställ_fråga ("Är utslagen vätskefyllda?");
IF (näsa)AND OR (mun) THEN ställ_fråga ("Variga sår?);
IF NOT (fjällande och rodnande) AND NOT (utslag/prickar) THEN ställ_fråga ("Flata ljusröda  fläckar?")
IF (flata ljusräda fläckar) AND (ålder 3 mån<> 1 år) THEN ställ_fråga ("Varmt?");
IF NOT ( flata ljusröda fläckar) AND NOT (utslag/prickar) THEN ställ_fråga ("Mörkt röda fläckar som inte bleknar?");
IF (annat hudbesvär) AND NOT (utslag/prickar) AND NOT (röda fläckar) THEN ställ_fråga ("skorptäckta fläckar?");
IF (skorptäckta) AND/OR (röda prickar eller fläckar) AND/OR (utslag/prickar) AND/OR (fläckar) THEN ställ_fråga ("Upphöjda?");
IF (upphöjda) THEN ställ_fråga ("I form av blåsor");
IF (if 38<>40) AND ((blåsor)AND OR (utslag/prickar)) THEN ställ_fråga ("Har barnet haft vattkoppor?");
IF (klåda) AND OR (fjällande och/eller rodnad hud) THEN ställ_fråga ("eksem");
 
7.2. Frågeträd
 
 
·               Fråga 1: Hur länge har barnet haft hudbesvär? : specat_svar
·                             < 3 dygn
·                             3<>5 dygn
·                             5 dygn
 
·               Fråga 2: Vilken typ av besvär har barnet? Välj ett eller flera alternativ : specat_svar
·                             utslag/prickar
·                             blåsor
·                             fläckar
·                             klåda
 
·               Fråga 3: Är besväret begränsat till ett område? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 4: Till vilket/vilka område(n) på kroppen? : specat_svar
·                             huvud
·                             analöppning
·                             könsorgan
·                             ljumskar
·                             mun
·                             näsa
·                             ögon
·                             annat område
 
·               Fråga 5: Kan du upptäcka små vita prickar som är fästade vid hårstrået? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 6: Har barnet torra partier i hårbotten? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 7: Finns misstanke om barnsjukdom? : specat_svar
·                             Ja: UsedInRb_Barnsjukdomar
·                             Nej
 
·               Fråga 8: Har barnet blöjor? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 9: Ammas barnet? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 10: Har barnet flera områden med rodnande och/eller fjällande hud? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 11: Har barnet nya underkläder eller har ni nyligen bytt tvättmedel? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 12: Finns tidigare tecken på överkänslighet eller allergi? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 13: Mot vad har barnet visat tecken på allergi eller överkänslighet? : specat svar
·                             tvättmedel
·                             tvål
·                             födoämnen
·                             djur
·                             damm
·                             pollen
·                             annat
 
·               Fråga 14: Finns allergi i släkten? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 15: Har klådan uppkommit i samband med utslag? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 16: Äter barnet någon medicin? : specat_svar
·                             Ja
·                             Nej
 
·          Vilken sorts medicin? : text_svar
 
·               Fråga 17: Vad har klådan uppkommit i samband med? : specat_svar
·                             fläckar
·                             torr hud
·                             blåsor
·                             annat
 
·               Fråga 18: Har barnet reagerat tidigare? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 19: Har barnet reagerat på något moder ätit? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 20: På vad? : text_svar
 
·               Fråga 21: Är utslagen vätskefyllda? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 22: Har barnet variga sår? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 23: Ser utslagen ut som flata ljusröda eller fläckar? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 24: Är det mycket varmt eller vistas barnet i ett varmt rum? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 25: Ter sig utslagen som mörkt röda fläckar? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 26: Har barnet feta skorptäckta fläckar på huvudet? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 27: Är utslagen upphöjda? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 28: Är de upphöjda utslagen i form av blåsor? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 29: Har barnet haft vattkoppor? : specat_svar
·                             Ja
·                             Nej
 
·               Fråga 30: Har barnet haft någon form av eksem tidigare? : specat_svar
·                             Ja
·                             Nej

 

8. Modul B (Barnsjukdomar)

 

/* Denna modul är uppdelad i en huvudmodul och sex stycken undermoduler motsvarande olika barnsjukdomar. Dessa är mässling, röda hund, scharlakansfeber, vattkoppor, körtelfeber samt tredagarsfeber. Viss redundans är oundviklig eftersom exempelvis feber ingår som symtom i samtliga diagnoser. Reglerna i de olika modulerna kommer att bestämma vilka frågor som triggas. Dessa kan väljas slumpmässigt och sökningen i frågeträdet kan ske både på djupet och på bredden. Då ett visst antal frågor (eller alla) valts ur trädet görs en sökning i CBSmodulen efter den diagnos som stämmer in på svarssymtomen. Innan sökning i slutmodulen kan ske skall ett tillräckligt antal symtomspecifika frågor ha valts för att sökningen skall lyckas. Sökningen skall fungera för alla lagrade fallbeskrivningarna, det vill säga vid sökning får användaren alltid upp ett svarsalternativ utifrån de frågor som valts ur frågeträdet. I slutmodulen lagras redan förvärvad kunskap som fallbeskrivningar varför svar alltid erhålles. De enskilda modulerna innehåller enbart de symtom som gäller för respektive sjukdom. Frågorna kan vara specade och då väljer användaren ett av två alternativ, Ja (True) eller Nej (False). Vid skalsvar väljs svar ur ett intervall. Detta sker på samma sätt i alla modulerna.*/

 

startBarnsjukdomar()

{

private String mässling, vattkoppor, scharlakansfeber, röda_hund, körtelfeber, tredagarsfeber;

 

Start av Modul B

{

IF (mässling) THEN moduleM.weight := 600;

} ELSE /* Starta modul M */

IF (scharlakansfeber) THEN moduleS.weight := 500; /* Starta modul S */

} ELSE

IF (vattkoppor) THEN moduleV.weight := 400; /* Starta modul V */

} ELSE

IF (röda_hund) THEN moduleR.weight := 300; /* Starta modul R */

} ELSE

IF (körtelfeber) THEN moduleK.weight := 200; /* Starta modul K */

} ELSE

IF (tredagarsfeber) THEN moduleT.weight := 100; /* Starta modul T */

}

weight := 0;

 

8.1. Modul M (Mässling)

 

8.1.1. Regelbas

 

IF (first_time) THEN ställ_fråga (initiering);

IF (feber) THEN ställ_fråga (Fråga1);

IF (Fråga 1)=True THEN ställ_fråga (Fråga 2);

IF (allmänpåverkan) THEN ställ_fråga (Fråga 3);

IF NOT (allmänpåverkan) THEN ställ_fråga (Fråga 4);

IF (smärttillstånd) THEN ställ_fråga (Fråga 11);

IF (ögon) AND (irriterad) THEN ställ_fråga (Fråga 12);

IF (ögon) AND (röda) THEN ställ_fråga (Fråga 13);

IF (ögon) AND (ljuskänslig) THEN ställ_fråga (Fråga 14);

IF (rethosta) THEN ställ_fråga (Fråga 10);

IF (snuva) THEN ställ_fråga (Fråga 9);

IF (prickar) AND (insidan av kind) AND (vita) THEN ställ_fråga (Fråga 8);

IF (fläckar) AND (små) AND (röda) AND (upphöjda) THEN ställ_fråga (Fråga 5);

IF (fläckar) AND (börjat) AND (små) AND (upphöjda) AND (bakom öron) THEN ställ_fråga (Fråga 6);

IF (fläckar) AND (spridning) AND (ansikte) THEN ställ_fråga (Fråga 7);

 

8.1.2. Fallbeskrivning

 

/*Frågeträdet gås igenom. Efter fråga 11 görs ett anrop till modulen med fallbeskrivningar där matchning sker. Nästa fall får närmaste lägre vikt tills inga diagnoser finns kvar*/

 

mässling:=False;

m:=0;

IF ((Fråga1)=True THEN (m :=m+1) AND

IF (Fråga 2)=True THEN (m :=m+1) AND

IF (Fråga 3)=True THEN (m := m+2) AND

IF (Fråga 5)=True THEN (m:=m+1) AND

IF (Fråga 6)=True THEN (m:=m+2) AND

IF (Fråga 8)=True THEN (m:=m+1) AND

IF (Fråga 9)=True THEN (m:=m+1) AND

IF (Fråga 10)=True THEN (m:=m+1) AND

IF (Fråga 11))=True THEN mässling:=True;

IF (mässling) THEN moduleCBS.weight:=1000;

 

8.1.3. Frågeträd

 

 

·        Fråga 1: Har barnet feber? : specat_svar (Välj ett alternativ nedan);

·        Ja (T)

·        Nej (F)

 

·        < 38.5 grader (T)

·        >= 38.5 grader (F)

 

·        Fråga 3: Verkar barnet allmänpåverkat? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 4: Verkar barnet opåverkat trots feber? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 5: Har barnet små röda upphöjda fläckar? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 6: Började dessa bakom öronen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 7: Har dessa spridit sig till ansiktet, och/eller bål och/eller armar respektive ben? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 8: Har barnet vita prickar på kindernas insida? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 9: Är barnet snuvigt? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 10: Har barnet rethosta? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 11: Har barnet ont i ögonen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 12: Är barnet irriterat i ögonen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 13: Har barnet röda ögonvitor? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 14: Är barnet extra ljuskänsligt? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

8.2. Modul S (Scharlakansfeber)

 

8.2.1. Regelbas

 

IF (first_time) THEN ställ_fråga (initiering);

IF (feber) THEN ställ_fråga (Fråga 1);

IF (Fråga 1)=True THEN ställ_fråga (Fråga 2);

IF (allmänpåverkan) THEN ställ_fråga (Fråga 3);

IF (feber) AND NOT (allmänpåverkan) THEN ställ_fråga (Fråga 4);

IF (utslag) AND (finprickiga) AND (sammanflytande) THEN ställ_fråga (Fråga 5);

IF (utslag) AND NOT (ansikte) THEN ställ_fråga(Fråga 8);

IF (utslag) AND (börjat) AND ((hals) OR (rygg) OR (bakom öron)) THEN ställ_fråga (Fråga 9);

IF (utslag) AND (spridning) AND (snabb) THEN ställ_fråga (Fråga 10);

IF (utslag) AND (hudveck) THEN ställ_fråga (Fråga 11);

IF (fläckar) AND (lätt upphöjda) THEN ställ_fråga(Fråga 7);

IF (hud) AND (torr) AND (fnasig) THEN ställ_fråga (Fråga 12);

IF (hud) AND (blek) AND (runt mun) THEN ställ_fråga (Fråga 14);

IF (ansiktsrodnad) THEN ställ_fråga (Fråga 13);

IF (smärttillstånd) THEN ställ_fråga (Fråga 15);

IF (smärttillstånd) THEN ställ_fråga (Fråga 20);

IF (tunga) AND (beläggning) THEN ställ_fråga (Fråga 16);

IF (tunga) AND ((beläggning) AND (börjat lossna)) THEN ställ_fråga (Fråga 17);

IF (tunga) AND (starkt röd) THEN ställ_fråga (Fråga 18);

IF (tunga) AND (starkt röd) AND (bleka fält) THEN ställ_fråga (Fråga 19);

 

8.2.2. Fallbeskrivning

 

/*Frågeträdet gås igenom. Efter fråga 19 görs ett anrop till modulen med fallbeskrivningar där matchning sker. Nästa fall får närmaste lägre vikt tills inga diagnoser finns kvar*/

 

scharlakansfeber:=False;

sf:=0;

IF ((Fråga1)=True THEN (sf :=sf+1) AND

IF (Fråga 2)=True THEN (sf :=sf+3) AND

IF (Fråga 5)=True THEN (sf := sf+1) AND

IF (Fråga 6)=True THEN (sf:=sf+2) AND

IF (Fråga 8)=True THEN (sf:=sf+1) AND

IF (Fråga 9)=True THEN (sf:=sf+1) AND

IF (Fråga 10)=True THEN (sf:=sf+1) AND

IF (Fråga 11)=True THEN (sf:=sf+1) AND

IF ((Fråga12)=True THEN (sf :=sf+1) AND

IF (Fråga 13)=True THEN (sf :=sf+3) AND

IF (Fråga 16)=True THEN (sf := sf+3) AND

IF (Fråga 19))=True THEN scharlakansfeber:=True;

IF (scharlakansfeber) THEN moduleCBS.weight:=1000;

 

8.2.3 Frågeträd

 

 

 

·        Fråga 1: Har barnet feber? : specat_svar (Välj ett alternativ nedan);

·        Ja (T)

·        Nej (F)

 

 

·        < 38.5 grader (T)

·        >= 38.5 grader (F)

 

·        Fråga 3: Verkar barnet allmänpåverkat? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 4: Verkar barnet opåverkat trots feber? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 5: Har barnet finprickiga, sammanflytande utslag? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 6: Har utslagen inslag av lätt upphöjda fläckar? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 7: Har barnet utslag i ansiktet? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 8: Började dessa på halsen, ryggen eller bakom öronen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 9: Har utslagen spridit sig snabbt? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 10: Har barnet dessa utslag huvudsakligen i hudveck? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 11: Är huden torr och fnasig? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 12: Har barnet en stark rodnad i ansiktet? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 13: Är barnet blekt om munnen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 14: Har barnet ont i munnen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 15: Har barnet en vit beläggning på tungan? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 16: Har beläggningen börjat lossna från tungan? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 17: Är barnets tunga starkt rödfärgad? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 18: Har barnet bleka fält på tungan ("smultrontunga")? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 19: Har barnet ont i halsen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

8.3. Modul V (Vattkoppor)

 

8.3.1. Regelbas

 

IF (first_time) THEN ställ_fråga (initiering);

IF (feber) THEN ställ_fråga (Fråga 1);

IF (Fråga 1)=True THEN ställ_fråga (Fråga 2);

IF (allmänpåverkan) THEN ställ_fråga (Fråga 3);

IF (feber) AND NOT (allmänpåverkan) THEN ställ_fråga (Fråga 4);

IF (smärttillstånd) THEN ställ_fråga (Fråga 12);

IF (utslag) AND (blåsformiga) THEN ställ_fråga (Fråga 5);

IF (utslag) AND (klåda) THEN ställ_fråga (Fråga 6);

IF (utslag) AND (delvis fallit av) AND (lämnat skorpor) THEN ställ_fråga (Fråga 7);

IF (utslag) AND (börjat) AND (ansikte) THEN ställ_fråga (Fråga 8);

IF (utslag) AND (spridning) AND ((hårbotten) AND (armar) AND (ben)) THEN ställ_fråga (Fråga 9);

IF (utslag) AND (spridning) AND ((munslemhinnan) AND (könsorganen)) THEN ställ_fråga (Fråga 10);

 

8.3.2. Fallbeskrivning

 

/*Frågeträdet gås igenom. Efter fråga 7 görs ett anrop till modulen med fallbeskrivningar där matchning sker. Nästa fall får närmaste lägre vikt tills inga diagnoser finns kvar*/

 

vattkoppor:=False;

v:=0;

IF ((Fråga1)=True THEN (v :=v+1) AND

IF (Fråga 2)=True THEN (v :=v+2) AND

IF (Fråga 4)=True THEN (v :=v+1) AND

IF (Fråga 5)=True THEN (v:=v+1) AND

IF (Fråga 6)=True THEN (v:=v+1) AND

IF (Fråga 7))=True vattkoppor:=True;

IF (vattkoppor) THEN moduleCBS.weight:=1000;

 

8.3.3. Frågeträd

 

 

·        Fråga 1: Har barnet feber? : specat_svar (Välj ett alternativ nedan);

·        Ja (T)

·        Nej (F)

 

·         Fråga 2: Om ja, hur hög är temperaturen? : skal_svar (Välj ett alternativ ur intervallet);

·        < 38.5 grader (T)

·        >= 38.5 grader (F)

 

·        Fråga 3: Verkar barnet allmänpåverkat? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 4: Verkar barnet opåverkat trots feber? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 5: Har barnet blåsformiga utslag? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 6: Kliar de? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 7: Har utslagen delvis fallit av och lämnat skorpor? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 8: Började utslagen i ansiktet? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 9: Har utslagen spridit sig till hårbotten, armar och ben? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 10: Har utslagen spridit sig till munnen och / eller könsorganen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 11: Har barnet huvudvärk? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

8.4. Modul R (Röda Hund)

 

8.4.1. Regelbas

 

IF (first_time) THEN ställ_fråga (initiering);

IF (feber) THEN ställ_fråga (Fråga 1);

IF (Fråga 1)=True THEN ställ_fråga (Fråga 2);

IF (allmänpåverkan) THEN ställ_fråga (Fråga 3);

IF (smärttillstånd) THEN ställ_fråga (Fråga 8);

IF (smärttillstånd) THEN ställ_fråga (Fråga 5);

IF NOT (allmänpåverkan) THEN ställ_fråga (Fråga 4);

IF (smärttillstånd) THEN ställ_fråga (Fråga 6);

IF (smärttillstånd) THEN ställ_fråga (Fråga 7);

IF ((utslag) AND (blekröda)) AND ((fläckar) AND ((fläckar) AND (lätt upphöjda)) THEN ställ_fråga (Fråga 9);

IF (utslag) AND (börjat) AND (ansikte) THEN ställ_fråga (Fråga 10);

 

8.4.2. Fallbeskrivning

 

/*Frågeträdet gås igenom. Efter fråga 9 görs ett anrop till modulen med fallbeskrivningar där matchning sker. Nästa fall får närmaste lägre vikt tills inga diagnoser finns kvar*/

 

röda_hund:=False;

r:=0;

IF ((Fråga1)=True THEN (r :=r+1) AND

IF (Fråga 2)=True THEN (r:=r+1) AND

IF (Fråga 3)=True THEN (r :=r+2) AND

IF (Fråga 5)=True THEN (r:=r+2) AND

IF (Fråga 7)=True THEN (r:=r+2) AND

IF (Fråga 9))=True THEN röda_hund:=True;

IF (röda_hund) THEN moduleCBS.weight:=1000;

 

8.4.3. Frågeträd

 

 

·        Fråga 1: Har barnet feber? : specat_svar (Välj ett alternativ nedan);

·        Ja (T)

·        Nej (F)

 

·        < 38.5 grader (T)

·        >= 38.5 grader (F)

 

·        Fråga 3: Verkar barnet allmänpåverkat? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 4: Verkar barnet opåverkat trots feber? : specat_svar;

·        Ja (T)

·        Nej (F)

 

·        Fråga 5: Har barnet ont i halsen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 6: Har barnet ont i nacken? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 7: Har barnet ont i en eller flera leder? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 8: Har barnet huvudvärk? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 9: Har barnet blekröda utslag, med inslag av lätt upphöjda fläckar? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 10: Började utslagen i ansiktet? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

8.5. Modul K (Körtelfeber)

 

8.5.1. Regelbas

 

IF (first_time) THEN ställ_fråga (initiering);

IF (feber) THEN ställ_fråga (Fråga 1);

IF (Fråga 1)=True THEN ställ_fråga (Fråga 2);

IF (allmänpåverkan) AND (trött) THEN ställ_fråga (Fråga 5);

IF (smärttillstånd) THEN ställ_fråga (Fråga 10);

IF (smärttillstånd) THEN ställ_fråga (Fråga 7);

IF (smärttillstånd) AND (halsont) AND (förstorade mandlar) AND (vit beläggning) THEN ställ_fråga (Fråga 8);

IF (smärttillstånd) THEN ställ_fråga (Fråga 6);

IF (snuva) THEN ställ_fråga (Fråga 11);

IF (lymfkörtlar) AND (svullna) AND ((ljumskar) OR (hals) OR armhålor)) THEN ställ_fråga(Fråga 9);

IF ((utslag) AND (blekröda)) AND ((fläckar) AND ((fläckar) AND (lätt upphöjda)) THEN ställ_fråga (Fråga 12);

IF (fläckar) AND (små) AND (röda) AND (upphöjda) THEN ställ_fråga (Fråga 13);

 

8.5.2. Fallbeskrivning

 

/*Frågeträdet gås igenom. Efter fråga 13 görs ett anrop till modulen med fallbeskrivningar där matchning sker. Nästa fall får närmaste lägre vikt tills inga diagnoser finns kvar*/

 

körtelfeber:=False;

k:=0;

IF ((Fråga1)=True THEN (k :=k+1) AND

IF (Fråga 2)=False THEN (k :=k+1) AND

IF (Fråga 3)=True THEN (k := k+3) AND

IF (Fråga 6)=True THEN (k:=k+4) AND

IF (Fråga 10)=True THEN (k:=k+1) AND

IF (Fråga 11)=True THEN (k:=k+1) AND

IF (Fråga 12)=True THEN (k:=k+1) AND

IF (Fråga 13))=True THEN körtelfeber:=True;

IF (körtelfeber) THEN moduleCBS.weight:=1000;

 

8.5.3. Frågeträd

 

 

·        Fråga 1: Har barnet feber? : specat_svar (Välj ett alternativ nedan);

·        Ja (T)

·        Nej (F)

 

·        < 38.5 grader (T)

·        >= 38.5 grader (F)

 

·        Fråga 3: Verkar barnet allmänpåverkat? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 4: Verkar barnet opåverkat trots feber? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 5: Verkar barnet onormalt trött? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 6: Har barnet huvudvärk? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 7: Har barnet ont i halsen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 8: Har barnet förstorade halsmandlar med vita beläggningar? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 9: Har barnet svullna lymfkörtlar i armhålorna, ljumskar eller på halsen? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 10: Har barnet muskelsmärtor? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 11: Är barnet snuvigt? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 12: Har barnet små röda upphöjda fläckar (Se mässling)? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 13: Är dessa blekröda, med inslag av lätt upphöjda fläckar (Se röda hund)? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

8.6. Modul T (Tredagarsfeber)

 

8.6.1. Regelbas

 

IF (first_time) THEN ställ_fråga (initiering);

IF (feber) THEN ställ_fråga (Fråga 1);

IF (Fråga 1)=True THEN ställ_fråga (Fråga 2);

IF (feber) AND NOT (allmänpåverkan) THEN ställ_fråga (Fråga 4);

IF (utslag) AND ((småflammiga) AND (blekröda)) THEN ställ_fråga (Fråga 5);

IF (utslag) AND ((bål) AND (överarmar)) THEN ställ_fråga (Fråga 6);

 

8.6.2. Fallbeskrivning

 

/*Frågeträdet gås igenom. Efter fråga 6 görs ett anrop till modulen med fallbeskrivningar där matchning sker. Nästa fall får närmaste lägre vikt tills inga diagnoser finns kvar*/

 

tredagarsfeber:=False;

t:=0;

IF ((Fråga1)=True THEN (t :=t+1) AND

IF (Fråga 2)=True THEN (t:=t+2) AND

IF (Fråga 4)=True THEN (t :=t+1) AND

IF (Fråga 5)=True THEN (t:=t+1) AND

IF (Fråga 6))=True THEN tredagarsfeber:=True;

IF (tredagarsfeber) THEN moduleCBS.weight:=1000;

 

8.6.3. Frågeträd

 

 

·        Fråga 1: Har barnet feber? : specat_svar (Välj ett alternativ nedan);

·        Ja (T)

·        Nej (F)

 

·        >= 38.5 grader (T)

·        < 38.5 grader (F)

 

·        Fråga 3: Verkar barnet allmänpåverkat? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 4: Verkar barnet opåverkat trots feber? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 5: Har barnet blekröda och småflammiga utslag? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

·        Fråga 6: Sitter de huvudsakligen på bål samt överarmar? : specat_svar (…);

·        Ja (T)

·        Nej (F)

 

9. Modul CBS

 

/* I slutmodulen finns som nämnts tidigare alla de fallbeskrivningar som matchar de olika symtomen. Här kan information lagras i exempelvis en array, vilket underlättar sökning som då kan ske binärt. Detta håller nere söktiden samt kostnaden för varje sökning.*/

 

·        Flicka 2,5 mån, sjuk i 4 dagar

·        rinnande snuva som övergått till att bli vit, halvtjock

·        försämrad smak och lukt

·        måttlig feber 38-39 grader

·        svårt att sova på natten

 

showDiagnos(virusbunden snuva som övergått till bakteriell infektion);

 

·        Pojke 5 år, sjuk i 5 dagar

·        vit, halvtjock snuva

·        försämrad smak och lukt

·        måttlig/hög feber 38-39 grader, som successivt stiger

·        huvudvärk och värk i kinderna, halsont

 

showDiagnos(bihåleinflammation);

 

·        Pojke 3 år, sjuk i 5 dagar

·        vit, halvtjock snuva

·        gnällig, svårt att äta och dricka

·        måttlig/hög feber 38-39 grader, som successivt stiger

·        ont i hals och öron

 

showDiagnos(öroninflammation);

 

·        Pojke 6 år, besvär i ca 1 månad

·        trött, gnällig

·        konstant kliig i ögon och hals, hostar upp segt slem

·        periodvisa andningsproblem, då pipljud vid utandning

·        för övrigt ingen allmänpåverkan

 

showDiagnos(allergi, hösnuva, astma);

 

·        Flicka 7 år, sjuk i 4 dagar

·        frysningar, hög feber

·        kräkningar, illamående, huvudvärk

·        svårt att äta och dricka

·        svullen och öm i och på halsen

 

showDiagnos(halsfluss);

 

·        Flicka 1,5 år, sjuk i 14 dagar

·        trött, gnällig

·        snuva, hosta, måttlig feber

·        stötvisa hostanfall nattetid, med pipande luftindragningar

·        ibland avslutas anfallet med kräkning

 

showDiagnos(kikhosta);

 

·        Flicka 9 år, sjuk i 6 dagar

·        trött, aptitlös

·        snuva och halsont. De första dagarna måttlig feber, som sedan successivt stiger

·        frossbrytningar och lätt andfåddhet

·        rostfärgade upphostningar

 

showDiagnos(lunginflammation);

 

·        Fall 8

·        Pojke 8 månader

·        låg allmänpåverkan

·        hög feber

·        blekröda, flammiga utslag i huvudsak på bålen

 

showDiagnos(Tredagarsfeber);

 

·        flicka 15 år

·        feber

·        snuva

·        muskelvärk

·        svullna lymfkörtlar i armhålor och ljumskar

·        blekröda utslag med inslag av lätt upphöjda fläckar (röda hundliknande)

 

showDiagnos(Körtelfeber);

 

·        pojke 5 år

·        låg allmänpåverkan

·        trötthet

·        blåsformiga utslag som kliar

·        dessa har delvis fallit av och lämnat skorpor

 

showDiagnos(Vattkoppor);

 

·        flicka 10 år

·        allmänpåverkad

·        halsont

·        ont i en eller flera leder

·        blekröda utslag med inslag av lätt upphöjda fläckar

·        början i ansikte

 

showDiagnos(Röda Hund);

 

·        pojke 8 år

·        hög feber

·        allmänpåverkad

·        snuva

·        ont i ögon

·        små röda upphöjda fläckar

·        vita prickar på kindernas insida

 

showDiagnos(Mässling);

 

 

·        flicka 9 år

·        feber

·        finprickiga, sammanflytande utslag

·        rodnad i ansikte

·        torr och fnasig hud

·        utslagen börjat på rygg samt hals

·        utslagen spridits snabbt

·        vit beläggning på tunga

·        smultrontunga

 

showDiagnos(Scharlakansfeber);

 

·               Fall 14
 
·                             flicka 2 mån 
·                             varaktighet: < 2 dagar
·                             upprepande kräkningar
·                             stora sprutande kräkningar
·                             ej feber
·                             mindre än 10% viktminskning
·                             moder ammar
 
showDiagnos(pylorusstenos / förträngning av nedre magmunnen);
 
·               Fall 15
 
·                             flicka 2 veckor
·                             skrikperioder 2ggr / dag
·                             varaktighet: 5 dagar
·                             spänd buk
·                             gaser
·                             ej feber
 
showDiagnos(tremånaderskolik);
 
·               Fall 16
 
·                             pojke 4 år
·                             feber  39 grader
·                             allmäntillstånd påverkat
·                             kräks vid intag utav mat och dryck
·                             varaktighet: 2 dagar 
·                             inga andra symtom
·                             kissade för en timme sedan 
·                             får behålla små mängder av vätska
·                             ej viktminskning
 
showDiagnos(maginfluensa);
 
·               Fall 17
 
·                             pojke 7 år
·                             feber 38.5 grader
·                             smärtor i buken 
·                             illamående
·                             kräkningar
·                             diarré
·                             varaktighet: < 1 dag
·                             spänd buk
·                             allmänpåverkad
 
showDiagnos(blindtarmsinflammation);
 
·               Fall 18
 
·                             flicka 6 mån
·                             varaktighet: < 1 dagar
·                             buksmärtor
·                             blekhet
·                             kallsvettningar
·                             intervallsmärtor
·                             ingen feber
·                             allmänpåverkad
 
showDiagnos(invagination);

 

·               Fall 19
 
·                             pojke 3,5 mån 
·                             utslag i blöjområde i 2 dygn
·                             ej feber
·                             moder ammar, har ätit apelsiner
 
showDiagnos(blöjutslag i form av lättare eksem);
 
·               Fall 20
 
·                             flicka 3 år
·                             fjällande rodnande områden  i 
·                             ljumskar.
·                             använder ej blöjor
·                             varaktighet: ca 2 veckor
·                             ej feber
·                             ej allmänpåverkad
·                             tidigare tecken på överkänslighet mot tvättmedel.
·                             moder har nyligen bytt tvättmedel
 
showDiagnos(allergisk reaktion vilken yttrat sig i eksem);
 
·               Fall 21
 
·                             flicka 9 år
·                             kraftig klåda mellan fingrar och på magen med början för tre dagar sedan
·                             ej feber
·                             ej allmänpåverkad
 
showDiagnos(skabb);
 
·                Fall 22
·                             pojke 4,5 år
·                             feta skorptäckta fläckar på huvudet
·                             varaktighet: ca 1 vecka
·                             ej feber
·                             ej allmänpåverkad
 
showDiagnos(skorv);
 
·               Fall 23
 
·                             flicka 6 mån
·                             variga sår kring näsa och mun i ca 3 dagar 
·                             förkylning som varat i 1 vecka
·                             måttlig feber
·                             ej allmänpåverkad
 
showDiagnos(Impetigo);
 
·               Fall 24
 
·                             flicka 4 månader
·                             utslag med början på kinder som spridit sig till armveck och knäveck.
·                             Obetydig klåda till en början som nu blivit värre.
·                             varaktighet: ca 1 vecka
·                             moder ammar inte
·                             barnet får tillägg
·                             barnet har börjat med smakportioner
 
showDiagnos(eksem);
 
10. Källa
 

Russel, Stuart and Norvig, Peter, Artificial intelligence, a modern approach, Prentice-Hall, New Jersey, 1995.

 

Darlington, Keith, The essence of expert systems, Prentice-Hall and Pearson Education Limited 2000, http://www.pearsoneduc.com