收获-词汇是一个收获的协议栈的应用程序提供了抽象模型定义的词汇一样的模型,构建了层次化的自我相关的数据对应的索引。
例如,这是你如何能用于存储代码ICD9定义模型:
从vocab.models进口AbstractItem,AbstractItemIndex
一流的诊断(AbstractItem):
 描述= models.CharField(MAX_LENGTH = 50)
 代码= models.CharField(MAX_LENGTH = 10)
 父= models.ForeignKey('自我',related_name ='孩子')
ICD9代码递阶因此,当我问自己这个问题,那么这不仅要查询367,但所有后代诊断以及(其中包括“给我所有谁在ICD9诊断367(折射和住宿的疾病)的患者”另一个2级)。
这种类型的查询变得很难写,因为你只需要访问一个特定的诊断的直接母公司,因此查询是这样的。
从django.db.models进口Q
Diagnosis.objects.filter(Q(代码='367')| Q(parent__code ='367'))
这里最明显的问题是,任何诊断2+水平,从“367”下调不包括在内。
创建平指数
为了缓解这一问题,一个AbstractItemIndex子类可以被定义,将打造一台指数的AbstractItem子类。简单地定义它是这样的:
类DiagnosisIndex(AbstractItemIndex):
 项目= models.ForeignKey(诊断,related_name ='item_indexes“)
 父= models.ForeignKey(诊断,related_name ='parent_indexes“)
#生成的索引诊断
DiagnosisIndex.objects.index()
最后一行生成这减轻了未知深度问题的层次结构的一个平指数。所以,现在,与上述相同的问题都可以回答是这样的:
#无论是项目有这样的代码,或者父母之一有这段代码
条件= Q(item__code ='367')| Q(parent__code ='367')
item_ids = DiagnosisIndex.objects.filter(条件).values_list('item__id',平=真)
诊断= Diagnosis.objects.filter(id__in=item_ids)
Requirements:
- Python
评论没有发现