diff --git a/HISTORY.rst b/HISTORY.rst index c7af63717..07cb119bf 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -60,6 +60,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 ================ @@ -119,6 +120,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.0 diff --git a/clinvar_export/models.py b/clinvar_export/models.py index 4525c3462..b7daeb9ca 100644 --- a/clinvar_export/models.py +++ b/clinvar_export/models.py @@ -4,6 +4,7 @@ records in ``variants``. """ +import logging import uuid as uuid_object from django.conf import settings @@ -14,6 +15,8 @@ from varfish.utils import JSONField from variants.models import Case, CaseAwareProject +logger = logging.getLogger(__name__) + #: Django user model. AUTH_USER_MODEL = getattr(settings, "AUTH_USER_MODEL", "auth.User") @@ -405,7 +408,10 @@ def refresh_individual_sex_affected(): 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 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()