Django实验室信息系统:模型前端可自定义分析组设计咨询
实验室分析管理应用(LIS)模型设计方案
核心关联关系选择
- 排除多对一:多对一要求一个探针只能归属一个分析,不符合你提到的「PROBE1被多个分析复用」的场景,直接排除。
- Meta类不涉及关联逻辑:Meta类是ORM中用于配置模型元数据(如表名、排序规则)的工具,和关联关系的选择无关,无需考虑。
- 推荐多对多关联:你的场景中,一个分析包含多个探针、一个探针可被多个分析复用,完全匹配多对多的关联场景。
完整模型设计方案
模型分层说明
分为模板层(存储分析/探针的基础配置)和业务实例层(存储具体服务案例的检测数据),避免模板数据和业务数据混存。
具体模型定义(以ORM示例)
# 模板层:分析模板 class Analysis(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=255, unique=True) # 如"血常规分析" # 模板层:探针模板 class Probe(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=255, unique=True) # 如"白细胞计数" reference_range = models.CharField(max_length=255) # 参考范围,如"4-10×10^9/L" measurement_unit = models.CharField(max_length=50) # 测量单位,如"×10^9/L" # 多对多关联分析模板,实现探针复用 analyses = models.ManyToManyField(Analysis, related_name="probes") # 业务实例层:服务案例 class Visit(models.Model): id = models.AutoField(primary_key=True) client_info = models.CharField(max_length=255) # 客户信息 visit_date = models.DateTimeField(auto_now_add=True) operator = models.CharField(max_length=255) # 操作员工号/姓名 # 业务实例层:服务案例下的分析执行记录 class AnalysisInstance(models.Model): id = models.AutoField(primary_key=True) visit = models.ForeignKey(Visit, on_delete=models.CASCADE, related_name="analysis_instances") analysis = models.ForeignKey(Analysis, on_delete=models.CASCADE) performed_at = models.DateTimeField(auto_now_add=True) # 分析执行时间 # 业务实例层:探针的具体检测结果 class ProbeResult(models.Model): id = models.AutoField(primary_key=True) analysis_instance = models.ForeignKey(AnalysisInstance, on_delete=models.CASCADE, related_name="probe_results") probe = models.ForeignKey(Probe, on_delete=models.CASCADE) value = models.CharField(max_length=255) # 检测数值/结果,支持数字或字符串(如"阳性") is_abnormal = models.BooleanField(default=False) # 是否超出参考范围
前端视图适配流程
「LAB settings」视图操作
- 添加新分析:直接创建
Analysis实例。 - 关联探针:通过多对多关联,选择已有探针或新建探针后绑定到目标分析。
检测数据录入视图操作
- 选择目标
Visit(服务案例),再选择要执行的Analysis模板,生成AnalysisInstance(分析执行记录)。 - 系统自动加载该
Analysis关联的所有Probe,生成录入表单。 - 操作员录入每个探针的
value,保存为ProbeResult实例。
设计优势
- 探针复用:多对多关联避免重复创建相同探针,降低维护成本。
- 数据分离:模板层和业务实例层分离,不会因业务数据变化污染基础配置。
- 扩展性强:后续可轻松添加结果审核、异常标记等功能,无需修改核心关联逻辑。
内容的提问来源于stack exchange,提问作者rzrwolf
相关产品推荐
相关产品推荐

