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