Skip to content

Commit faeedd3

Browse files
authored
Merge pull request #20 from MyDigiTwinNL/exp/discrepancies
Removing one of the pairing rules assertions: Generating FHIR-HF with an undefined onsetDate, when HF was reported on a follow-up assessment, and the assessment date is not available. Address issue #19
2 parents 720c913 + 5b3141b commit faeedd3

File tree

7 files changed

+390
-25
lines changed

7 files changed

+390
-25
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"project_pseudo_id": {"1a":"11111"},
3+
"variant_id": {},
4+
5+
"date": {"1a":"1992-5","1b":"1995-5","1c":"1997-5","2a":"2001-5","2b":"2002-5","3a":"2003-5","3b":"2005-5"},
6+
"age": {"1a":"22"},
7+
"gender": {"1a":"MALE"},
8+
"zip_code": {"1a":"11111"},
9+
"date_of_death": {"global":"2010-2"},
10+
"date_of_inclusion": {"global":"1991-2"},
11+
12+
"albumin_result_all_m_1" :{ "1a": "51"},
13+
14+
"creatinine_result_all_m_1":{ "1a": "79.2", "2a":"106.1"},
15+
"hemoglobin_result_all_m_1" :{ "1a": "11.1", "2a":"12"},
16+
17+
"ethnicity_category_adu_q_1":{"1b":"3"},
18+
"hba1cconc_result_all_m_1":{ "1a": "43", "2a":"44"},
19+
20+
"hypertension_startage_adu_q_1":{"1a":"","3a":"23","3b":"23"},
21+
"hypertension_presence_adu_q_1":{"1a":"2","3a":"1","3b":"1"},
22+
23+
"stroke_startage_adu_q_1":{ "1a": "12" },
24+
"stroke_presence_adu_q_1": { "1a": "1" },
25+
"stroke_followup_adu_q_1":{"2a":"2","3a":"2","3b":"2"},
26+
27+
"diabetes_presence_adu_q_1": {"1a":"1"},
28+
"diabetes_startage_adu_q_1": {"1a":"28"},
29+
"diabetes_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
30+
"diabetes_type_adu_q_1": {"1a":"2"},
31+
"diabetes_type_adu_q_1_a": {"1a":""},
32+
"t1d_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
33+
"t2d_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
34+
35+
"bp_entrytype_all_m_1": {"1a":"2","2a":"2"},
36+
"bp_bandsize_all_m_1": {"1a":"1","2a":"1","3a":"1"},
37+
"bp_arm_all_m_1": {"3a":"2"},
38+
"bpavg_systolic_all_m_1": {"1a":"130","2a":"130"},
39+
"bpavg_diastolic_all_m_1": {"1a":"140","2a":"140"},
40+
"bpavg_arterial_all_m_1": {"1a":"113","2a":"113"},
41+
42+
"hdlchol_result_all_m_1": {"1a":"0.31","2a":"0.22"},
43+
"ldlchol_result_all_m_1": {"1a":"0.41","2a":"0.42"},
44+
"cholesterol_result_all_m_1": {"1a":"0.51","2a":"0.52"},
45+
46+
"heartattack_startage_adu_q_1": {"1a":"33"},
47+
"angioplasty_bypass_adu_q_1_a": {"1a":"1","3a":"1","3b":"1"},
48+
"heartattack_presence_adu_q_1": {"1a":"1"},
49+
"heartattack_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
50+
"angioplasty_bypass_adu_q_1": {"1a":"1","3a":"1","3b":"1"},
51+
52+
"heartfailure_startage_adu_q_1":{ "1a": "" },
53+
"heartfailure_presence_adu_q_1": { "1a": "2" },
54+
"heartfailure_followup_adu_q_1":{"2a":"2","3a":"2","3b":"2"},
55+
56+
"carotid_stenosis_adu_q_1": {"1a":"1"},
57+
"claudication_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
58+
"cvd_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
59+
60+
"current_smoker_adu_c_2": { "1a": "0", "1b": "0", "1c": "0", "2a": "0", "2b": "0", "3a": "0" },
61+
"smoking_startage_adu_c_2": { "1a": "5", "1b": "5", "1c": "5", "2a": "5", "2b": "5", "3a": "5" },
62+
"ex_smoker_adu_c_2": { "1a": "1", "1b": "1", "1c": "1", "2a": "1", "2b": "1", "3a": "1" },
63+
"smoking_endage_adu_c_2": { "1a": "8", "1b": "8", "1c": "8", "2a": "8", "2b": "8", "3a": "8"},
64+
"ever_smoker_adu_c_2": { "1a": "1", "1b": "1", "1c": "1", "2a": "1", "2b": "1", "3a": "1"},
65+
"total_frequency_adu_c_1": { "1a": "", "1b": "", "1c": "", "2a": "", "2b": "", "3a": ""},
66+
"packyears_cumulative_adu_c_2": { "1a": "", "1b": "", "1c": "", "2a": "", "2b": "", "3a": ""}
67+
68+
69+
70+
}
71+
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"project_pseudo_id": {"1a":"675432"},
3+
"variant_id": {},
4+
5+
"date": {"1a":"1992-5","1b":"1995-5","1c":"1997-5","2a":"2001-5","2b":"2002-5","3a":"","3b":"2005-5"},
6+
7+
"age": {"1a":"22"},
8+
"gender": {"1a":"MALE"},
9+
"zip_code": {"1a":"11111"},
10+
"date_of_death": {"global":"2010-2"},
11+
"date_of_inclusion": {"global":"1991-2"},
12+
13+
"albumin_result_all_m_1" :{ "1a": "51"},
14+
"creatinine_result_all_m_1":{ "1a": "79.2", "2a":"106.1"},
15+
"ethnicity_category_adu_q_1":{"1b":"3"},
16+
"hemoglobin_result_all_m_1" :{ "1a": "11.1", "2a":"12"},
17+
"hba1cconc_result_all_m_1":{ "1a": "43", "2a":"44"},
18+
19+
"hypertension_startage_adu_q_1":{"1a":"","3a":"23","3b":"23"},
20+
"hypertension_presence_adu_q_1":{"1a":"2","3a":"1","3b":"1"},
21+
22+
"stroke_startage_adu_q_1":{ "1a": "12" },
23+
"stroke_presence_adu_q_1": { "1a": "1" },
24+
"stroke_followup_adu_q_1":{"2a":"2","3a":"2","3b":"2"},
25+
26+
27+
"diabetes_presence_adu_q_1": {"1a":"1"},
28+
"diabetes_startage_adu_q_1": {"1a":"28"},
29+
"diabetes_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
30+
"diabetes_type_adu_q_1": {"1a":"2"},
31+
"diabetes_type_adu_q_1_a": {"1a":""},
32+
"t1d_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
33+
"t2d_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
34+
35+
"bp_entrytype_all_m_1": {"1a":"2","2a":"2"},
36+
"bp_bandsize_all_m_1": {"1a":"1","2a":"1","3a":"1"},
37+
"bp_arm_all_m_1": {"3a":"2"},
38+
"bpavg_systolic_all_m_1": {"1a":"130","2a":"130"},
39+
"bpavg_diastolic_all_m_1": {"1a":"140","2a":"140"},
40+
"bpavg_arterial_all_m_1": {"1a":"113","2a":"113"},
41+
42+
"hdlchol_result_all_m_1": {"1a":"0.31","2a":"0.22"},
43+
"ldlchol_result_all_m_1": {"1a":"0.41","2a":"0.42"},
44+
"cholesterol_result_all_m_1": {"1a":"0.51","2a":"0.52"},
45+
46+
"heartattack_startage_adu_q_1": {"1a":"33"},
47+
"angioplasty_bypass_adu_q_1_a": {"1a":"1","3a":"1","3b":"1"},
48+
"heartattack_presence_adu_q_1": {"1a":"1"},
49+
"heartattack_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
50+
"angioplasty_bypass_adu_q_1": {"1a":"1","3a":"1","3b":"1"},
51+
52+
"heartfailure_startage_adu_q_1":{ "1a": "" },
53+
"heartfailure_presence_adu_q_1": { "1a": "2" },
54+
"heartfailure_followup_adu_q_1":{"2a":"2","3a":"1","3b":"2"},
55+
56+
"carotid_stenosis_adu_q_1": {"1a":"1"},
57+
"claudication_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
58+
"cvd_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
59+
60+
"current_smoker_adu_c_2": { "1a": "0", "1b": "0", "1c": "0", "2a": "0", "2b": "0", "3a": "0" },
61+
"smoking_startage_adu_c_2": { "1a": "5", "1b": "5", "1c": "5", "2a": "5", "2b": "5", "3a": "5" },
62+
"ex_smoker_adu_c_2": { "1a": "1", "1b": "1", "1c": "1", "2a": "1", "2b": "1", "3a": "1" },
63+
"smoking_endage_adu_c_2": { "1a": "8", "1b": "8", "1c": "8", "2a": "8", "2b": "8", "3a": "8"},
64+
"ever_smoker_adu_c_2": { "1a": "1", "1b": "1", "1c": "1", "2a": "1", "2b": "1", "3a": "1"},
65+
"total_frequency_adu_c_1": { "1a": "", "1b": "", "1c": "", "2a": "", "2b": "", "3a": ""},
66+
"packyears_cumulative_adu_c_2": { "1a": "", "1b": "", "1c": "", "2a": "", "2b": "", "3a": ""}
67+
68+
69+
70+
}
71+
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
{
2+
"project_pseudo_id": {"1a":"8737232"},
3+
"variant_id": {},
4+
5+
"date": {"1a":"1990-1","1b":"1995-5","1c":"1997-5","2a":"2000-1","2b":"2001-1","3a":"2003-5","3b":"2005-5"},
6+
"age": { "1a": "40" },
7+
"gender": {"1a":"FEMALE"},
8+
"date_of_death": {"global":""},
9+
"date_of_inclusion": {"global":"1991-2"},
10+
11+
"albumin_result_all_m_1" :{ "1a": "34"},
12+
"creatinine_result_all_m_1":{ "1a": "79.2", "2a":"106.1"},
13+
"ethnicity_category_adu_q_1":{"1b":"1"},
14+
"hemoglobin_result_all_m_1" :{ "1a": "6", "2a":"12"},
15+
"hba1cconc_result_all_m_1":{ "1a": "43", "2a":"44"},
16+
17+
"zip_code": {"1a":"11111"},
18+
19+
"hypertension_startage_adu_q_1":{"1a":"","3a":"23","3b":"23"},
20+
"hypertension_presence_adu_q_1":{"1a":"2","3a":"1","3b":"1"},
21+
22+
"stroke_startage_adu_q_1":{ "1a": "" },
23+
"stroke_presence_adu_q_1": { "1a": "2" },
24+
"stroke_followup_adu_q_1":{"2a":"2","3a":"2","3b":"2"},
25+
26+
"heartattack_startage_adu_q_1": {"1a":""},
27+
"heartattack_presence_adu_q_1": {"1a":"2"},
28+
"heartattack_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
29+
30+
"heartfailure_startage_adu_q_1":{ "1a": "" },
31+
"heartfailure_presence_adu_q_1": { "1a": "2" },
32+
"heartfailure_followup_adu_q_1":{"2a":"2","3a":"2","3b":"2"},
33+
34+
35+
36+
"diabetes_presence_adu_q_1": {"1a":"1"},
37+
"diabetes_startage_adu_q_1": {"1a":"28"},
38+
"diabetes_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
39+
"diabetes_type_adu_q_1": {"1a":"2"},
40+
"diabetes_type_adu_q_1_a": {"1a":""},
41+
"t1d_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
42+
"t2d_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
43+
44+
"bp_entrytype_all_m_1": {"1a":"2","2a":"2"},
45+
"bp_bandsize_all_m_1": {"1a":"1","2a":"1","3a":"1"},
46+
"bp_arm_all_m_1": {"3a":"2"},
47+
"bpavg_systolic_all_m_1": {"1a":"","2a":""},
48+
"bpavg_diastolic_all_m_1": {"1a":"","2a":""},
49+
"bpavg_arterial_all_m_1": {"1a":"","2a":"113"},
50+
51+
"hdlchol_result_all_m_1": {"1a":"","2a":"0.32"},
52+
"ldlchol_result_all_m_1": {"1a":"0.41","2a":""},
53+
"cholesterol_result_all_m_1": {"1a":"0.51","2a":"0.52"},
54+
55+
56+
57+
"angioplasty_bypass_adu_q_1_a": {"1a":"1","3a":"1","3b":"1"},
58+
59+
"angioplasty_bypass_adu_q_1": {"1a":"1","3a":"1","3b":"1"},
60+
"carotid_stenosis_adu_q_1": {"1a":"1"},
61+
"claudication_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
62+
"cvd_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
63+
64+
"current_smoker_adu_c_2": { "1a": "0", "1b": "0", "1c": "0", "2a": "0", "2b": "0", "3a": "0" },
65+
"smoking_startage_adu_c_2": { "1a": "5", "1b": "5", "1c": "5", "2a": "5", "2b": "5", "3a": "5" },
66+
"ex_smoker_adu_c_2": { "1a": "1", "1b": "1", "1c": "1", "2a": "1", "2b": "1", "3a": "1" },
67+
"smoking_endage_adu_c_2": { "1a": "8", "1b": "8", "1c": "8", "2a": "8", "2b": "8", "3a": "8"},
68+
"ever_smoker_adu_c_2": { "1a": "1", "1b": "1", "1c": "1", "2a": "1", "2b": "1", "3a": "1"},
69+
"total_frequency_adu_c_1": { "1a": "", "1b": "", "1c": "", "2a": "", "2b": "", "3a": ""},
70+
"packyears_cumulative_adu_c_2": { "1a": "", "1b": "", "1c": "", "2a": "", "2b": "", "3a": ""}
71+
72+
}
73+
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"project_pseudo_id": {"1a":"98765"},
3+
"variant_id": {},
4+
5+
"date": {"1a":"1992-5","1b":"1995-5","1c":"1997-5","2a":"2001-5","2b":"2002-5","3a":"2003-5","3b":"2005-5"},
6+
7+
"age": {"1a":"22"},
8+
"gender": {"1a":"MALE"},
9+
"zip_code": {"1a":"11111"},
10+
"date_of_death": {"global":"2010-2"},
11+
"date_of_inclusion": {"global":"1991-2"},
12+
13+
"albumin_result_all_m_1" :{ "1a": "51"},
14+
"creatinine_result_all_m_1":{ "1a": "79.2", "2a":"106.1"},
15+
"ethnicity_category_adu_q_1":{"1b":"3"},
16+
"hemoglobin_result_all_m_1" :{ "1a": "11.1", "2a":"12"},
17+
"hba1cconc_result_all_m_1":{ "1a": "43", "2a":"44"},
18+
19+
"hypertension_startage_adu_q_1":{"1a":"","3a":"23","3b":"23"},
20+
"hypertension_presence_adu_q_1":{"1a":"2","3a":"1","3b":"1"},
21+
22+
"stroke_startage_adu_q_1":{ "1a": "12" },
23+
"stroke_presence_adu_q_1": { "1a": "1" },
24+
"stroke_followup_adu_q_1":{"2a":"2","3a":"2","3b":"2"},
25+
26+
27+
"diabetes_presence_adu_q_1": {"1a":"1"},
28+
"diabetes_startage_adu_q_1": {"1a":"28"},
29+
"diabetes_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
30+
"diabetes_type_adu_q_1": {"1a":"2"},
31+
"diabetes_type_adu_q_1_a": {"1a":""},
32+
"t1d_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
33+
"t2d_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
34+
35+
"bp_entrytype_all_m_1": {"1a":"2","2a":"2"},
36+
"bp_bandsize_all_m_1": {"1a":"1","2a":"1","3a":"1"},
37+
"bp_arm_all_m_1": {"3a":"2"},
38+
"bpavg_systolic_all_m_1": {"1a":"130","2a":"130"},
39+
"bpavg_diastolic_all_m_1": {"1a":"140","2a":"140"},
40+
"bpavg_arterial_all_m_1": {"1a":"113","2a":"113"},
41+
42+
"hdlchol_result_all_m_1": {"1a":"0.31","2a":"0.22"},
43+
"ldlchol_result_all_m_1": {"1a":"0.41","2a":"0.42"},
44+
"cholesterol_result_all_m_1": {"1a":"0.51","2a":"0.52"},
45+
46+
"heartattack_startage_adu_q_1": {"1a":"33"},
47+
"angioplasty_bypass_adu_q_1_a": {"1a":"1","3a":"1","3b":"1"},
48+
"heartattack_presence_adu_q_1": {"1a":"1"},
49+
"heartattack_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
50+
"angioplasty_bypass_adu_q_1": {"1a":"1","3a":"1","3b":"1"},
51+
52+
"heartfailure_startage_adu_q_1":{ "1a": "" },
53+
"heartfailure_presence_adu_q_1": { "1a": "1" },
54+
"heartfailure_followup_adu_q_1":{"2a":"2","3a":"2","3b":"2"},
55+
56+
"carotid_stenosis_adu_q_1": {"1a":"1"},
57+
"claudication_followup_adu_q_1": {"2a":"2","3a":"2","3b":"2"},
58+
"cvd_followup_adu_q_1": {"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
59+
60+
"current_smoker_adu_c_2": { "1a": "0", "1b": "0", "1c": "0", "2a": "0", "2b": "0", "3a": "0" },
61+
"smoking_startage_adu_c_2": { "1a": "5", "1b": "5", "1c": "5", "2a": "5", "2b": "5", "3a": "5" },
62+
"ex_smoker_adu_c_2": { "1a": "1", "1b": "1", "1c": "1", "2a": "1", "2b": "1", "3a": "1" },
63+
"smoking_endage_adu_c_2": { "1a": "8", "1b": "8", "1c": "8", "2a": "8", "2b": "8", "3a": "8"},
64+
"ever_smoker_adu_c_2": { "1a": "1", "1b": "1", "1c": "1", "2a": "1", "2b": "1", "3a": "1"},
65+
"total_frequency_adu_c_1": { "1a": "", "1b": "", "1c": "", "2a": "", "2b": "", "3a": ""},
66+
"packyears_cumulative_adu_c_2": { "1a": "", "1b": "", "1c": "", "2a": "", "2b": "", "3a": ""}
67+
68+
69+
70+
}
71+
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { heartFailure } from '../lifelines/HeartFailure';
33
import { MappingTarget, processInput } from '../mapper'
44
import {getSNOMEDCode} from '../codes/codesCollection'
55

