Experto en enfermedades (versión en SBASIC)
Descripción del contenido de la página
Sistema experto sobre enfermedades, escrito en SBASIC para el sistema operativo SMSQ/E.
Etiquetas:
Código fuente
00100 REMark Experto en enfermedades
00110 REMark (Expert on diseases)
00120 :
00132 REMark Copyright (C) 1988, 1989, 2024, 2025, Marcos Cruz (programandala.net)
00134 REMark Licencia/Permesilo/Licence: http://programandala.net/licencia
00135 :
00136 REMArk Last modified 20250812T1927+0200.
00137 REMArk See change log at the end of the file.
00138 :
00141 REMark Credits {{{1
00142 REMark ===================================================================
00143 :
00150 REMark The original code was written by Chris Naylor in Applesoft BASIC
00151 REMark and Sinclair BASIC, and published in his book "Build your own Expert
00152 REMark System" (ISBN 0-905104-412, 1984). This version in SBASIC was written
00153 REMark after the Spanish version of the book, titled "Construya su propio
00153 REMark sistema experto" (ISBN 84-86251-33-8, 1986), translated by Gregorio
00153 REMark Fernández and published by Díaz de Santos.
00190 :
00480 REMark Screen {{{1
00490 REMark ===================================================================
00500 :
00510 window%=0
00520 WINDOW #window%,SCR_XLIM,SCR_YLIM,0,0
00530 PAPER#window%,0
00540 INK#window%,3
00550 CSIZE#window%,1,1
00560 CLS#window%
00570 characters_per_line%=80
00575 :
00577 REMark Credits {{{1
00578 REMark ===================================================================
00579 :
00580 echo "Experto en enfermedades"
00590 echo ""
00600 echo "Versión en SBASIC para SMSQ/E por Marcos Cruz (programandala.net), 2024/2025, basada en:"
00610 echo "Versión en SuperBASIC para QDOS por Marcos Cruz (programandala.net), 1988/1989, basada en:"
00620 echo "Versión en Sinclair BASIC por Chris Naylor, 1984 (en su libro 'Construya su propio sistema experto', Díaz de Santos, 1986)"
00630 echo ""
00660 :
00740 REMark Constants {{{1
00745 REMark ===================================================================
00750 :
00760 diseases%=91
00770 symptoms%=68
00771 end_of_data%=999
00772 :
00773 REMark Arrays {{{1
00774 REMark ===================================================================
00750 :
00780 DIM prob(diseases%)
00790 DIM value(symptoms%)
00800 DIM symptoms_left%(diseases%)
00810 DIM min_prob(diseases%)
00820 DIM max_prob(diseases%)
00830 DIM symptoms_count%(diseases%)
00835 DIM asked_symptom%(symptoms%)
00840 :
00850 REMark Find the a priori probability and the rule values {{{1
00855 REMark ===================================================================
00860 :
00870 REPeat consult:REMark Main loop
00880 :
00890 REPeat ready
00900 echo "¿Comenzamos una consulta?"
00910 answer$=LOWER$(EDIT$(#window%,""))
00980 IF answer$ instr "s" & chr$(10) & "sí":EXIT ready
00990 IF answer$ instr "n" & chr$(10) & "no":EXIT consult
01010 echo "Por favor, responda sí o no."
01020 END REPeat ready
01030 echo "Muy bien."
01040 :
01090 RESTORE
01100 FOR disease%=1 TO diseases%
01110 READ disease_name$,prob(disease%)
01120 current_prob=prob(disease%)
01130 REPeat read_disease_symptom
01140 READ symptom%
01150 IF symptom%=end_of_data%:EXIT read_disease_symptom
01160 READ pro_prob,con_prob
01170 symptoms_left%(disease%)=symptoms_left%(disease%)+1
01180 value(symptom%)=value(symptom%)+ABS(current_prob*pro_prob/(current_prob*pro_prob+(1-current_prob)*con_prob)-current_prob*(1-pro_prob)/(current_prob*(1-pro_prob)+(1-current_prob)*(1-con_prob)))
01190 END REPeat read_disease_symptom
01200 symptoms_count%(disease%)=symptoms_left%(disease%)
01210 END FOR disease%
01220 :
01230 REPeat ask_symptom
01240 :
01250 REMark Find the most important symptom and ask about it {{{2
01255 REMark ---------------------------------------------
01260 :
01270 min_value=0
01280 symptom_to_ask_for%=0
01290 FOR symptom%=1 TO symptoms%
01300 IF value(symptom%)>min_value
01310 symptom_to_ask_for%=symptom%
01320 min_value=value(symptom%)
01330 END IF
01340 value(symptom%)=0
01350 END FOR symptom%
01360 IF symptom_to_ask_for%=0
01370 echo "No hay más preguntas."
01380 NEXT consult
01390 END IF
01400 FOR symptom%=1 TO symptom_to_ask_for%
01410 READ question$
01420 END FOR symptom%
01430 echo "¿"&question$
01440 asked_symptom%(symptom_to_ask_for%)=1
01450 REPeat ask_for_an_answer
01460 echo "-5 (=no) ... 0 ... 5 (=sí)"
01470 answer$=EDIT$(#window%,"")
01490 SELect ON LEN(answer$)
01500 =1
01510 IF NOT(answer$ INSTR "012345"):NEXT ask_for_an_answer
01520 =2
01530 IF NOT(answer$(1) INSTR "+-"):NEXT ask_for_an_answer
01540 IF NOT(answer$(2) INSTR "012345"):NEXT ask_for_an_answer
01550 =REMAINDER
01560 NEXT ask_for_an_answer
01570 END SELect
01580 EXIT ask_for_an_answer
01590 END REPeat ask_for_an_answer
01600 :
01610 REMark Update the a priori probabilities {{{2
01615 REMark ---------------------------------------------
01620 :
01630 RESTORE
01640 FOR disease%=1 TO diseases%
01650 READ disease_name$
01660 READ void:REMark skip the a priori probability
01670 FOR k=1 TO symptoms_count%(disease%)
01680 READ symptom%,pro_prob,con_prob
01690 IF symptom%=symptom_to_ask_for% AND symptoms_left%(disease%)
01700 symptoms_left%(disease%)=symptoms_left%(disease%)-1
01710 current_prob=prob(disease%)
01720 pe=current_prob*pro_prob+(1-current_prob)*con_prob
01730 IF answer$>0
01740 prob(disease%)=current_prob*(1+(pro_prob/pe-1)*answer$/5)
01750 END IF
01760 IF answer$<=0
01770 prob(disease%)=current_prob*(1+(pro_prob-(1-pro_prob)*pe/(1-pe))*answer$/5)
01780 END IF
01790 IF prob(disease%)=INT(prob(disease%))
01800 symptoms_left%(disease%)=0
01810 END IF
01820 END IF
01830 END FOR k
01840 READ void:REMark skip the end of symptoms marker
01850 END FOR disease%
01860 :
01870 REMark Find new min and max rule values {{{2
01875 REMark ---------------------------------------------
01880 :
01890 RESTORE
01900 current_min_prob=0
01910 hypothesis%=0
01920 FOR disease%=1 TO diseases%
01930 current_prob=prob(disease%)
01940 a1=1
01950 a2=1
01960 a3=1
01970 a4=1
01980 READ disease_name$,disease_prob
01990 FOR k=1 TO symptoms_count%(disease%)
02000 READ symptom%,pro_prob,con_prob
02010 IF NOT(asked_symptom%(symptom%)) AND symptoms_left%(disease%)
02020 IF con_prob>pro_prob
02030 pro_prob=1-pro_prob
02040 con_prob=1-con_prob
02050 END IF
02060 value(symptom%)=value(symptom%)+current_prob*pro_prob/(current_prob*pro_prob+(1-current_prob)*con_prob)-current_prob*(1-pro_prob)/(current_prob*(1-pro_prob)+(1-current_prob)*(1-con_prob))
02070 a1=a1*pro_prob
02080 a2=a2*con_prob
02090 a3=a3*(1-pro_prob)
02100 a4=a4*(1-con_prob)
02110 END IF
02120 END FOR k
02130 max_prob(disease%)=current_prob*a1/(current_prob*a1+(1-current_prob)*a2)
02140 min_prob(disease%)=current_prob*a3/(current_prob*a3+(1-current_prob)*a4)
02150 IF max_prob(disease%)<disease_prob:symptoms_left%(disease%)=0
02160 IF min_prob(disease%)>current_min_prob
02170 hypothesis%=disease%
02180 current_min_prob=min_prob(disease%)
02190 END IF
02200 READ void:REMark skip the end of symptoms marker
02210 END FOR disease%
02220 :
02230 REMark Search for a clearly possible hypothesis {{{2
02235 REMark ---------------------------------------------
02240 :
02250 FOR disease%=1 TO diseases%
02260 IF min_prob(hypothesis%)<=max_prob(disease%) AND disease%<>hypothesis%:current_min_prob=0
02270 END FOR disease%
02280 IF current_min_prob<>0:EXIT ask_symptom
02290 :
02300 END REPeat ask_symptom
02310 :
02320 REMark Display the hypothesis {{{1
02325 REMark ===================================================================
02330 :
02340 RESTORE
02350 FOR disease%=1 TO hypothesis%
02360 READ disease_name$,void
02370 FOR k=1 TO symptoms_count%(disease%)
02380 READ symptom%,pro_prob,con_prob
02390 END FOR k
02400 READ void:REMark skip the end of symptoms marker
02410 END FOR disease%
02420 echo "El resultado más probable es "&disease_name$&" con probabilidad "&prob(hypothesis%)
02430 :
02440 END REPeat consult:REMark Main loop
02450 :
02480 echo "Adiós."
02490 STOP
02500 :
02510 REMark Print a text left-justified {{{1
02515 REMark ===================================================================
02520 :
02530 DEFine PROCedure echo(text$)
02540 LOCal free_spaces_on_the_line%,space_position%,finish_words%
02550 free_spaces_on_the_line%=characters_per_line%
02560 REPeat echo_words
02570 finish_words%=0
02580 space_position%=" " INSTR text$
02590 IF NOT(space_position%)
02600 space_position%=LEN(text$)
02610 finish_words%=1
02620 END IF
02630 IF space_position%>free_spaces_on_the_line%
02640 PRINT#window%
02650 free_spaces_on_the_line%=characters_per_line%
02660 END IF
02670 PRINT#window%,text$(1 TO space_position%);
02680 IF finish_words%:EXIT echo_words
02690 text$=text$(space_position%+1 TO)
02700 free_spaces_on_the_line%=free_spaces_on_the_line%-space_position%
02710 END REPeat echo_words
02720 PRINT#window%
02730 END DEFine echo
02740 :
02750 REMark Data {{{1
02760 REMark ===================================================================
02770 :
02800 REMark Diseases {{{2
02812 REMark -----------------------------------------------
02810 :
02820 DATA "resfriado común",0.02
02830 DATA 1,.9,0.05
02840 DATA 2,.8,0.02
02850 DATA 3,.8,0.02
02860 DATA 5,.6,0.01
02870 DATA 6,1,0.01
02880 DATA 7,.2,0.01
02890 DATA 8,.5,0.01
02900 DATA 15,.8,0.01
02910 DATA 34,0,0.01
02920 DATA end_of_data%
02930 DATA "rinitis alérgica",0.01
02940 DATA 1,1,0.01
02950 DATA 2,1,0.01
02960 DATA 6,.9,0.01
02970 DATA 10,.7,0.01
02980 DATA 11,.7,0.01
02990 DATA 12,.6,0.01
03000 DATA 20,.9,0.01
03010 DATA end_of_data%
03020 DATA "sinusitis",0.01
03030 DATA 2,.5,0.01
03040 DATA 6,.5,0.01
03050 DATA 7,.8,0.01
03060 DATA 13,.9,0.01
03070 DATA 14,.8,0.01
03080 DATA 15,.8,0.01
03090 DATA 22,.5,0.01
03100 DATA 63,.9,0.01
03110 DATA end_of_data%
03120 DATA "faringitis",0.02
03130 DATA 3,1,0.01
03140 DATA 8,.5,0.01
03150 DATA 11,.9,0.01
03160 DATA 16,.9,0.01
03170 DATA 37,.8,.3
03180 DATA 64,.4,0.01
03190 DATA end_of_data%
03200 DATA "amigdalitis",0.001
03210 DATA 3,1,0.01
03220 DATA 7,.9,0.01
03230 DATA 8,.9,0.01
03240 DATA 15,1,0.01
03250 DATA 16,.7,0.01
03260 DATA 19,0,.5
03270 DATA 34,0,0.01
03280 DATA 64,.8,0.01
03290 DATA end_of_data%
03300 DATA "gripe",0.01
03310 DATA 1,.9,0.01
03320 DATA 3,.9,0.01
03330 DATA 6,.5,0.01
03340 DATA 7,.7,0.01
03350 DATA 8,1,0.01
03360 DATA 15,1,0.01
03370 DATA 17,.8,0.01
03380 DATA 18,.6,0.01
03390 DATA 34,0,0.01
03400 DATA end_of_data%
03410 DATA "laringitis",0.01
03420 DATA 4,1,0.01
03430 DATA 5,.9,0.01
03440 DATA 8,.6,0.01
03450 DATA 15,0.05,0.01
03460 DATA 16,.7,0.01
03470 DATA 37,.8,.3
03480 DATA 21,.1,0.01
03490 DATA end_of_data%
03500 DATA "tumor de laringe",0.00004
03510 DATA 4,1,0.01
03520 DATA 34,.99,0.01
03530 DATA 37,.8,.3
03540 DATA end_of_data%
03550 DATA "bronquitis aguda",0.005
03560 DATA 5,1,0.01
03570 DATA 8,1,0.01
03580 DATA 12,1,0.01
03590 DATA 15,1,0.01
03600 DATA 18,.5,0.01
03610 DATA 21,1,0.01
03620 DATA 22,.9,0.01
03630 DATA 31,.9,0.01
03640 DATA 34,0,0.01
03650 DATA end_of_data%
03660 DATA "bronquitis crónica",0.005
03670 DATA 5,1,0.01
03680 DATA 12,.9,0.01
03690 DATA 14,.5,0.01
03700 DATA 21,1,0.01
03710 DATA 22,.8,0.01
03720 DATA 34,1,0.01
03730 DATA 36,.9,0.01
03740 DATA 37,.8,.3
03750 DATA end_of_data%
03760 DATA "asma",0.02
03770 DATA 12,.8,0.01
03780 DATA 22,1,0.01
03790 DATA 23,.5,0.01
03800 DATA 24,.5,0.01
03810 DATA 25,.5,0.01
03820 DATA 26,.5,0.01
03830 DATA 31,.8,0.01
03840 DATA end_of_data%
03850 DATA "enfisema pulmonar",0.01
03860 DATA 5,.6,0.01
03870 DATA 12,.6,0.01
03880 DATA 21,.6,0.01
03890 DATA 22,1,0.01
03900 DATA 26,.8,0.01
03910 DATA 37,.8,.3
03920 DATA end_of_data%
03930 DATA "neumonía",0.003
03940 DATA 8,1,0.01
03950 DATA 15,1,0.01
03960 DATA 17,.9,0.01
03970 DATA 18,.8,0.01
03980 DATA 22,1,0.01
03990 DATA 23,.5,0.01
04000 DATA 26,.5,0.01
04010 DATA 27,.2,0.01
04020 DATA 28,.1,0.01
04030 DATA 29,0.02,0.01
04040 DATA 31,.9,0.01
04050 DATA 32,.5,0.005
04060 DATA 36,.1,.9
04070 DATA end_of_data%
04080 DATA "pleuresia",0.001
04090 DATA 5,.8,0.01
04100 DATA 8,.9,0.01
04110 DATA 15,1,0.01
04120 DATA 22,.5,0.01
04130 DATA 31,.8,0.01
04140 DATA 32,.8,0.01
04150 DATA 34,0,0.01
04160 DATA end_of_data%
04170 DATA "neumotórax",0.0002
04180 DATA 18,.8,0.01
04190 DATA 22,.8,0.01
04200 DATA 32,.8,0.005
04210 DATA end_of_data%
04220 DATA "bronquiectasia",0.00001
04230 DATA 5,1,0.01
04240 DATA 14,.5,0.01
04250 DATA 21,1,0.01
04260 DATA 27,.5,0.01
04270 DATA end_of_data%
04280 DATA "abceso pulmonar",0.00001
04290 DATA 18,.5,0.01
04300 DATA 21,.5,0.01
04310 DATA 27,.5,0.01
04320 DATA 33,.9,0.01
04330 DATA end_of_data%
04340 DATA "neumoconiosis",0.001
04350 DATA 9,1,0.01
04360 DATA 21,.8,0.01
04370 DATA 22,1,0.01
04380 DATA 36,1,0.01
04390 DATA end_of_data%
04400 DATA "cáncer de pulmón",0.001
04410 DATA 5,1,0.01
04420 DATA 12,.5,0.01
04430 DATA 18,.8,0.01
04440 DATA 21,.8,0.01
04450 DATA 22,.5,0.01
04460 DATA 27,.5,0.01
04470 DATA 37,.99,.3
04480 DATA end_of_data%
04490 DATA "fibrosis intersticial",0.00001
04500 DATA 21,.6,0.01
04510 DATA 22,.8,0.01
04520 DATA 35,.8,0.01
04530 DATA end_of_data%
04540 DATA "edema pulmonar",0.001
04550 DATA 12,.8,0.01
04560 DATA 22,.9,0.01
04570 DATA 25,.9,0.01
04580 DATA 26,.5,0.01
04590 DATA 27,.5,0.01
04600 DATA 30,.5,0.01
04610 DATA end_of_data%
04620 DATA "gastritis",0.01
04630 DATA 8,.4,0.01
04640 DATA 37,.9,.5
04650 DATA 41,0.01,.8
04660 DATA 43,.8,0.01
04670 DATA 42,.5,0.01
04680 DATA end_of_data%
04690 DATA "hernia de hiato",0.001
04700 DATA 16,.9,0.01
04710 DATA 18,.9,0.01
04720 DATA 32,.5,0.005
04730 DATA 41,.8,0.01
04740 DATA 42,.8,0.005
04750 DATA 57,.9,0.01
04760 DATA end_of_data%
04770 DATA "úlcera duodenal",0.01
04780 DATA 37,.8,.2
04790 DATA 41,.8,0.01
04800 DATA 42,.99,0.005
04810 DATA 57,.7,0.01
04820 DATA end_of_data%
04830 DATA "úlcera gástrica",0.01
04840 DATA 20,.8,0.01
04850 DATA 41,.7,0.01
04860 DATA 42,.9,0.005
04870 DATA 46,.5,0.01
04880 DATA 56,.9,0.01
04890 DATA 62,0.0001,0.01
04900 DATA end_of_data%
04910 DATA "diverticulitis intestinal",0.001
04920 DATA 8,.5,0.01
04930 DATA 41,.5,0.01
04940 DATA 42,.6,0.005
04950 DATA 43,.5,0.01
04960 DATA 56,.8,0.01
04970 DATA end_of_data%
04980 DATA "enterocolitis",0.0001
04990 DATA 8,.3,0.01
05000 DATA 23,.3,0.01
05010 DATA 41,.3,0.01
05020 DATA 42,.9,0.005
05030 DATA 43,.7,0.01
05040 DATA end_of_data%
05050 DATA "enfermedad de Crohn",0.0001
05060 DATA 8,.7,0.01
05070 DATA 15,.9,0.01
05080 DATA 42,.9,0.005
05090 DATA 43,.9,0.01
05100 DATA 62,0.00001,0.01
05110 DATA end_of_data%
05120 DATA "oclusión intestinal",0.00001
05130 DATA 41,.5,0.01
05140 DATA 42,.9,0.005
05150 DATA 43,.8,0.01
05160 DATA end_of_data%
05170 DATA "apendicitis",0.001
05180 DATA 8,.8,0.01
05190 DATA 34,.1,.9
05200 DATA 41,.8,0.01
05210 DATA 42,.9,0.005
05220 DATA 44,0,.5
05230 DATA end_of_data%
05240 DATA "intoxicación alimentaria",0.001
05250 DATA 7,.8,0.01
05260 DATA 41,.9,0.01
05270 DATA 42,.5,0.005
05280 DATA 43,.9,0.01
05290 DATA end_of_data%
05300 DATA "gastroenteritis",0.01
05310 DATA 8,.5,0.01
05320 DATA 41,.8,0.01
05330 DATA 42,.7,0.005
05340 DATA 43,.9,0.01
05350 DATA end_of_data%
05360 DATA "litiasis renal",0.001
05370 DATA 42,.7,0.005
05380 DATA end_of_data%
05390 DATA "pielonefritis aguda",0.001
05400 DATA 8,.8,0.01
05410 DATA 41,.7,0.01
05420 DATA 42,.9,0.005
05430 DATA 67,.9,0.01
05440 DATA end_of_data%
05450 DATA "litiasis biliar",0.01
05460 DATA 41,.5,0.01
05470 DATA 42,.5,0.005
05480 DATA 57,.9,0.01
05490 DATA end_of_data%
05500 DATA "colecistitis",0.001
05510 DATA 8,.9,0.01
05520 DATA 41,.8,0.01
05530 DATA 42,.8,0.005
05540 DATA 45,.8,0.001
05550 DATA end_of_data%
05560 DATA "herpes",0.001
05570 DATA 2,.6,0.01
05580 DATA 8,.5,0.01
05590 DATA 14,.8,0.01
05600 DATA 18,.5,0.01
05610 DATA 59,.9,0.01
05620 DATA 60,.9,0.01
05630 DATA end_of_data%
05640 DATA "tromboflebitis",0.0005
05650 DATA 40,.8,0.01
05660 DATA end_of_data%
05670 DATA "artritis reumatoide",0.001
05680 DATA 15,.8,0.01
05690 DATA 17,.8,0.01
05700 DATA 40,.5,0.001
05710 DATA end_of_data%
05720 DATA "insuficiencia cardiaca",0.001
05730 DATA 12,.6,0.01
05740 DATA 18,.5,0.01
05750 DATA 22,.9,0.01
05760 DATA 25,.5,0.001
05770 DATA 26,.3,0.001
05780 DATA 32,.3,0.001
05790 DATA 36,.5,0.01
05800 DATA 39,.5,0.01
05810 DATA 42,.5,0.01
05820 DATA 47,.9,0.01
05830 DATA end_of_data%
05840 DATA "ansiedad",0.01
05850 DATA 7,.5,0.01
05860 DATA 15,.5,0.01
05870 DATA 16,.3,0.01
05880 DATA 22,.5,0.01
05890 DATA 23,.6,0.01
05900 DATA 28,.3,0.01
05910 DATA 38,.5,0.01
05920 DATA 39,.8,0.01
05930 DATA 43,.2,0.01
05940 DATA 46,.9,0.01
05950 DATA 47,.6,0.01
05960 DATA 48,.6,0.01
05970 DATA 50,.5,0.01
05980 DATA 57,.5,0.01
05990 DATA 58,.5,0.01
06000 DATA end_of_data%
06010 DATA "depresión",0.01
06020 DATA 7,.5,0.01
06030 DATA 15,.5,0.01
06040 DATA 47,.5,0.01
06050 DATA 49,.5,0.01
06060 DATA 50,.5,0.01
06070 DATA 62,.8,0.01
06080 DATA end_of_data%
06090 DATA "trombosis coronaria",0.01
06100 DATA 15,.9,0.01
06110 DATA 18,.5,0.01
06120 DATA 20,.5,0.01
06130 DATA 22,.5,0.01
06140 DATA 23,.5,0.01
06150 DATA 32,.9,0.001
06160 DATA 36,0,.2
06170 DATA 38,.5,0.01
06180 DATA 41,.5,0.01
06190 DATA end_of_data%
06200 DATA "angina de pecho",0.01
06210 DATA 18,.9,0.01
06220 DATA 20,.9,0.01
06230 DATA 22,.5,0.01
06240 DATA 23,.5,0.01
06250 DATA 32,1,0.001
06260 DATA 36,.9,0.01
06270 DATA 37,.8,.3
06280 DATA 38,.5,0.01
06290 DATA end_of_data%
06300 DATA "embolia pulmonar",0.0001
06310 DATA 18,.7,0.01
06320 DATA 21,.6,0.01
06330 DATA 22,1,0.01
06340 DATA 25,.5,0.001
06350 DATA 26,.4,0.001
06360 DATA 27,.5,0.001
06370 DATA end_of_data%
06380 DATA "apoplegía",0.001
06390 DATA 28,.8,0.01
06400 DATA 38,.7,0.01
06410 DATA 51,.8,0.001
06420 DATA 58,.9,0.01
06430 DATA 61,.9,0.01
06440 DATA end_of_data%
06450 DATA "ataque isquémico transitorio",0.001
06460 DATA 20,.5,0.01
06470 DATA 28,.8,0.01
06480 DATA 34,0,0.01
06490 DATA 38,.7,0.01
06500 DATA 51,.8,0.001
06510 DATA 58,.9,0.01
06520 DATA 61,.9,0.01
06530 DATA end_of_data%
06540 DATA "tuberculosis",0.0001
06550 DATA 5,.5,0.01
06560 DATA 7,.5,0.01
06570 DATA 8,.5,0.01
06580 DATA 12,.5,0.01
06590 DATA 15,.5,0.01
06600 DATA 18,.5,0.01
06610 DATA 22,.5,0.01
06620 DATA 23,.5,0.01
06630 DATA 27,.5,0.001
06640 DATA 30,.5,0.01
06650 DATA 62,0.0001,0.01
06660 DATA end_of_data%
06670 DATA "hemorroides",0.01
06680 DATA 49,.8,0.01
06690 DATA 52,.9,0.001
06700 DATA 56,.9,0.01
06710 DATA 59,.5,0.01
06720 DATA end_of_data%
06730 DATA "hipotiroidismo",0.001
06740 DATA 4,.5,0.01
06750 DATA 17,.5,0.01
06760 DATA 23,0.001,0.01
06770 DATA 24,0,0.01
06780 DATA 39,0.001,0.01
06790 DATA 43,0,0.01
06800 DATA 46,0.001,0.01
06810 DATA 48,0.001,0.01
06820 DATA 49,.8,0.01
06830 DATA 62,.9,0.05
06840 DATA end_of_data%
06850 DATA "colon irritable",0.0007
06860 DATA 41,.3,0.01
06870 DATA 42,.8,0.001
06880 DATA 43,.5,0.01
06890 DATA 49,.5,0.01
06900 DATA 56,.5,0.01
06910 DATA 57,.9,0.01
06920 DATA end_of_data%
06930 DATA "cáncer intestinal",0.001
06940 DATA 42,.5,0.005
06950 DATA 43,.9,0.01
06960 DATA 49,.9,0.01
06970 DATA 52,.5,0.001
06980 DATA 56,.9,0.01
06990 DATA 62,0.0001,0.01
07000 DATA end_of_data%
07010 DATA "colitis ulcerosa",0.0004
07020 DATA 8,.5,0.01
07030 DATA 23,.5,0.01
07040 DATA 34,.4,0.01
07050 DATA 41,.5,0.01
07060 DATA 42,.8,0.005
07070 DATA 43,.8,0.01
07080 DATA 52,.6,0.001
07090 DATA 56,.9,0.01
07100 DATA end_of_data%
07110 DATA "enfermedad de Meniere",0.0005
07120 DATA 20,.9,0.01
07130 DATA 34,.5,0.01
07140 DATA 38,.9,0.001
07150 DATA 41,.8,0.01
07160 DATA end_of_data%
07170 DATA "espondilosis cervical",0.006
07180 DATA 7,.5,0.01
07190 DATA 38,.5,0.01
07200 DATA 54,.9,0.01
07210 DATA 58,.9,0.01
07220 DATA 61,.5,0.01
07230 DATA end_of_data%
07240 DATA "hemorragia subdural",0.000001
07250 DATA 7,.9,0.01
07260 DATA 20,.5,0.01
07270 DATA 28,.9,0.001
07280 DATA 34,.5,0.01
07290 DATA 38,.9,0.01
07300 DATA 41,.9,0.01
07310 DATA 55,.99,0.001
07320 DATA end_of_data%
07330 DATA "tumor cerebral",0.000001
07340 DATA 7,.9,0.01
07350 DATA 34,.5,0.01
07360 DATA 38,.8,0.01
07370 DATA 41,.9,0.01
07380 DATA 50,.8,0.01
07390 DATA end_of_data%
07400 DATA "meningitis",0.000001
07410 DATA 2,.9,0.01
07420 DATA 7,.9,0.01
07430 DATA 8,.9,0.01
07440 DATA 28,.7,0.01
07450 DATA 41,.9,0.01
07460 DATA 54,.9,0.01
07470 DATA 60,.5,0.01
07480 DATA end_of_data%
07490 DATA "hemorragia subaracnoidea",0.00001
07500 DATA 2,.8,0.01
07510 DATA 7,.99,0.01
07520 DATA 28,.7,0.01
07530 DATA 38,.7,0.01
07540 DATA 41,.8,0.01
07550 DATA 54,.9,0.01
07560 DATA end_of_data%
07570 DATA "glaucoma agudo",0.01
07580 DATA 2,.9,0.01
07590 DATA 7,.9,0.01
07600 DATA 20,.8,0.01
07610 DATA 34,.8,0.01
07620 DATA 41,.7,0.01
07630 DATA 63,.9,0.01
07640 DATA 68,.9,0.01
07650 DATA end_of_data%
07660 DATA "arteritis de la temporal",0.001
07670 DATA 7,.9,0.01
07680 DATA 8,.7,0.01
07690 DATA 17,.7,0.01
07700 DATA 23,.8,0.01
07710 DATA 63,.99,0.01
07720 DATA end_of_data%
07730 DATA "dispepsia",.1
07740 DATA 7,.7,0.01
07750 DATA 20,.9,0.01
07760 DATA 41,.7,0.01
07770 DATA 42,.7,0.01
07780 DATA 57,.7,0.01
07790 DATA 62,0.001,0.01
07800 DATA end_of_data%
07810 DATA "bloqueo cardiaco",0.0003
07820 DATA 18,.6,0.01
07830 DATA 22,.5,0.01
07840 DATA 39,.6,0.01
07850 DATA 58,.8,0.01
07860 DATA end_of_data%
07870 DATA "anemia perniciosa",0.0004
07880 DATA 22,.9,0.01
07890 DATA 28,.4,0.01
07900 DATA 36,.9,0.01
07910 DATA 39,.9,0.01
07920 DATA 42,.5,0.01
07930 DATA 45,.5,0.01
07940 DATA 50,.5,0.01
07950 DATA 58,.9,0.01
07960 DATA end_of_data%
07970 DATA "jaqueca",.1
07980 DATA 2,.9,0.01
07990 DATA 7,1,0.01
08000 DATA 15,.9,0.01
08010 DATA 20,.9,0.01
08020 DATA 34,.9,0.01
08030 DATA 41,.9,0.01
08040 DATA 43,.5,0.01
08050 DATA 63,.99,0.01
08060 DATA end_of_data%
08070 DATA "hipertensión esencial",.15
08080 DATA 7,.5,0.01
08090 DATA 15,.9,0.01
08100 DATA 34,.9,0.01
08110 DATA 39,.5,0.01
08120 DATA end_of_data%
08130 DATA "eccema",0.03
08140 DATA 59,.9,0.01
08150 DATA 60,.1,0.01
08160 DATA end_of_data%
08170 DATA "urticaria",0.03
08180 DATA 46,.5,0.01
08190 DATA 59,.9,0.01
08200 DATA 60,1,0.01
08210 DATA end_of_data%
08220 DATA "sarna",0.001
08230 DATA 59,1,0.01
08240 DATA 60,1,0.01
08250 DATA end_of_data%
08260 DATA "sarampión",0.02
08270 DATA 2,.9,0.01
08280 DATA 5,.9,0.01
08290 DATA 6,.9,0.01
08300 DATA 7,.5,0.01
08310 DATA 8,1,0.01
08320 DATA 11,.9,0.01
08330 DATA 15,1,0.01
08340 DATA 34,0,0.01
08350 DATA 43,.5,0.01
08360 DATA 60,1,0.01
08370 DATA end_of_data%
08380 DATA "rubeola",0.01
08390 DATA 8,.5,0.01
08400 DATA 34,0,0.01
08410 DATA 54,.2,0.01
08420 DATA 60,.9,0.01
08430 DATA 64,.5,0.01
08440 DATA end_of_data%
08450 DATA "varicela",0.001
08460 DATA 7,.5,0.01
08470 DATA 8,.8,0.01
08480 DATA 15,.5,0.01
08490 DATA 34,0,0.01
08500 DATA 59,1,0.01
08510 DATA 60,1,0.01
08520 DATA end_of_data%
08530 DATA "psoriasis",0.02
08540 DATA 3,.5,0.01
08550 DATA 46,.6,0.01
08560 DATA 59,.5,0.01
08570 DATA 60,.99,0.01
08580 DATA end_of_data%
08590 DATA "pitiriasis rubra",0.01
08600 DATA 34,.5,0.01
08610 DATA 59,.9,0.01
08620 DATA 60,1,0.01
08630 DATA end_of_data%
08640 DATA "acné rosáceo",0.01
08650 DATA 2,.5,0.01
08660 DATA 34,.8,0.01
08670 DATA 60,.9,0.01
08680 DATA end_of_data%
08690 DATA "tirotoxicosis",0.001
08700 DATA 2,.5,0.01
08710 DATA 22,.8,0.01
08720 DATA 23,.9,0.01
08730 DATA 24,.9,0.01
08740 DATA 39,.9,0.01
08750 DATA 43,.8,0.01
08760 DATA 46,.9,0.01
08770 DATA 47,.8,0.01
08780 DATA 48,.9,0.01
08790 DATA 62,0.00001,0.01
08800 DATA 64,.3,0.01
08810 DATA 68,.3,0.01
08820 DATA end_of_data%
08830 DATA "diabetes mellitus",0.01
08840 DATA 2,.5,0.01
08850 DATA 61,.5,0.01
08860 DATA 62,0.0001,0.01
08870 DATA 66,.99,0.01
08880 DATA 68,1,0.01
08890 DATA end_of_data%
08900 DATA "cáncer de estómago",0.0003
08910 DATA 41,.5,0.01
08920 DATA 42,.7,0.005
08930 DATA 52,.6,0.001
08940 DATA 56,.5,0.01
08950 DATA 62,0.0001,0.01
08960 DATA end_of_data%
08970 DATA "fibrilación auricular",0.001
08980 DATA 20,.4,0.01
08990 DATA 38,.5,0.01
09000 DATA 39,.8,0.01
09010 DATA 58,.5,0.01
09020 DATA end_of_data%
09030 DATA "enfermedad de Hodgkin",0.0001
09040 DATA 23,.5,0.01
09050 DATA 54,.8,0.01
09060 DATA 59,.7,0.01
09070 DATA 63,.6,0.01
09080 DATA 64,.99,0.01
09090 DATA end_of_data%
09100 DATA "fiebre glandular",0.001
09110 DATA 3,.9,0.01
09120 DATA 7,.9,0.01
09130 DATA 8,.9,0.01
09140 DATA 15,.9,0.01
09150 DATA 45,.5,0.001
09160 DATA 54,.8,0.01
09170 DATA 60,.5,0.01
09180 DATA 64,.8,0.01
09190 DATA end_of_data%
09200 DATA "linfoma",0.0001
09210 DATA 8,.8,0.01
09220 DATA 15,.8,0.01
09230 DATA 23,.5,0.01
09240 DATA 54,.8,0.01
09250 DATA 59,.8,0.01
09260 DATA 62,0.001,0.01
09270 DATA 64,.9,0.01
09280 DATA end_of_data%
09290 DATA "paperas",0.01
09300 DATA 3,.8,0.01
09310 DATA 8,.8,0.01
09320 DATA 15,.9,0.01
09330 DATA 16,.7,0.01
09340 DATA 54,.6,0.01
09350 DATA 64,.99,0.01
09360 DATA end_of_data%
09370 DATA "parálisis facial",0.0003
09380 DATA 2,.9,0.01
09390 DATA 51,.9,0.01
09400 DATA 63,.5,0.01
09410 DATA end_of_data%
09420 DATA "enfermedad de Parkinson",0.001
09430 DATA 28,.2,0.01
09440 DATA 34,1,0.01
09450 DATA 48,.9,0.01
09460 DATA 50,.2,0.01
09470 DATA 51,.8,0.01
09480 DATA 53,.8,.5
09490 DATA end_of_data%
09500 DATA "artritis reumatoide",0.01
09510 DATA 7,.8,0.01
09520 DATA 8,.8,0.01
09530 DATA 15,.8,0.01
09540 DATA 48,.1,0.01
09550 DATA 59,0.001,0.01
09560 DATA 60,.5,0.01
09570 DATA 64,.8,0.01
09580 DATA end_of_data%
09590 DATA "cistitis",0.01
09600 DATA 8,.5,0.01
09610 DATA 65,.9,0.01
09620 DATA 66,.9,0.01
09630 DATA 67,.9,0.01
09640 DATA end_of_data%
09650 DATA "tumor renal",0.001
09660 DATA 8,.6,0.01
09670 DATA 41,.5,0.01
09680 DATA 42,.5,0.01
09690 DATA 62,0.0001,0.01
09700 DATA 65,.7,0.01
09710 DATA end_of_data%
09720 DATA "tumor en la vejiga",0.0004
09730 DATA 8,.3,0.01
09740 DATA 42,.5,0.01
09750 DATA 65,.9,0.01
09760 DATA 66,.5,0.01
09770 DATA 67,.5,0.01
09780 DATA end_of_data%
09790 DATA "iritis",0.0005
09800 DATA 2,.9,0.01
09810 DATA 68,.9,0.01
09820 DATA end_of_data%
09830 DATA "hepatitis aguda",0.001
09840 DATA 8,.8,0.01
09850 DATA 15,.8,0.01
09860 DATA 17,.5,0.01
09870 DATA 41,.5,0.01
09880 DATA 42,.5,0.01
09890 DATA 45,.5,0.01
09900 DATA end_of_data%
09910 :
09920 REMark Symptoms {{{2
09925 REMark -----------------------------------------------
09930 :
09950 DATA "Estornudas mucho?":REMark 1
09970 DATA "Te duelen los ojos, o lagrimeas mucho?":REMark 2
09990 DATA "Te duele la garganta?":REMark 3
10010 DATA "Tienes ronquera o afonía?":REMark 4
10030 DATA "Toses mucho?":REMark 5
10050 DATA "Tienes mucosidad nasal muy fluida?":REMark 6
10070 DATA "Te duele la cabeza, o sufres, en general, de dolores de cabeza?":REMark 7
10090 DATA "Tienes alta temperatura? (superior a 37 grados centígrados)":REMark 8
10110 DATA "Te ves obligado, por tu trabajo, a pasar muchas horas respirando aire viciado o polvoriento?":REMark 9
10130 DATA "Te pica la nariz?":REMark 10
10150 DATA "Tienes la garganta reseca?":REMark 11
10170 DATA "Respiras con dificultad y fatiga?":REMark 12
10190 DATA "Tienes la nariz muy taponada?":REMark 13
10210 DATA "Has tenido recientemente un resfriado u otra infección similar?":REMark 14
10230 DATA "Tienes malestar general?":REMark 15
10250 DATA "Tienes dificultad para tragar?":REMark 16
10270 DATA "Tienes dolores musculares?":REMark 17
10290 DATA "Sientes cualquier tipo de dolor en el pecho?":REMark 18
10310 DATA "Te han extirpado las amigdalas?":REMark 19
10330 DATA "Tus síntomas tienden a aparecer en ataques, y no a estar presentes continuamente?":REMark 20
10350 DATA "Tienes una tos productiva, o sea una tos en la que expulsas algo?":REMark 21
10370 DATA "Respiras entrecortadamente?":REMark 22
10390 DATA "Sudas mucho? (no ya cuando haces un esfuerzo, sino cuando estás físicamente relajado)":REMark 23
10410 DATA "Tienes la frecuencia cardiaca elevada? (normalmente, debe estar entre 60 y 80 pulsaciones por minuto, y algo más rápida para personas de edad superior a 70 o inferior a 20)":REMark 24
10430 DATA "Sufres ataques de dificultades respiratorias tan fuertes que llegan a preocuparte?":REMark 25
10450 DATA "Tienes cianosis, es decir, se te ha puesto la piel de un color ligeramente azulado?":REMark 26
10470 DATA "Cuando toses, presentan sangre los esputos?":REMark 27
10490 DATA "Estás aturdido o perplejo sobre cuanto acontece a tu alrededor?":REMark 28
10510 DATA "Estás (o está el/la paciente) en estado delirante, hablando incoherentemente y con mala coordinación muscular?":REMark 29
10530 DATA "Tienes una tos seca (no productiva)?":REMark 30
10550 DATA "Sientes dolor al respirar o al toser?":REMark 31
10570 DATA "Has sentido en estos días un dolor muy fuerte en el pecho?":REMark 32
10590 DATA "Tienes sensaciones alternantes de frío y calor?":REMark 33
10610 DATA "Hace ya tiempo (seis semanas o más) que presentas alguno de estos síntomas?":REMark 34
10630 DATA "Tienes los dedos hipocráticos, o en 'palillos de tambor'? (se llaman así cuando las cutículas casi han desaparecido, y las uñas se abomban excesivamente hacia la punta)":REMark 35
10650 DATA "Tienes síntomas que aparecen fundamentalmente al realizar algún esfuerzo?":REMark 36
10670 DATA "Fumas? responde con el número que resulta de dividir por cinco el número de cigarrillos diarios. El número máximo para la respuesta es 5. Si no fumas, responde -5.":REMark 37
10690 DATA "Tienes sensaciones de vértigo?":REMark 38
10710 DATA "Tienes palpitaciones? (sensación de que el corazón late más fuerte, o más rápido, o menos regularmente de lo que debiera)":REMark 39
10730 DATA "Tienes algún tobillo excesivamente hinchado?":REMark 40
10750 DATA "Tienes vómitos, o fuertes naúseas?":REMark 41
10770 DATA "Sufres de algún tipo de dolor abdominal, o dolor localizado entre las costillas inferiores y las ingles?":REMark 42
10790 DATA "Padeces diarrea, o sueles tener crisis de diarrea?":REMark 43
10810 DATA "Te han extirpado el apéndice?":REMark 44
10830 DATA "Tienes ictericia? (La ictericia no es una enfermedad, sino un síntoma. Con frecuencia es más patente en los ojos: la parte blanca se torna amarillenta.)":REMark 45
10850 DATA "Te sientes tenso o inquieto?":REMark 46
10870 DATA "Te cuesta conciliar el sueño, o te desvelas frecuentemente por la noche?":REMark 47
10890 DATA "Tienes contracciones involuntarias o temblores?":REMark 48
10910 DATA "Sufres de estreñimiento, o sueles tener crisis de estreñimiento?":REMark 49
10930 DATA "Te falla la memoria, tienes dificultad para recordar hechos aislados, ya sea ocasional o regularmente?":REMark 50
10950 DATA "Sufres afasia, es decir, has perdido capacidad para expresarte con palabras?":REMark 51
10970 DATA "Has tenido alguna hemorragia por el recto?":REMark 52
10990 DATA "Eres hombre o mujer? Responde con 5 para hombre y -5 para mujer. Una respuesta 0 hace que el diagnóstico sea independiente del sexo":REMark 53
11010 DATA "Tienes rigidez o dolor en el cuello?":REMark 54
11030 DATA "Has sufrido algún golpe o herida de cualquier tipo en la cabeza durante las últimas semanas? (un golpe incluso leve puede ser importante)":REMark 55
11050 DATA "Has expulsado recientemente heces de aspecto anormal?":REMark 56
11070 DATA "Expulsas muchos gases, por cualquier vía?":REMark 57
11090 DATA "Tienes sensaciones repentinas de desmayo, es decir, de sentirte desfallecido y mareado, incluso, quizás con pérdida de consciencia?":REMark 58
11110 DATA "Te pica alguna parte del cuerpo, tengas o no erupción en ella?":REMark 59
11130 DATA "Tienes alguna erupción o lesión de cualquier tipo en la piel?":REMark 60
11150 DATA "Tienes alguna parte del cuerpo entumecida, o con sensación de comezón u hormigueo, como de 'agujas y alfileres'?":REMark 61
11170 DATA "Es tu peso anormal? (Responde con 5 para un peso excesivamente elevado, con -5 si es excesivamente bajo y con 0 si es normal)":REMark 62
11190 DATA "Sufres de algún dolor en la cara o en la frente?":REMark 63
11210 DATA "Tienes algún bulto, hinchazón o abultamiento, en cualquier parte del cuerpo?":REMark 64
11230 DATA "Es anormal el color de tu orina?~":REMark 65
11250 DATA "Orinas con una frecuencia anormal?":REMark 66
11270 DATA "Tienes dolores al orinar?":REMark 67
11290 DATA "Tienes alguna anormalidad en la visión, como ver borroso o doble, o luces destelleantes? (no cuentan los defectos que pueden corregirse con gafas)":REMark 68
11300 :
11310 REMark Change log {{{1
11320 REMark ===================================================================
11330 :
11350 REMark 1988-10, version 0.0
11360 REMark 1989-03-25, version 0.10
11370 REMark - Fix text errors.
11380 REMark - Print full credits.
11390 REMark - Accept answers only 1 or 2 characters long.
11400 REMark - Simplify detection of the yes/no answer to the initial question.
11410 REMark 1989-10-08, version 0.11
11420 REMark - Clear the screen.
11430 REMark 2024-04-19/05-09
11440 REMark - Convert from SuperBASIC to SBASIC.
11450 REMark - Fix bug in the main calculation.
11460 REMark - Fix disease name.
11470 REMark 2025-06-26
11480 REMark - Change the name of the program, to homogenize all versions.
11490 REMark 2025-08-12
11500 REMark - Update credits.
Descargas
experto_en_enfermedades_bas (32.47 KiB)
