diff --git a/analysis/dep_reg_dataset.py b/analysis/dep_reg_dataset.py index 95bba39..94b8a36 100644 --- a/analysis/dep_reg_dataset.py +++ b/analysis/dep_reg_dataset.py @@ -55,8 +55,10 @@ # Latest episode of depression is not followed by a depression resolved code. # Must be aged 18 or over on the achievement date -dep1_reg_r1 = ((dataset.depr_dat.is_on_or_after(min_date)) - & (dataset.depres_dat.is_null())) +dep1_reg_r1 = ( + (dataset.depr_dat.is_on_or_after(min_date)) & + ( (dataset.depres_dat.is_null()) | (dataset.depres_dat < dataset.depr_dat) ) + ) dep2_reg_r2 = dataset.pat_age >= 18 -dataset.define_population(has_registration & dep1_reg_r1 & dep2_reg_r2) +dataset.define_population(has_registration & dep1_reg_r1 &dep2_reg_r2) diff --git a/analysis/test_dep_reg_dataset.py b/analysis/test_dep_reg_dataset.py new file mode 100644 index 0000000..a14da6d --- /dev/null +++ b/analysis/test_dep_reg_dataset.py @@ -0,0 +1,77 @@ +from datetime import date +from dep_reg_dataset import dataset + +test_data = { + # Test rule 1: Patient excluded due to case before April 2006 + 1: { + "practice_registrations": [{ + "start_date": date(2010, 1, 1), + }], + "clinical_events": [{ + "snomedct_code": "104851000119103", + "date": date(2005, 1, 1) + }], + "patients": { + "date_of_birth": date(1950, 1, 1) + }, + "expected_in_population": False, + }, + # Test rule 2: Patients excluded due to depression resolved code + # after depression incident case + 2: { + "practice_registrations": [{ + "start_date": date(1950, 1, 1) + }], + "clinical_events": [ + { + "snomedct_code": "104851000119103", + "date": date(2009, 1, 1)}, + { + "snomedct_code": "196381000000100", + "date": date(2010, 1, 1) + }], + "patients": { + "date_of_birth": date(1950, 1, 1) + }, + "expected_in_population": False + }, + # Test rule 3: Patients excluded due to being under 18 + 3: { + "practice_registrations": [{ + "start_date": date(1950, 1, 1) + }], + "clinical_events": [ + { + "snomedct_code": "104851000119103", + "date": date(2009, 1, 1)}], + "patients": { + "date_of_birth": date(2008, 1, 1) + }, + "expected_in_population": False + }, + # Patient who passess all rules + 4: { + "practice_registrations": [{ + "start_date": date(1950, 1, 1) + }], + "clinical_events": [ + { + "snomedct_code": "104851000119103", + "date": date(2009, 1, 1) + }, + { + "snomedct_code": "196381000000100", + "date": date(2008, 1, 1) + } + ], + "patients": { + "date_of_birth": date(1990, 1, 1) + }, + "expected_in_population": True, + "expected_columns": { + "pat_age": 34, + "depr_dat": date(2009, 1, 1), + "depres_dat": date(2008, 1, 1) + } + } +} \ No newline at end of file diff --git a/project.yaml b/project.yaml index daac3bb..edd0fb9 100644 --- a/project.yaml +++ b/project.yaml @@ -53,7 +53,9 @@ actions: highly_sensitive: measure: output/dep/dep_jaidip.csv.gz generate_dep_reg_dataset: - run: ehrql:v1 generate-dataset analysis/dep_reg_dataset.py --output output/dep/dep_reg_dataset.csv.gz + run: ehrql:v1 generate-dataset analysis/dep_reg_dataset.py + --output output/dep/dep_reg_dataset.csv.gz + --test-data-file analysis/test_dep_reg_dataset.py outputs: highly_sensitive: dataset: output/dep/dep_reg_dataset.csv.gz