cmap 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/cmap.gemspec +1 -2
- data/example/acr.txt +32 -0
- data/example/cmap_to_sql.rb +91 -0
- data/lib/cmap/edges_to_queries.rb +43 -0
- data/lib/cmap/graph_sanitizer.rb +44 -0
- data/lib/cmap/graph_to_sql.rb +11 -26
- data/lib/cmap/propositions_to_graph.rb +6 -6
- data/lib/cmap/propositions_to_sql.rb +32 -0
- data/lib/cmap/subquery_expander.rb +22 -0
- data/lib/cmap/version.rb +1 -1
- data/lib/cmap.rb +5 -1
- metadata +12 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 48ee02def6c2ba51722af4bd490b39bcd310ce1e
|
|
4
|
+
data.tar.gz: c65a0293ee805f17bbcf662f907f22538d064461
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6949e80f0d48124ebe8d570b26e3a53f8924d7a573442f6f1dcd1a50185bef93ab91ae396fa49ff9d8886d5a4cc71aac1a1fa66951ad9080857e259377304ffb
|
|
7
|
+
data.tar.gz: e15dfa04a3323273bf83296c85b24d24b3fe5d0af05136c38b4aa7ac9a2837278d09cf41ebfa9ded52c8c0dc19f26669c856306dc164b91df6199dfed4b34e5c
|
data/cmap.gemspec
CHANGED
data/example/acr.txt
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
IGF-1 Result, Female CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Male = 1 AND test_result_num >157) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Male = 1 AND test_result_num >167) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Male = 1 AND test_result_num >184) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Male = 1 AND test_result_num >225) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Male = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Male = 1 AND test_result_num >292) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Male = 1 AND test_result_num >323) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Male = 1 AND test_result_num >362) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Male = 1 AND test_result_num >407) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Male = 1 AND test_result_num >454) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Male = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Male = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Male = 1 AND test_result_num >551) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Male = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Male = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Male = 1 AND test_result_num >521) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Male = 1 AND test_result_num >494) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Male = 1 AND test_result_num >463) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Male = 1 AND test_result_num >430) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Male = 1 AND test_result_num >355) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Male = 1 AND test_result_num >282) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Male = 1 AND test_result_num >233) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Male = 1 AND test_result_num >216) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Male = 1 AND test_result_num >200) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Male = 1 AND test_result_num >194) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Male = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Male = 1 AND test_result_num >192) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Male = 1 AND test_result_num >179) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Male = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Male = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Male
|
|
2
|
+
ai_ppdm_acr test_result_name_stnd = 'IGF-I' IGF-1 Result
|
|
3
|
+
IGF-1 Result, Has 253 ICD9 Code IGF-1 Result, Abnormal = 1 AND IGF-1 Result, Has 253 ICD9 Code = 1 Profile - Acromegarly - Patients With Abnormal IGF-1 Test and Acromegarly ICD9 Code
|
|
4
|
+
IGF-1 Result, Has 253 ICD9 Code IGF-1 Result, Abnormal = 0 AND IGF-1 Result, Has 253 ICD9 Code = 0 Profile - Acromegarly - Patients With Not Abnormal IGF-1 Test and Other ICD9 Code
|
|
5
|
+
IGF-1 Result, Abnormal IGF-1 Result, Abnormal = 1 AND IGF-1 Result, Has 253 ICD9 Code = 0 Profile - Acromegarly - Patients With Abnormal IGF-1 Test and Other ICD9 Code
|
|
6
|
+
IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code, Hist IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code, Hist = 1 AND IGF-1 Result, Abnormal = 0 Profile - Acromegarly - Patients With Not Abnormal IGF-1 Test and Pituitary Gland Neoplasm ICD9 Code
|
|
7
|
+
IGF-1 Result, Age Group CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Male = 1 AND test_result_num >157) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Male = 1 AND test_result_num >167) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Male = 1 AND test_result_num >184) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Male = 1 AND test_result_num >225) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Male = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Male = 1 AND test_result_num >292) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Male = 1 AND test_result_num >323) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Male = 1 AND test_result_num >362) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Male = 1 AND test_result_num >407) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Male = 1 AND test_result_num >454) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Male = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Male = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Male = 1 AND test_result_num >551) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Male = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Male = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Male = 1 AND test_result_num >521) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Male = 1 AND test_result_num >494) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Male = 1 AND test_result_num >463) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Male = 1 AND test_result_num >430) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Male = 1 AND test_result_num >355) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Male = 1 AND test_result_num >282) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Male = 1 AND test_result_num >233) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Male = 1 AND test_result_num >216) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Male = 1 AND test_result_num >200) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Male = 1 AND test_result_num >194) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Male = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Male = 1 AND test_result_num >192) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Male = 1 AND test_result_num >179) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Male = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Male = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Male
|
|
8
|
+
Has Diag equals Profile - Acromegarly - Diagnosed Patients
|
|
9
|
+
IGF-1 Result, Male CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Male = 1 AND test_result_num >157) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Male = 1 AND test_result_num >167) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Male = 1 AND test_result_num >184) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Male = 1 AND test_result_num >225) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Male = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Male = 1 AND test_result_num >292) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Male = 1 AND test_result_num >323) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Male = 1 AND test_result_num >362) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Male = 1 AND test_result_num >407) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Male = 1 AND test_result_num >454) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Male = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Male = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Male = 1 AND test_result_num >551) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Male = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Male = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Male = 1 AND test_result_num >521) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Male = 1 AND test_result_num >494) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Male = 1 AND test_result_num >463) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Male = 1 AND test_result_num >430) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Male = 1 AND test_result_num >355) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Male = 1 AND test_result_num >282) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Male = 1 AND test_result_num >233) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Male = 1 AND test_result_num >216) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Male = 1 AND test_result_num >200) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Male = 1 AND test_result_num >194) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Male = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Male = 1 AND test_result_num >192) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Male = 1 AND test_result_num >179) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Male = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Male = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Male
|
|
10
|
+
IGF-1 Result, Abnormal IGF-1 Result, Abnormal = 0 AND IGF-1 Result, Has 253 ICD9 Code = 0 Profile - Acromegarly - Patients With Not Abnormal IGF-1 Test and Other ICD9 Code
|
|
11
|
+
IGF-1 Result IGF-1 Result = 1 AND patient_gender = 'M' IGF-1 Result, Male
|
|
12
|
+
IGF-1 Result CASE WHEN IGF-1 Result = 1 AND patient_age < 20 THEN patient_age WHEN IGF-1 Result = 1 AND patient_age BETWEEN 21 AND 25 THEN 21 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 26 AND 30 THEN 26 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 31 AND 35 THEN 31 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 36 AND 40 THEN 36 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 41 AND 45 THEN 41 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 46 AND 50 THEN 46 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 51 AND 55 THEN 51 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 56 AND 60 THEN 56 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 61 AND 65 THEN 61 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 66 AND 70 THEN 66 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 71 AND 75 THEN 71 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 76 AND 80 THEN 76 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 81 AND 85 THEN 81 WHEN IGF-1 Result = 1 AND patient_age BETWEEN 86 AND 90 THEN 86 WHEN IGF-1 Result = 1 AND patient_age > 90 THEN 91 END IGF-1 Result, Age Group
|
|
13
|
+
IGF-1 Result, Age Group CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Female = 1 AND test_result_num >126) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Female = 1 AND test_result_num >132) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Female = 1 AND test_result_num >145) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Female = 1 AND test_result_num >164) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Female = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Female = 1 AND test_result_num >214) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Female = 1 AND test_result_num >240) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Female = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Female = 1 AND test_result_num >305) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Female = 1 AND test_result_num >349) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Female = 1 AND test_result_num >400) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Female = 1 AND test_result_num >453) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Female = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Female = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Female = 1 AND test_result_num >552) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Female = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Female = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Female = 1 AND test_result_num >517) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Female = 1 AND test_result_num >486) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Female = 1 AND test_result_num >451) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Female = 1 AND test_result_num >416) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Female = 1 AND test_result_num >342) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Female = 1 AND test_result_num >270) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Female = 1 AND test_result_num >243) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Female = 1 AND test_result_num >227) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Female = 1 AND test_result_num >204) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Female = 1 AND test_result_num >195) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Female = 1 AND test_result_num >190) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Female = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Female = 1 AND test_result_num >169) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Female = 1 AND test_result_num >163) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Female = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Female = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Female = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Female = 1 AND test_result_num >178) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Female = 1 AND test_result_num >178) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Female
|
|
14
|
+
IGF-1 Result, Male CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Female = 1 AND test_result_num >126) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Female = 1 AND test_result_num >132) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Female = 1 AND test_result_num >145) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Female = 1 AND test_result_num >164) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Female = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Female = 1 AND test_result_num >214) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Female = 1 AND test_result_num >240) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Female = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Female = 1 AND test_result_num >305) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Female = 1 AND test_result_num >349) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Female = 1 AND test_result_num >400) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Female = 1 AND test_result_num >453) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Female = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Female = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Female = 1 AND test_result_num >552) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Female = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Female = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Female = 1 AND test_result_num >517) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Female = 1 AND test_result_num >486) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Female = 1 AND test_result_num >451) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Female = 1 AND test_result_num >416) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Female = 1 AND test_result_num >342) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Female = 1 AND test_result_num >270) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Female = 1 AND test_result_num >243) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Female = 1 AND test_result_num >227) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Female = 1 AND test_result_num >204) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Female = 1 AND test_result_num >195) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Female = 1 AND test_result_num >190) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Female = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Female = 1 AND test_result_num >169) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Female = 1 AND test_result_num >163) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Female = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Female = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Female = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Female = 1 AND test_result_num >178) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Female = 1 AND test_result_num >178) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Female
|
|
15
|
+
IGF-1 Result, Has 253 ICD9 Code IGF-1 Result, Abnormal = 1 AND IGF-1 Result, Has 253 ICD9 Code = 0 Profile - Acromegarly - Patients With Abnormal IGF-1 Test and Other ICD9 Code
|
|
16
|
+
IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code, Prior (IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code = 1) OR (IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code, Prior = 1) IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code, Hist
|
|
17
|
+
IGF-1 Result, Age Group CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Male = 1 AND test_result_num >157) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Male = 1 AND test_result_num >167) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Male = 1 AND test_result_num >184) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Male = 1 AND test_result_num >225) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Male = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Male = 1 AND test_result_num >292) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Male = 1 AND test_result_num >323) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Male = 1 AND test_result_num >362) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Male = 1 AND test_result_num >407) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Male = 1 AND test_result_num >454) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Male = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Male = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Male = 1 AND test_result_num >551) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Male = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Male = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Male = 1 AND test_result_num >521) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Male = 1 AND test_result_num >494) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Male = 1 AND test_result_num >463) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Male = 1 AND test_result_num >430) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Male = 1 AND test_result_num >355) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Male = 1 AND test_result_num >282) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Male = 1 AND test_result_num >233) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Male = 1 AND test_result_num >216) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Male = 1 AND test_result_num >200) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Male = 1 AND test_result_num >194) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Male = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Male = 1 AND test_result_num >192) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Male = 1 AND test_result_num >179) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Male = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Male = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Male
|
|
18
|
+
IGF-1 Result case when IGF-1 Result = 1 AND '227.3' in (icd9_primary,icd9_secondary,icd9_third,icd9_fourth) then 1 else 0 end IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code
|
|
19
|
+
IGF-1 Result, Female CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Female = 1 AND test_result_num >126) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Female = 1 AND test_result_num >132) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Female = 1 AND test_result_num >145) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Female = 1 AND test_result_num >164) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Female = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Female = 1 AND test_result_num >214) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Female = 1 AND test_result_num >240) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Female = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Female = 1 AND test_result_num >305) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Female = 1 AND test_result_num >349) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Female = 1 AND test_result_num >400) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Female = 1 AND test_result_num >453) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Female = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Female = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Female = 1 AND test_result_num >552) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Female = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Female = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Female = 1 AND test_result_num >517) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Female = 1 AND test_result_num >486) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Female = 1 AND test_result_num >451) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Female = 1 AND test_result_num >416) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Female = 1 AND test_result_num >342) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Female = 1 AND test_result_num >270) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Female = 1 AND test_result_num >243) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Female = 1 AND test_result_num >227) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Female = 1 AND test_result_num >204) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Female = 1 AND test_result_num >195) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Female = 1 AND test_result_num >190) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Female = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Female = 1 AND test_result_num >169) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Female = 1 AND test_result_num >163) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Female = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Female = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Female = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Female = 1 AND test_result_num >178) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Female = 1 AND test_result_num >178) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Female
|
|
20
|
+
IGF-1 Result, Abn High, Male IGF-1 Result, Abn High, Male = 1 OR IGF-1 Result, Abn High, Female = 1 IGF-1 Result, Abnormal
|
|
21
|
+
IGF-1 Result, Has 253 ICD9 Code IGF-1 Result, Has 253 ICD9 Code = 1 OR IGF-1 Result, Abnormal = 1 Has Diag
|
|
22
|
+
IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code prior history of IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code, Prior
|
|
23
|
+
IGF-1 Result, Female CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Male = 1 AND test_result_num >157) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Male = 1 AND test_result_num >167) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Male = 1 AND test_result_num >184) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Male = 1 AND test_result_num >225) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Male = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Male = 1 AND test_result_num >292) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Male = 1 AND test_result_num >323) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Male = 1 AND test_result_num >362) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Male = 1 AND test_result_num >407) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Male = 1 AND test_result_num >454) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Male = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Male = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Male = 1 AND test_result_num >551) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Male = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Male = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Male = 1 AND test_result_num >521) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Male = 1 AND test_result_num >494) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Male = 1 AND test_result_num >463) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Male = 1 AND test_result_num >430) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Male = 1 AND test_result_num >355) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Male = 1 AND test_result_num >282) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Male = 1 AND test_result_num >233) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Male = 1 AND test_result_num >216) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Male = 1 AND test_result_num >200) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Male = 1 AND test_result_num >194) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Male = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Male = 1 AND test_result_num >192) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Male = 1 AND test_result_num >179) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Male = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Male = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Male
|
|
24
|
+
IGF-1 Result, Abn High, Female IGF-1 Result, Abn High, Male = 1 OR IGF-1 Result, Abn High, Female = 1 IGF-1 Result, Abnormal
|
|
25
|
+
IGF-1 Result, Abnormal IGF-1 Result, Abnormal = 1 AND IGF-1 Result, Has 253 ICD9 Code = 1 Profile - Acromegarly - Patients With Abnormal IGF-1 Test and Acromegarly ICD9 Code
|
|
26
|
+
IGF-1 Result IGF-1 Result = 1 AND patient_gender = 'F' IGF-1 Result, Female
|
|
27
|
+
IGF-1 Result, Male CASE WHEN (IGF-1 Result, Age Group = 0 AND IGF-1 Result, Male = 1 AND test_result_num >157) THEN 1 WHEN (IGF-1 Result, Age Group = 1 AND IGF-1 Result, Male = 1 AND test_result_num >167) THEN 1 WHEN (IGF-1 Result, Age Group = 2 AND IGF-1 Result, Male = 1 AND test_result_num >184) THEN 1 WHEN (IGF-1 Result, Age Group = 3 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 4 AND IGF-1 Result, Male = 1 AND test_result_num >225) THEN 1 WHEN (IGF-1 Result, Age Group = 5 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 6 AND IGF-1 Result, Male = 1 AND test_result_num >267) THEN 1 WHEN (IGF-1 Result, Age Group = 7 AND IGF-1 Result, Male = 1 AND test_result_num >292) THEN 1 WHEN (IGF-1 Result, Age Group = 8 AND IGF-1 Result, Male = 1 AND test_result_num >323) THEN 1 WHEN (IGF-1 Result, Age Group = 9 AND IGF-1 Result, Male = 1 AND test_result_num >362) THEN 1 WHEN (IGF-1 Result, Age Group = 10 AND IGF-1 Result, Male = 1 AND test_result_num >407) THEN 1 WHEN (IGF-1 Result, Age Group = 11 AND IGF-1 Result, Male = 1 AND test_result_num >454) THEN 1 WHEN (IGF-1 Result, Age Group = 12 AND IGF-1 Result, Male = 1 AND test_result_num >499) THEN 1 WHEN (IGF-1 Result, Age Group = 13 AND IGF-1 Result, Male = 1 AND test_result_num >533) THEN 1 WHEN (IGF-1 Result, Age Group = 14 AND IGF-1 Result, Male = 1 AND test_result_num >551) THEN 1 WHEN (IGF-1 Result, Age Group = 15 AND IGF-1 Result, Male = 1 AND test_result_num >554) THEN 1 WHEN (IGF-1 Result, Age Group = 16 AND IGF-1 Result, Male = 1 AND test_result_num >542) THEN 1 WHEN (IGF-1 Result, Age Group = 17 AND IGF-1 Result, Male = 1 AND test_result_num >521) THEN 1 WHEN (IGF-1 Result, Age Group = 18 AND IGF-1 Result, Male = 1 AND test_result_num >494) THEN 1 WHEN (IGF-1 Result, Age Group = 19 AND IGF-1 Result, Male = 1 AND test_result_num >463) THEN 1 WHEN (IGF-1 Result, Age Group = 20 AND IGF-1 Result, Male = 1 AND test_result_num >430) THEN 1 WHEN (IGF-1 Result, Age Group = 21 AND IGF-1 Result, Male = 1 AND test_result_num >355) THEN 1 WHEN (IGF-1 Result, Age Group = 26 AND IGF-1 Result, Male = 1 AND test_result_num >282) THEN 1 WHEN (IGF-1 Result, Age Group = 31 AND IGF-1 Result, Male = 1 AND test_result_num >246) THEN 1 WHEN (IGF-1 Result, Age Group = 36 AND IGF-1 Result, Male = 1 AND test_result_num >233) THEN 1 WHEN (IGF-1 Result, Age Group = 41 AND IGF-1 Result, Male = 1 AND test_result_num >216) THEN 1 WHEN (IGF-1 Result, Age Group = 46 AND IGF-1 Result, Male = 1 AND test_result_num >205) THEN 1 WHEN (IGF-1 Result, Age Group = 51 AND IGF-1 Result, Male = 1 AND test_result_num >200) THEN 1 WHEN (IGF-1 Result, Age Group = 56 AND IGF-1 Result, Male = 1 AND test_result_num >194) THEN 1 WHEN (IGF-1 Result, Age Group = 61 AND IGF-1 Result, Male = 1 AND test_result_num >188) THEN 1 WHEN (IGF-1 Result, Age Group = 66 AND IGF-1 Result, Male = 1 AND test_result_num >192) THEN 1 WHEN (IGF-1 Result, Age Group = 71 AND IGF-1 Result, Male = 1 AND test_result_num >179) THEN 1 WHEN (IGF-1 Result, Age Group = 76 AND IGF-1 Result, Male = 1 AND test_result_num >172) THEN 1 WHEN (IGF-1 Result, Age Group = 81 AND IGF-1 Result, Male = 1 AND test_result_num >165) THEN 1 WHEN (IGF-1 Result, Age Group = 86 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 WHEN (IGF-1 Result, Age Group = 91 AND IGF-1 Result, Male = 1 AND test_result_num >166) THEN 1 ELSE 0 END IGF-1 Result, Abn High, Male
|
|
28
|
+
IGF-1 Result, Abnormal IGF-1 Result, Has 253 ICD9 Code = 1 OR IGF-1 Result, Abnormal = 1 Has Diag
|
|
29
|
+
IGF-1 Result case when IGF-1 Result = 1 AND '253.0' in (icd9_primary,icd9_secondary,icd9_third,icd9_fourth) then 1 else 0 end IGF-1 Result, Has 253 ICD9 Code
|
|
30
|
+
IGF-1 Result, Has 253 ICD9 Code IGF-1 Result, Abnormal = 0 AND IGF-1 Result, Has 253 ICD9 Code = 1 Profile - Acromegarly - Patients With Not Abnormal IGF-1 Test and Acromegarly ICD9 Code
|
|
31
|
+
IGF-1 Result, Abnormal IGF-1 Result, Abnormal = 0 AND IGF-1 Result, Has 253 ICD9 Code = 1 Profile - Acromegarly - Patients With Not Abnormal IGF-1 Test and Acromegarly ICD9 Code
|
|
32
|
+
IGF-1 Result, Abnormal IGF-1 Result, Has Pituitary Gland Neoplasm ICD9 Code, Hist = 1 AND IGF-1 Result, Abnormal = 0 Profile - Acromegarly - Patients With Not Abnormal IGF-1 Test and Pituitary Gland Neoplasm ICD9 Code
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require '/Users/malarcon/medivo/cmap/lib/cmap.rb'
|
|
2
|
+
require 'pry'
|
|
3
|
+
|
|
4
|
+
class PpdmVelmaCode
|
|
5
|
+
attr_reader :propositions_to_sql,:condition
|
|
6
|
+
|
|
7
|
+
def initialize(propositions_to_sql,condition)
|
|
8
|
+
@propositions_to_sql = propositions_to_sql
|
|
9
|
+
@condition = condition
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def save_to_file(filename,what_to_save)
|
|
13
|
+
output = File.open( "#{filename}","w" )
|
|
14
|
+
output << what_to_save
|
|
15
|
+
output.close
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def extract_create_sql
|
|
19
|
+
"create table extracts.#{condition} (\n lab_result_id integer,\n input_filename varchar(255),\n patient_id varchar(255),\n patient_gender varchar(255),\n patient_date_of_birth varchar(255),\n patient_state varchar(255),\n diagnosis_codes varchar(255),\n test_result_name varchar(255),\n test_result_value varchar(255),\n test_result_abnormal_flag varchar(255),\n ordering_provider_npi_number varchar(255),\n ordering_provider_first_name varchar(255),\n ordering_provider_last_name varchar(255),\n ordering_practice_lab_account_number varchar(255),\n ordering_practice_address_line_1 varchar(255),\n ordering_practice_zip_code varchar(255),\n\n test_result_name_stnd varchar(128),\n test_result_value_numeric_stnd numeric(23,5),\n test_observation_reported_date varchar(255),\n test_specimen_draw_date varchar(255),\n test_specimen_receipt_date varchar(255),\n diag_1 varchar(16),\n diag_2 varchar(16),\n diag_3 varchar(16),\n diag_4 varchar(16),\n account_type varchar(255),\n provider_type varchar(255)\n);"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def extract_select_sql
|
|
23
|
+
extract_select = "select\n -- lochlomond fields\n lab_result_id,\n input_filename,\n token4 as patient_id,\n patient_gender,\n patient_date_of_birth,\n patient_state,\n diagnosis_codes,\n test_result_name,\n test_result_value,\n test_result_abnormal_flag,\n ordering_provider_npi_number,\n ordering_provider_first_name,\n ordering_provider_last_name,\n ordering_practice_lab_account_number,\n ordering_practice_address_line_1,\n ordering_practice_zip_code,\n\n -- standardized fields\n test_result_name_stnd,\n test_result_value_numeric_stnd,\n test_observation_reported_date,\n test_specimen_draw_date,\n test_specimen_receipt_date,\n diag_1,\n diag_2,\n diag_3,\n diag_4,\n account_type,\n provider_type\nfrom\n analytics.lab_result\nwhere"
|
|
24
|
+
results_of_interest = propositions_to_sql.sanitized_graph.children(propositions_to_sql.table_name)
|
|
25
|
+
vertices_of_results = propositions_to_sql.sanitized_graph.edges.select{|e| results_of_interest.include? e.destination_vertex}
|
|
26
|
+
fields = vertices_of_results.map {|e| "#{e.value}" }.join(" or ")
|
|
27
|
+
"#{extract_select} #{fields};"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def transform_sql
|
|
31
|
+
transform_header = "set search_path to datamarts;\nDROP TABLE IF EXISTS ai_ppdm_acr;\n\nCREATE TABLE ai_ppdm_acr\n\nAS\n\nSELECT ROW_NUMBER() OVER (ORDER BY patient_id,test_observation_reported_date,lab_result_id) AS record_number,\nDENSE_RANK() OVER (PARTITION BY patient_id ORDER BY test_observation_reported_date ASC,test_result_name_stnd,lab_result_id) AS record_number_asc,\nDENSE_RANK() OVER (PARTITION BY patient_id ORDER BY test_observation_reported_date DESC,test_result_name_stnd,lab_result_id) AS record_number_desc,\nlab_result_id,\ninput_filename,\npatient_id,\nmd5(test_observation_reported_date||patient_id) patient_date_id,\npatient_gender,\npatient_date_of_birth as patient_birth_year,\nCASE WHEN left(test_observation_reported_date,4) = '' then null\nELSE left(test_observation_reported_date,4)::numeric - patient_date_of_birth::numeric END as patient_age,\npatient_state,\ntest_result_name_stnd,\ntest_result_name,\nCASE WHEN test_result_value_numeric_stnd is null and test_result_value like '%<%' or test_result_value like '%>%' then replace(case WHEN test_result_value ~* '< ?[0-9]+ ?not detected' then '0' ELSE regexp_substr(test_result_value,'[0-9]+(\.[0-9]+)? ?') end,',','') *1.00\n WHEN test_result_value_numeric_stnd is null and test_result_value like '%E6' then replace(test_result_value,'E6','')*1000000.00\n WHEN test_result_value_numeric_stnd is null and test_result_value like '%E5' then replace(test_result_value,'E5','')*100000.00\n WHEN test_result_value_numeric_stnd is null and test_result_value like '%E4' then replace(test_result_value,'E4','')*10000.00\n WHEN test_result_value_numeric_stnd is null and test_result_value ~* 'not detected' then 0.00\n WHEN test_result_value_numeric_stnd is null and test_result_value ~* 'detected' then 1.00\nELSE test_result_value_numeric_stnd end test_result_num,\ntest_result_value,\ntest_result_abnormal_flag as test_abnorm_flag,\nTO_DATE(CASE WHEN test_observation_reported_date = '' THEN test_specimen_receipt_date ELSE test_observation_reported_date END,'YYYYMMDD') test_observation_reported_date_dt,\nLEFT (CASE WHEN test_observation_reported_date = '' THEN test_specimen_receipt_date ELSE test_observation_reported_date END,6)*1 test_observation_reported_date_yyyymm,\nTO_DATE(test_specimen_draw_date,'YYYYMMDD') test_specimen_draw_date_dt,\nmd5(coalesce(ordering_provider_npi_number,'')|| coalesce(ordering_provider_first_name,'')||coalesce(ordering_provider_last_name,'')) provider_id,\nordering_practice_lab_account_number practice_id,\nCASE\n WHEN lower(account_type) IN ('other','jail','military','n/a',' ','deleted account') THEN 'Non-Reference'\n WHEN account_type is null THEN 'Non-Reference'\n WHEN lower(account_type) IN ('lab') THEN 'Reference'\n WHEN lower(account_type) IN ('foreign') THEN 'Non-USA'\n ELSE 'UNMAPPED' ||account_type\n END account_type_val,\nprovider_type,\ndiag_1 as icd9_primary,\ndiag_2 as icd9_secondary,\ndiag_3 as icd9_third,\ndiag_4 as icd9_fourth,\nordering_practice_address_line_1 IS NOT NULL has_practice_info,\n((ordering_provider_first_name IS NOT NULL AND ordering_provider_last_name IS NOT NULL) OR ordering_provider_npi_number IS NOT NULL) has_provider_info,\nordering_provider_npi_number <> '' has_npi,\nordering_practice_zip_code\nFROM extracts.#{condition};\n\n"
|
|
32
|
+
transform_body = propositions_to_sql.queries.join("\n")
|
|
33
|
+
"#{transform_header}\n#{transform_body}\n;"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def transform_qa_sql
|
|
37
|
+
transform_qa_header = "set search_path to datamarts; \nselect "
|
|
38
|
+
fields_to_sum= propositions_to_sql.sanitized_graph.vertices.select {|v| v != propositions_to_sql.table_name}
|
|
39
|
+
transform_body = fields_to_sum.map {|e| "sum(#{e}) #{e}" }.join("\n, ")
|
|
40
|
+
transform_body_from ="from #{propositions_to_sql.table_name}"
|
|
41
|
+
"#{transform_qa_header}\n#{transform_body}\n#{transform_body_from};"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
if ARGV.empty?
|
|
48
|
+
puts "USAGE: #{$0} <CONDITION>"
|
|
49
|
+
exit
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
condition = ARGV[0]
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
propositions_path = File.expand_path("./"+condition+".txt", File.dirname(__FILE__))
|
|
56
|
+
|
|
57
|
+
subquery_gsubs = [
|
|
58
|
+
["prior history of", "update +table_name+ set +destination_vertex+=(SELECT count(*) FROM +table_name+ n1 WHERE n1.patient_id = +table_name+.patient_id AND n1.test_specimen_draw_date_dt <+table_name+.test_specimen_draw_date_dt AND +origin_vertex+=1)>0;"],
|
|
59
|
+
["equals", "update +table_name+ set +destination_vertex+= +origin_vertex+;"],
|
|
60
|
+
["order has","update +table_name+ set +destination_vertex+=(SELECT max(+origin_vertex+) FROM +table_name+ n1 WHERE n1.patient_id = +table_name+.patient_id AND n1.order_id = +table_name+.order_id );"]
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
root_name = "ai_ppdm_"+condition
|
|
64
|
+
args = {
|
|
65
|
+
propositions_path: propositions_path,
|
|
66
|
+
table_name: root_name,
|
|
67
|
+
subquery_gsubs: subquery_gsubs
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
propositions_to_sql = Cmap::PropositionsToSql.new(args)
|
|
71
|
+
|
|
72
|
+
ppdm_extract_code = PpdmVelmaCode.new(propositions_to_sql,condition)
|
|
73
|
+
|
|
74
|
+
puts "\n################################\nSQL - EXTRACT CREATE - #{root_name} - create.sql\n################################\n"
|
|
75
|
+
#puts ppdm_extract_code.extract_create_sql
|
|
76
|
+
ppdm_extract_code.save_to_file("create.sql",ppdm_extract_code.extract_create_sql)
|
|
77
|
+
|
|
78
|
+
puts "\n################################\nSQL - EXTRACT SELECT - #{root_name} - select.sql\n################################\n"
|
|
79
|
+
#puts ppdm_extract_code.extract_select_sql
|
|
80
|
+
ppdm_extract_code.save_to_file("select.sql",ppdm_extract_code.extract_select_sql)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
puts "\n################################\nSQL - TRANSFORM - #{root_name} - #{root_name}.sql\n################################\n"
|
|
84
|
+
ppdm_extract_code.save_to_file("#{root_name}.sql",ppdm_extract_code.transform_sql)
|
|
85
|
+
#puts ppdm_extract_code.transform_sql
|
|
86
|
+
|
|
87
|
+
puts "\n################################\nSQL - TRANSFORM QA - #{root_name} - #{root_name}_qa.sql\n################################\n"
|
|
88
|
+
ppdm_extract_code.save_to_file("#{root_name}_qa.sql",ppdm_extract_code.transform_qa_sql)
|
|
89
|
+
#puts ppdm_extract_code.transform_qa_sql
|
|
90
|
+
|
|
91
|
+
#binding.pry
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Cmap; class EdgesToQueries
|
|
2
|
+
|
|
3
|
+
attr_reader :edges, :table_name, :subquery_expander
|
|
4
|
+
|
|
5
|
+
def initialize(edges, table_name, subquery_expander)
|
|
6
|
+
@edges = edges
|
|
7
|
+
@table_name = table_name
|
|
8
|
+
@subquery_expander = subquery_expander
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def queries
|
|
12
|
+
add_columns_queries +
|
|
13
|
+
gsub_subqueries +
|
|
14
|
+
updates
|
|
15
|
+
.delete_if {|q| q.empty?}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def unique_edges
|
|
21
|
+
edges.uniq {|e| [e.destination_vertex, e.value]}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def add_columns_queries
|
|
25
|
+
unique_edges.map {|e| "alter table #{table_name} add column #{e.destination_vertex} int2;"}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def grouped_edges
|
|
29
|
+
unique_edges.group_by {|e| subquery_expander.update_query?(e)}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def gsub_subqueries
|
|
33
|
+
(grouped_edges[true] || []).map {|e| subquery_expander.query(e)}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def updates
|
|
37
|
+
u = (grouped_edges[false] || []).map {|e| "#{e.destination_vertex}=(#{e.value})::int"}.join(", ")
|
|
38
|
+
return [] if u.empty?
|
|
39
|
+
["update #{table_name} set #{u};"]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end; end
|
|
43
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Cmap; class GraphSanitizer
|
|
2
|
+
|
|
3
|
+
attr_reader :graph
|
|
4
|
+
|
|
5
|
+
def initialize(graph)
|
|
6
|
+
@graph = graph
|
|
7
|
+
@sanitized_vertex_lookup = {}
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def sanitized_graph
|
|
11
|
+
DirectedGraph::Graph.new(sanitized_edges)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def edges_with_sanitized_vertices
|
|
15
|
+
graph.edges.map do |edge|
|
|
16
|
+
origin_vertex = sanitize_string(edge.origin_vertex)
|
|
17
|
+
destination_vertex = sanitize_string(edge.destination_vertex)
|
|
18
|
+
|
|
19
|
+
@sanitized_vertex_lookup[edge.origin_vertex] = origin_vertex
|
|
20
|
+
@sanitized_vertex_lookup[edge.destination_vertex] = destination_vertex
|
|
21
|
+
|
|
22
|
+
{origin_vertex: origin_vertex, destination_vertex: destination_vertex, value: edge.value}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def sanitize_edge_value(edge_args)
|
|
27
|
+
@sanitized_vertex_lookup.keys.sort.reverse.each do |original_vertex_name|
|
|
28
|
+
edge_args[:value].gsub!(original_vertex_name, @sanitized_vertex_lookup[original_vertex_name])
|
|
29
|
+
end
|
|
30
|
+
edge_args
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def sanitized_edges
|
|
34
|
+
edges_with_sanitized_vertices.map do |edge_args|
|
|
35
|
+
DirectedGraph::Edge.new(sanitize_edge_value(edge_args))
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def sanitize_string(string)
|
|
40
|
+
string.gsub(/[^0-9a-zA-Z]+/, '_').downcase
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end; end
|
|
44
|
+
|
data/lib/cmap/graph_to_sql.rb
CHANGED
|
@@ -1,47 +1,32 @@
|
|
|
1
1
|
module Cmap; class GraphToSql
|
|
2
2
|
|
|
3
|
-
attr_reader :table_name, :graph, :
|
|
3
|
+
attr_reader :table_name, :graph, :subquery_gsubs
|
|
4
4
|
|
|
5
|
-
def initialize(table_name, graph,
|
|
5
|
+
def initialize(table_name, graph, subquery_gsubs = [])
|
|
6
6
|
@table_name = table_name
|
|
7
7
|
@graph = graph
|
|
8
|
-
@
|
|
9
|
-
@column_gsubs = column_gsubs
|
|
8
|
+
@subquery_gsubs = subquery_gsubs
|
|
10
9
|
end
|
|
11
10
|
|
|
12
11
|
def queries
|
|
13
|
-
|
|
14
|
-
memo.
|
|
12
|
+
sorted_grouped_edges.inject([]) do |memo, (_, edges)|
|
|
13
|
+
memo += (EdgesToQueries.new(edges, table_name, subquery_expander).queries)
|
|
15
14
|
memo
|
|
16
15
|
end
|
|
17
16
|
end
|
|
18
17
|
|
|
19
18
|
private
|
|
20
19
|
|
|
21
|
-
def
|
|
22
|
-
|
|
23
|
-
q = query(edge)
|
|
24
|
-
"alter table #{table_name} add column #{c} int2; update #{table_name} set #{c} = 1 where (#{q});"
|
|
20
|
+
def subquery_expander
|
|
21
|
+
SubqueryExpander.new(table_name: table_name, subquery_gsubs: subquery_gsubs)
|
|
25
22
|
end
|
|
26
23
|
|
|
27
|
-
def
|
|
28
|
-
|
|
29
|
-
column_gsubs.each do |gsub|
|
|
30
|
-
c = c.gsub(*gsub)
|
|
31
|
-
end
|
|
32
|
-
c
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def query(edge)
|
|
36
|
-
q = edge.value
|
|
37
|
-
query_gsubs.each do |gsub|
|
|
38
|
-
q = q.gsub(*gsub)
|
|
39
|
-
end
|
|
40
|
-
q
|
|
24
|
+
def sorted_grouped_edges
|
|
25
|
+
Hash[grouped_edges.sort]
|
|
41
26
|
end
|
|
42
27
|
|
|
43
|
-
def
|
|
44
|
-
graph.
|
|
28
|
+
def grouped_edges
|
|
29
|
+
graph.edges.group_by {|e| graph.longest_path(table_name, e.destination_vertex).length}
|
|
45
30
|
end
|
|
46
31
|
|
|
47
32
|
end; end
|
|
@@ -12,17 +12,17 @@ module Cmap; class PropositionsToGraph
|
|
|
12
12
|
|
|
13
13
|
private
|
|
14
14
|
|
|
15
|
-
def propositions
|
|
16
|
-
csv_path = File.expand_path(propositions_path, File.dirname(__FILE__))
|
|
17
|
-
CSV.read(csv_path, { :col_sep => "\t", :quote_char => '"' })
|
|
18
|
-
end
|
|
19
|
-
|
|
20
15
|
def edges
|
|
21
16
|
@edges ||= propositions.inject([]) do |memo, e|
|
|
22
17
|
origin_vertex, value, destination_vertex = e
|
|
23
|
-
memo << DirectedGraph::Edge.new(origin_vertex, destination_vertex, value)
|
|
18
|
+
memo << DirectedGraph::Edge.new(origin_vertex: origin_vertex, destination_vertex: destination_vertex, value: value)
|
|
24
19
|
memo
|
|
25
20
|
end
|
|
26
21
|
end
|
|
27
22
|
|
|
23
|
+
def propositions
|
|
24
|
+
csv_path = File.expand_path(propositions_path, File.dirname(__FILE__))
|
|
25
|
+
CSV.read(csv_path, { :col_sep => "\t", :quote_char => '"' })
|
|
26
|
+
end
|
|
27
|
+
|
|
28
28
|
end; end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Cmap; class PropositionsToSql
|
|
2
|
+
|
|
3
|
+
attr_reader :propositions_path, :table_name, :subquery_gsubs
|
|
4
|
+
|
|
5
|
+
def initialize(args)
|
|
6
|
+
@propositions_path = args.fetch(:propositions_path)
|
|
7
|
+
@table_name = args.fetch(:table_name)
|
|
8
|
+
@subquery_gsubs = args.fetch(:subquery_gsubs, [])
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def queries
|
|
12
|
+
graph_to_sql.queries
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def propositions_to_graph
|
|
16
|
+
PropositionsToGraph.new(propositions_path)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def raw_graph
|
|
20
|
+
propositions_to_graph.graph
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def sanitized_graph
|
|
24
|
+
GraphSanitizer.new(raw_graph).sanitized_graph
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def graph_to_sql
|
|
28
|
+
GraphToSql.new(table_name, sanitized_graph, subquery_gsubs)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end; end
|
|
32
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Cmap; class SubqueryExpander
|
|
2
|
+
|
|
3
|
+
attr_reader :table_name, :subquery_gsubs
|
|
4
|
+
|
|
5
|
+
def initialize(args)
|
|
6
|
+
@table_name = args.fetch(:table_name)
|
|
7
|
+
@subquery_gsubs = args.fetch(:subquery_gsubs, [])
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def update_query?(edge)
|
|
11
|
+
edge.value != query(edge)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def query(edge)
|
|
15
|
+
r = edge.value
|
|
16
|
+
replacements = [["+table_name+", table_name], ["+destination_vertex+", edge.destination_vertex], ["+origin_vertex+", edge.origin_vertex]]
|
|
17
|
+
(subquery_gsubs + replacements).each {|gsub| r = r.gsub(*gsub)}
|
|
18
|
+
r
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end; end
|
|
22
|
+
|
data/lib/cmap/version.rb
CHANGED
data/lib/cmap.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative "./cmap/version"
|
|
2
2
|
|
|
3
3
|
require 'csv'
|
|
4
4
|
require 'pg'
|
|
@@ -6,8 +6,12 @@ require 'pry'
|
|
|
6
6
|
|
|
7
7
|
require 'directed_graph'
|
|
8
8
|
|
|
9
|
+
require_relative "./cmap/graph_sanitizer.rb"
|
|
10
|
+
require_relative "./cmap/subquery_expander.rb"
|
|
11
|
+
require_relative "./cmap/edges_to_queries.rb"
|
|
9
12
|
require_relative "./cmap/propositions_to_graph.rb"
|
|
10
13
|
require_relative "./cmap/graph_to_sql.rb"
|
|
14
|
+
require_relative "./cmap/propositions_to_sql.rb"
|
|
11
15
|
require_relative "./cmap/sql_runner.rb"
|
|
12
16
|
|
|
13
17
|
module Cmap
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cmap
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- MrPowers
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-10-
|
|
11
|
+
date: 2015-10-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -80,34 +80,20 @@ dependencies:
|
|
|
80
80
|
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: simple-graph
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :runtime
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
83
|
- !ruby/object:Gem::Dependency
|
|
98
84
|
name: directed_graph
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
100
86
|
requirements:
|
|
101
|
-
- -
|
|
87
|
+
- - '='
|
|
102
88
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
89
|
+
version: 0.3.0
|
|
104
90
|
type: :runtime
|
|
105
91
|
prerelease: false
|
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
93
|
requirements:
|
|
108
|
-
- -
|
|
94
|
+
- - '='
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
96
|
+
version: 0.3.0
|
|
111
97
|
description: Converts cmap exports that follow strict conventions into postgreSQL
|
|
112
98
|
for data analysis
|
|
113
99
|
email:
|
|
@@ -126,10 +112,16 @@ files:
|
|
|
126
112
|
- bin/console
|
|
127
113
|
- bin/setup
|
|
128
114
|
- cmap.gemspec
|
|
115
|
+
- example/acr.txt
|
|
116
|
+
- example/cmap_to_sql.rb
|
|
129
117
|
- lib/cmap.rb
|
|
118
|
+
- lib/cmap/edges_to_queries.rb
|
|
119
|
+
- lib/cmap/graph_sanitizer.rb
|
|
130
120
|
- lib/cmap/graph_to_sql.rb
|
|
131
121
|
- lib/cmap/propositions_to_graph.rb
|
|
122
|
+
- lib/cmap/propositions_to_sql.rb
|
|
132
123
|
- lib/cmap/sql_runner.rb
|
|
124
|
+
- lib/cmap/subquery_expander.rb
|
|
133
125
|
- lib/cmap/version.rb
|
|
134
126
|
- pictures/.DS_Store
|
|
135
127
|
- pictures/cmap_example.png
|