大家好。我正在构建一个RESTful API,它返回一些文本文件(.pdd)的内容。这些文件的组织如下:
|-- 10200 # some patient's id
| |-- Cardio
| | |-- 3002 # some event id
| | | |-- some_data.pdd
| |-- Encounter
| | |-- 5222 # some event id
| | | |-- CPS.pdd
| | | |-- S_ASSESSMENT.pdd
| | | |-- S_CCHPI.pdd
| | | |-- S_PLAN.pdd
| | | |-- S_ROS.pdd
| | | |-- S_VITALS.pdd
| | |-- 5223
| | | |-- CPS.pdd
| | | |-- S_ASSESSMENT.pdd
| | | |-- S_PLAN.pdd
| | | |-- S_VITALS.pdd
| | |-- 5224
我需要做的(并且已经做过)是基于患者和/或事件id解析.pdd文件(它只是文本)。 为此,我实现了“所有可定制”(正如我所想)类。它工作得很好:
class PddParser:
def __init__(self, pdd_type,
pdd_name=None, pat_code=None, event_id=None)
其中pdd_type
是conference/Cardio/etc,pdd_name
是可选的、特定的.pdd文件名
工作流是(每个步骤在类的方法中拆分):
1)使用glob(允许使用通配符:用于all或specific.pdd(和/或)patient(和/或)event)获取基于参数的文件路径
2)读取每个文件内容
3)将所有内容聚合到dict中(外部dict的键只是文件名,值是文件内容,内部恰好是dict,因为.pdd将键值作为内容)并返回
这被称为:
parser = PddParser(pdd_type, pdd_name, pat_code, id)
data = pdd_parser.get_pdd_contents() # method from third step
# return data to endpoint
并允许大量不同的端点返回所有/特定患者和/或就诊的所有/特定.pdd
但是有些文件有特定的字段,需要特定的聚合(第三种方法)。按照我实现它的方式,我看不到使用分解(或继承)更改聚合的便捷方式,而只是在方法内部编写更多的代码(可能只是将其拆分为更多的方法,但仍然在一个PddParser
中)。原因是我在一个地方为所有端点实例化了类吗?如果是这样的话,我不知道如何重做代码以方便添加特殊情况
最初,我想为每种需要的文件类型(比如,创建PddParser
等等)创建子类PddParser
,但我不知道在这种情况下如何实现,也不确定它是否正确。
从架构师的角度来看,仅仅在一个基类PddParser
内创建更多的方法是否足够好,或者我应该如何处理这个问题以使其正确
目前没有回答
相关问题 更多 >
编程相关推荐