From 458160244da83e7ca968080bffb5b7b1385c38b2 Mon Sep 17 00:00:00 2001 From: Kori Kuzma Date: Wed, 24 Jun 2026 09:13:16 -0400 Subject: [PATCH] fix!: remove temp citations ext, use reportedIn instead close #219 * This removes 'citations' extension from statements, and instead stores these in the `reportedIn` field --- civicpy/exports/civic_gks_record.py | 12 +++++------ civicpy/tests/test_exports.py | 33 +++++++++++------------------ 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/civicpy/exports/civic_gks_record.py b/civicpy/exports/civic_gks_record.py index 9d5e9e4..0c13078 100644 --- a/civicpy/exports/civic_gks_record.py +++ b/civicpy/exports/civic_gks_record.py @@ -941,7 +941,12 @@ def get_reported_in(assertion: Assertion) -> list[iriReference]: :param assertion: CIViC assertion record :return: List of CIViC links to records which the assertion is reported in """ - return [iriReference(f"{LINKS_URL}/assertion/{assertion.id}")] + reported_in: list[iriReference] = [ + iriReference(f"{LINKS_URL}/assertion/{assertion.id}") + ] + for evidence_item in assertion.evidence_items or []: + reported_in.append(iriReference(f"{LINKS_URL}/evidence/{evidence_item.id}")) + return reported_in class CivicGksClinSigAssertion( @@ -1065,7 +1070,6 @@ def get_evidence_lines( ) evidence_items: list[CivicGksEvidence] = [] - eid_links: list[str] = [] for evidence_item in assertion.evidence_items: try: evidence_items.append(CivicGksEvidence(evidence_item)) @@ -1081,9 +1085,6 @@ def get_evidence_lines( evidence_item.name, str(e), ) - finally: - # Retain all EID references - eid_links.append(f"{LINKS_URL}/evidence/{evidence_item.id}") if assertion.assertion_type == CivicEvidenceAssertionType.PREDICTIVE: evidence_line_cls = TherapeuticEvidenceLine @@ -1103,7 +1104,6 @@ def get_evidence_lines( strengthOfEvidenceProvided=MappableConcept( primaryCoding=(Coding(code=level, system=System.AMP_ASCO_CAP)) ), - extensions=[Extension(name="citations", value=eid_links)] ).root ] diff --git a/civicpy/tests/test_exports.py b/civicpy/tests/test_exports.py index a6309fd..2bcdaeb 100644 --- a/civicpy/tests/test_exports.py +++ b/civicpy/tests/test_exports.py @@ -482,23 +482,17 @@ def gks_aid6( "system": "AMP/ASCO/CAP Guidelines, 2017", }, }, - "extensions": [ - { - "name": "citations", - "value": [ - "https://civicdb.org/links/evidence/2997", - "https://civicdb.org/links/evidence/879", - "https://civicdb.org/links/evidence/982", - "https://civicdb.org/links/evidence/883", - "https://civicdb.org/links/evidence/968", - "https://civicdb.org/links/evidence/2629" - ] - } - - ] } ], - "reportedIn": ["https://civicdb.org/links/assertion/6"], + "reportedIn": [ + "https://civicdb.org/links/assertion/6", + "https://civicdb.org/links/evidence/2997", + "https://civicdb.org/links/evidence/879", + "https://civicdb.org/links/evidence/982", + "https://civicdb.org/links/evidence/883", + "https://civicdb.org/links/evidence/968", + "https://civicdb.org/links/evidence/2629", + ], } return VariantClinicalSignificanceStatement(**params) @@ -867,12 +861,9 @@ def test_citations(self, test_is_valid_for_gks_json, test_evidence_items, aid20) record = CivicGksClinSigAssertion(aid20) assert len(record.hasEvidenceLines) == 1 assert record.hasEvidenceLines[0].hasEvidenceItems is None - assert len(record.hasEvidenceLines[0].extensions) == 1 - assert record.hasEvidenceLines[0].extensions[0].model_dump( - exclude_none=True - ) == { - "name": "citations", - "value": ["https://civicdb.org/links/evidence/11881"], + assert {r.model_dump(exclude_none=True) for r in record.reportedIn or []} == { + "https://civicdb.org/links/evidence/11881", + "https://civicdb.org/links/assertion/20", }