From 10454b7782c93c1ee07d6a4d3d1f7a4d58a0d36c Mon Sep 17 00:00:00 2001 From: Jacob Ashdown Date: Tue, 23 Jun 2026 16:50:25 +0300 Subject: [PATCH] Ensure clinical trials that are inactive in DV do not appear in platform --- .../transformations/clinical_trials.py | 4 ++++ tests/unit/test_clinical_trials.py | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/igh_data_transform/transformations/clinical_trials.py b/src/igh_data_transform/transformations/clinical_trials.py index fa799d2..81ee974 100644 --- a/src/igh_data_transform/transformations/clinical_trials.py +++ b/src/igh_data_transform/transformations/clinical_trials.py @@ -410,6 +410,10 @@ def transform_clinical_trials( """ df = df.copy() + # Filter deleted/inactive records (statecode != 0) + if "statecode" in df.columns: + df = df[df["statecode"] == 0].copy() + # Build a reliable per-trial source link from the authoritative # registration id (vin_name), before the raw columns are renamed/dropped. # vin_source is consulted only as a fallback inside build_source_link. diff --git a/tests/unit/test_clinical_trials.py b/tests/unit/test_clinical_trials.py index 0854e2b..8555e48 100644 --- a/tests/unit/test_clinical_trials.py +++ b/tests/unit/test_clinical_trials.py @@ -560,6 +560,17 @@ def test_preserves_row_count(self): result, _ = transform_clinical_trials(df) assert len(result) == 2 + def test_filters_inactive_records(self): + df = self._make_input_df({"statecode": [0, 1]}) + result, _ = transform_clinical_trials(df) + assert len(result) == 1 + assert result.iloc[0]["clinicaltrialid"] == "ct-1" + + def test_filters_all_inactive_records(self): + df = self._make_input_df({"statecode": [1, 1]}) + result, _ = transform_clinical_trials(df) + assert len(result) == 0 + def test_works_when_option_sets_is_none(self): df = self._make_input_df() result, cleaned = transform_clinical_trials(df, option_sets=None)