6+
67
test('heartfailure, when reported positive in 1A', () => {
78

89
const input = {
@@ -24,6 +25,27 @@ test('heartfailure, when reported positive in 1A', () => {
2425
});
2526

2627

28+
test('heartfailure, when reported positive in 1A, but no start_age was reported', () => {
29+
30+
const input = {
31+
"heartfailure_startage_adu_q_1":{ "1a": "" },
32+
"heartfailure_presence_adu_q_1": { "1a": "1" },
33+
"heartfailure_followup_adu_q_1":{"1b":"2","1c":"2","2a":"2","3a":"2","3b":"2"},
34+
"date": {"1a":"1992-5","1b":"1995-5","1c":"1997-5","2a":"2001-5","2b":"2002-5","3a":"2003-5","3b":"2005-5"},
35+
"age": { "1a": "22" }
36+
}
37+
38+
InputSingleton.getInstance().setInput(input);
39+
40+
41+
expect(heartFailure.clinicalStatus()?.display).toBe("Active");
42+
expect(heartFailure.isPresent()).toBe(true);
43+
expect(heartFailure.code().display).toBe("Heart failure (disorder)");
44+
expect(heartFailure.onsetDateTime()).toBe(undefined);
45+
46+
});
47+
48+
2749
test('heart failure, when reported in 2A', () => {
2850

2951
const input = {
@@ -43,6 +65,26 @@ test('heart failure, when reported in 2A', () => {
4365
});
4466

4567

68+
test('heart failure, when reported in 2A, but there is no assessment date available for 2A', () => {
69+
70+
const input = {
71+
"heartfailure_startage_adu_q_1":{ "1a": "" },
72+
"heartfailure_presence_adu_q_1": { "1a": "2" },
73+
"heartfailure_followup_adu_q_1":{"1b":"2","1c":"2","2a":"1","3a":"2","3b":"2"},
74+
"date": {"1a":"1992-5","1b":"","1c":"","2a":"","3a":"","3b":""},
75+
"age": { "1a": "22" }
76+
}
77+
78+
InputSingleton.getInstance().setInput(input);
79+
expect(heartFailure.clinicalStatus()?.display).toBe("Active");
80+
expect(heartFailure.isPresent()).toBe(true);
81+
expect(heartFailure.code().display).toBe("Heart failure (disorder)");
82+
expect(heartFailure.onsetDateTime()).toBe(undefined);
83+
84+
});
85+
86+
87+
4688
test('heart failure, when reported right after baseline (1B)', () => {
4789

4890
const input = {
@@ -100,6 +142,26 @@ test('heart failure, when reported in 2A, after skipping multiple assessments',
100142
});
101143

102144

145+
test('heart failure, when reported in 2A, after skipping multiple assessments', () => {
146+
147+
const input = {
148+
"heartfailure_startage_adu_q_1":{ "1a": "" },
149+
"heartfailure_presence_adu_q_1": { "1a": "2" },
150+
"heartfailure_followup_adu_q_1":{"1b":undefined,"1c":undefined,"2a":"1","3a":"2","3b":"2"},
151+
"date": {"1a":"1992-5","1b":undefined,"1c":undefined,"2a":"2002-5","3a":"2003-5","3b":"2005-5"},
152+
"age": { "1a": "22" }
153+
}
154+
155+
InputSingleton.getInstance().setInput(input);
156+
expect(heartFailure.clinicalStatus()?.display).toBe("Active");
157+
expect(heartFailure.isPresent()).toBe(true);
158+
expect(heartFailure.code().display).toBe("Heart failure (disorder)");
159+
expect(heartFailure.onsetDateTime()).toBe("1997-05");
160+
161+
});
162+
163+
164+
103165

104166
test('heart failure, when no reported', () => {
105167

0 commit comments

Comments
 (0)