我正在使用android health应用程序,它将显示人体部位,例如头部,胸部等。目前,我有三个表,例如症状,疾病和symptom_disease表,它将链接这两个表。如果用户选择了头晕,晕厥,乏力等症状,则会出现高血压病。但是,当用户仅选择一种症状,比如说头昏眼花时,就会出现问题。我该如何区分这些东西?以及如何实施
这是我的症状表
s_id | s_name | s_part
1 |dizziness | Head
2 |syncope | Head
3 |asthenia | Head
疾病表
d_id | d_name | d_desc
1 |hypertensive disease| ....
症状_疾病表
s_id | d_id
1 | 1
2 | 1
3 | 1
我用这个查询来得病
SELECT d.d_name, d.d_desc, s.symp_name
FROM symtoms s
LEFT JOIN symptom_disease sd ON sd.sid = s.sid
LEFT JOIN diseases d ON d.did = sd.did
WHERE s.sid IN (1,2,3) GROUP BY d.d_name
这里的问题是,当用户仅选择一种疾病时,我不希望它显示疾病,因为一种症状并不表明用户患病。因此,我需要有关如何实施此建议。我看到了一个解决方案,要求我在symptom_disease表中添加等级/权重。但是我不知道如何实现这种方法。提前致谢。
最佳答案
这是一种使用概率列之类的方法来确定特定疾病的可能性的基本方法。
对于疾病表:
1 Flu
2 Lyme
对于症状表:
1 Muscle Aches
2 Headache
3 Fatigue
4 Fever
5 Vomiting
6 Tick Bite
对于疾病_症状表:
s_id d_id probability
1 1 0.2
2 1 0.2
3 1 0.2
4 1 0.2
5 1 0.2
1 2 0.1
2 2 0.1
3 2 0.1
4 2 0.1
6 2 0.6
因此,如果患者说有症状2、4和5,
select d_name, sum(probability)
from disease, disease_symptom
where disease.d_id = disease_symptom.d_id
and s_id in (2, 4, 5)
group by d_name
order by sum(probability) desc
是
Flu 0.6
Lyme 0.2
因此,流感最有可能发生。
但是如果患者有症状2、4和6,那么
select d_name, sum(probability)
from disease, disease_symptom
where disease.d_id = disease_symptom.d_id
and s_id in (2, 4, 6)
group by d_name
order by sum(probability) desc
是
Lyme 0.8
Flue 0.4
因此莱姆病很可能会发生。