收穫-詞彙是一個收穫的協議棧的應用程序提供了抽象模型定義的詞彙一樣的模型,構建了層次化的自我相關的數據對應的索引。
例如,這是你如何能用於存儲代碼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
評論沒有發現