Skip to content

Commit

Permalink
Fixing clinvar submission sex/gender update (#686)
Browse files Browse the repository at this point in the history
Related-Issue: #686
Projected-Results-Impact: none
  • Loading branch information
holtgrewe committed Sep 20, 2022
1 parent f9093f9 commit 91ca0d2
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
2 changes: 2 additions & 0 deletions HISTORY.rst
Expand Up @@ -19,6 +19,7 @@ End-User Summary
- Fixing ClinVar submission XML generation (#677).
- Fixing ClinVar export editor timing issues (#667, #668).
- Fixing hemizygous count display in fold-outs (#646).
- Fixing clinvar submission sex/gender update (#686).

Full Change List
================
Expand All @@ -35,6 +36,7 @@ Full Change List
- Adding regular task to sync ClinVar submission ``Individual`` sex from the one from the ``Case``.
- Fixing ClinVar export editor timing issues (#667, #668).
- Fixing hemizygous count display in fold-outs (#646).
- Fixing clinvar submission sex/gender update (#686).

-----------------
v1.2.2 (anthenea)
Expand Down
19 changes: 13 additions & 6 deletions clinvar_export/models.py
Expand Up @@ -4,6 +4,7 @@
records in ``variants``.
"""

import logging
import uuid as uuid_object

from django.contrib.postgres.fields import ArrayField
Expand All @@ -14,6 +15,8 @@
from varfish.utils import JSONField
from variants.models import CaseAwareProject, Case

logger = logging.getLogger(__name__)

#: Django user model.
AUTH_USER_MODEL = getattr(settings, "AUTH_USER_MODEL", "auth.User")

Expand Down Expand Up @@ -400,9 +403,13 @@ def refresh_individual_sex_affected():
This is done regularly in a related task.
"""
for family in Family.objects.select_related("case").prefetch_related("individual_set").all():
ped_entries = {entry["patient"]: entry for entry in family.case.pedigree}
for individual in family.individual_set.all():
related_ped_entry = ped_entries[individual.name]
individual.sex = SEX_MAP.get(related_ped_entry["sex"], "unknown")
individual.affected = AFFECTED_MAP.get(related_ped_entry["affected"], "unknown")
individual.save()
if family.case:
ped_entries = {entry["patient"]: entry for entry in family.case.pedigree}
for individual in family.individual_set.all():
if individual.name not in ped_entries:
logger.info(f"{individual.name} not in pedigree for case {family.case}")
else:
related_ped_entry = ped_entries[individual.name]
individual.sex = SEX_MAP.get(related_ped_entry["sex"], "unknown")
individual.affected = AFFECTED_MAP.get(related_ped_entry["affected"], "unknown")
individual.save()

0 comments on commit 91ca0d2

Please sign in to comment.