เก็บเกี่ยวคำศัพท์เป็น app กองเก็บเกี่ยวมีรูปแบบนามธรรมสำหรับการกำหนดรูปแบบการเรียนรู้คำศัพท์ที่เหมือนจริงและการสร้างดัชนีที่สอดคล้องกันสำหรับข้อมูลที่เกี่ยวข้องกับตัวเองลำดับชั้น
ตัวอย่างเช่นนี้เป็นวิธีที่คุณสามารถกำหนดรูปแบบการจัดเก็บรหัส ICD9:
จาก vocab.models นำเข้า AbstractItem, AbstractItemIndex
ระดับการวินิจฉัย (AbstractItem):
& nbsp; คำอธิบาย = models.CharField (max_length = 50)
& nbsp; รหัส = models.CharField (max_length = 10)
& nbsp; แม่ = models.ForeignKey ('ตัวเอง', related_name = 'เด็ก')
รหัส ICD9 เป็นลำดับชั้นดังนั้นเมื่อผมถามคำถาม "ให้ฉันผู้ป่วยทุกรายที่มีการวินิจฉัยใน ICD9 367 (ความผิดปกติของการหักเหและที่พัก)" แล้วนี้จะไม่เพียง แต่การสอบถาม 367 แต่การวินิจฉัยสืบเชื้อสายมาทั้งหมดรวมทั้ง (ซึ่งรวมถึง อีก 2 ระดับ)
ชนิดของแบบสอบถามนี้กลายเป็นเรื่องยากที่จะเขียนตั้งแต่คุณเท่านั้นที่มีสิทธิ์เข้าถึงผู้ปกครองโดยตรงของการวินิจฉัยโรคโดยเฉพาะอย่างยิ่งจึงแบบสอบถามจะมีลักษณะเช่นนี้
จาก django.db.models นำเข้า Q
Diagnosis.objects.filter (Q (รหัส = '367') | Q (parent__code = '367'))
ปัญหาที่เห็นได้ชัดว่านี่คือระดับการวินิจฉัยใด ๆ 2+ ลงมาจาก '367' จะไม่รวม
สร้างดัชนีแบน
เพื่อบรรเทาปัญหานี้รอง AbstractItemIndex สามารถกำหนดซึ่งจะสร้างดัชนีแบนสำหรับรอง AbstractItem เพียงแค่กำหนดเช่นนี้
ชั้น DiagnosisIndex (AbstractItemIndex):
& nbsp; รายการ = models.ForeignKey (วินิจฉัย related_name = 'item_indexes')
& nbsp; แม่ = 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', แบน = True)
การวินิจฉัย = Diagnosis.objects.filter(id__in=item_ids)
Requirements:
- Python
ความคิดเห็นที่ไม่พบ