123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- from typing import List, Optional, Dict, Union
- class CDSSInt:
- type: str
- value: Union[int, float]
- def __init__(self, type:str='nubmer' , value: Union[int,float]=0):
- self.type = type
- self.value = value
- def __str__(self):
- return f"{self.type}:{self.value}"
- def value(self):
- return self.value
-
- class CDSSText:
- type: str
- value: Union[str, List[str]]
- def __init__(self, type:str='text', value: Union[str, List[str]]=""):
- self.type = type
- self.value = value
- def __str__(self):
- if isinstance(self.value, str):
- return f"{self.type}:{self.value}"
- return f"{self.type}:{','.join(self.value)}"
- def value(self):
- return self.value
- class CDSSDict:
- type: str
- value: Dict
- def __init__(self, type:str='dict', value: Dict={}):
- self.type = type
- self.value = value
- def __str__(self):
- return f"{self.type}:{self.value}"
- def value(self):
- return self.value
- # pat_name:患者名字,字符串,如"张三",无患者信息输出""
- # pat_sex:患者性别,字符串,如"男",无患者信息输出""
- # pat_age:患者年龄,数字,单位为年,如25岁,输出25,无年龄信息输出0
- # clinical_department:就诊科室,字符串,如"呼吸内科",无就诊科室信息输出""
- # chief_complaint:主诉,字符串列表,包括主要症状的列表,如["胸痛","发热"],无主诉输出[]
- # present_illness:现病史,字符串列表,包括症状发展过程、诱因、伴随症状(如疼痛性质、放射部位、缓解方式,无现病史信息输出[]
- # past_medical_history:既往病史,字符串列表,包括疾病史(如高血压、糖尿病)、手术史、药物过敏史、家族史等,无现病史信息输出[]
- # physical_examination:体格检查,字符串列表,如生命体征(血压、心率)、心肺腹部体征、实验室/影像学结果(如心电图异常、肌钙蛋白升高),无信息输出[]
- # lab_and_imaging:检验与检查,字符串列表,包括血常规、生化指标、心电图(ECG)、胸部X光、CT等检查项目,结果和报告等,无信息输出[]
- class CDSSInput:
- pat_age: CDSSInt = CDSSInt(type='year', value=0)
- pat_sex: CDSSInt= CDSSInt(type='sex', value=0)
- values: List[CDSSText]
-
- def __init__(self, **kwargs):
- #提取kwargs中的所有字段,并将它们添加到类的属性中。这样,在创建子类时,就可以直接使用这些字段了。
- values = []
- for key, value in kwargs.items():
- #如果key的属性已经存在,则将value设置为该属性的值。否则,将value添加到values列表中。
- if hasattr(self, key):
- setattr(self, key, value)
- else:
- values.append(CDSSText(key, value))
- setattr(self, 'values', values)
- def get_value(self, key)->CDSSText:
- for value in self.values:
- if value.type == key:
- return value.value
-
- class CDSSOutput:
- departments: CDSSDict = CDSSDict(type='departments', value={})
- diagnosis: CDSSDict = CDSSDict(type='diagnosis', value={})
- checks: CDSSDict = CDSSDict(type='checks', value={})
- drugs: CDSSDict = CDSSDict(type='drugs', value={})
|