conceptql 0.6.0 → 0.7.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.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +176 -0
  3. data/README.md +4 -2
  4. data/assets/diagram/diagram.css +331 -0
  5. data/assets/diagram/fonts/OFL.txt +93 -0
  6. data/assets/diagram/fonts/Roboto-400.ttf +0 -0
  7. data/assets/diagram/fonts/Roboto-700.ttf +0 -0
  8. data/assets/diagram/fonts/Roboto-Italic-400.ttf +0 -0
  9. data/assets/diagram/fonts/Roboto-Italic-Latin.woff2 +0 -0
  10. data/assets/diagram/fonts/Roboto-Normal-Latin.woff2 +0 -0
  11. data/assets/diagram/operators.svg +224 -0
  12. data/config/vocabularies.csv +85 -85
  13. data/docs/spec/README.md +2624 -0
  14. data/docs/spec/examples/after-operator.json +562 -0
  15. data/docs/spec/examples/any-overlap-operator.json +106 -0
  16. data/docs/spec/examples/before-operator.json +437 -0
  17. data/docs/spec/examples/co-reported-operator.json +168 -0
  18. data/docs/spec/examples/contains-operator.json +97 -0
  19. data/docs/spec/examples/date-range-operator.json +275 -0
  20. data/docs/spec/examples/death-operator.json +103 -0
  21. data/docs/spec/examples/during-operator.json +178 -0
  22. data/docs/spec/examples/episode-operator.json +80 -0
  23. data/docs/spec/examples/equal-operator.json +79 -0
  24. data/docs/spec/examples/ethnicity-operator.json +86 -0
  25. data/docs/spec/examples/except-operator.json +536 -0
  26. data/docs/spec/examples/filter-operator.json +218 -0
  27. data/docs/spec/examples/first-operator.json +148 -0
  28. data/docs/spec/examples/gender-operator.json +257 -0
  29. data/docs/spec/examples/hospice-operator.json +40 -0
  30. data/docs/spec/examples/hospitalization-operator.json +131 -0
  31. data/docs/spec/examples/information-periods-operator.json +131 -0
  32. data/docs/spec/examples/last-operator.json +148 -0
  33. data/docs/spec/examples/match-operator.json +186 -0
  34. data/docs/spec/examples/nth-occurrence-operator.json +300 -0
  35. data/docs/spec/examples/numeric-filter-operator.json +77 -0
  36. data/docs/spec/examples/one-in-two-out-operator.json +158 -0
  37. data/docs/spec/examples/person-filter-operator.json +919 -0
  38. data/docs/spec/examples/person-operator.json +274 -0
  39. data/docs/spec/examples/place-of-service-filter-operator.json +57 -0
  40. data/docs/spec/examples/provenance-operator.json +148 -0
  41. data/docs/spec/examples/provider-filter-operator.json +77 -0
  42. data/docs/spec/examples/race-operator.json +131 -0
  43. data/docs/spec/examples/recall-operator.json +289 -0
  44. data/docs/spec/examples/snf-operator.json +40 -0
  45. data/docs/spec/examples/time-window-operator.json +736 -0
  46. data/docs/spec/examples/trim-date-end-operator.json +201 -0
  47. data/docs/spec/examples/trim-date-start-operator.json +201 -0
  48. data/docs/spec/examples/union-operator.json +547 -0
  49. data/docs/spec/examples/vocabulary-operator.json +232 -0
  50. data/lib/conceptql/behaviors/metadatable.rb +68 -2
  51. data/lib/conceptql/behaviors/provenanceable.rb +4 -1
  52. data/lib/conceptql/behaviors/utilizable.rb +3 -0
  53. data/lib/conceptql/code_case_mismatch_error.rb +50 -0
  54. data/lib/conceptql/data_model/gdm.rb +23 -2
  55. data/lib/conceptql/diagram_renderer/app.rb +59 -0
  56. data/lib/conceptql/diagram_renderer/configuration.rb +87 -0
  57. data/lib/conceptql/diagram_renderer/diagram_data.rb +80 -0
  58. data/lib/conceptql/diagram_renderer/drawing.rb +255 -0
  59. data/lib/conceptql/diagram_renderer/geometry.rb +380 -0
  60. data/lib/conceptql/diagram_renderer/input_error.rb +11 -0
  61. data/lib/conceptql/diagram_renderer/js_format.rb +112 -0
  62. data/lib/conceptql/diagram_renderer/resvg.rb +120 -0
  63. data/lib/conceptql/diagram_renderer/sprite.rb +73 -0
  64. data/lib/conceptql/diagram_renderer/static.rb +70 -0
  65. data/lib/conceptql/diagram_renderer/svg.rb +73 -0
  66. data/lib/conceptql/diagram_renderer/tree_layout.rb +287 -0
  67. data/lib/conceptql/diagram_renderer.rb +82 -0
  68. data/lib/conceptql/lexicon/lexicon_strategy.rb +16 -0
  69. data/lib/conceptql/lexicon.rb +63 -11
  70. data/lib/conceptql/nodifier.rb +5 -3
  71. data/lib/conceptql/operators/after.rb +15 -1
  72. data/lib/conceptql/operators/any_overlap.rb +6 -1
  73. data/lib/conceptql/operators/before.rb +11 -1
  74. data/lib/conceptql/operators/binary_operator_operator.rb +12 -2
  75. data/lib/conceptql/operators/co_reported.rb +9 -4
  76. data/lib/conceptql/operators/contains.rb +6 -1
  77. data/lib/conceptql/operators/count.rb +2 -0
  78. data/lib/conceptql/operators/date_range.rb +15 -3
  79. data/lib/conceptql/operators/death.rb +5 -1
  80. data/lib/conceptql/operators/dedup.rb +2 -0
  81. data/lib/conceptql/operators/during.rb +6 -1
  82. data/lib/conceptql/operators/episode.rb +13 -2
  83. data/lib/conceptql/operators/equal.rb +11 -1
  84. data/lib/conceptql/operators/ethnicity.rb +19 -7
  85. data/lib/conceptql/operators/except.rb +10 -1
  86. data/lib/conceptql/operators/filter.rb +6 -1
  87. data/lib/conceptql/operators/first.rb +19 -9
  88. data/lib/conceptql/operators/from.rb +3 -0
  89. data/lib/conceptql/operators/gender.rb +10 -2
  90. data/lib/conceptql/operators/hospice.rb +7 -1
  91. data/lib/conceptql/operators/hospitalization.rb +6 -1
  92. data/lib/conceptql/operators/information_periods.rb +26 -7
  93. data/lib/conceptql/operators/invalid.rb +4 -0
  94. data/lib/conceptql/operators/last.rb +19 -9
  95. data/lib/conceptql/operators/match.rb +6 -1
  96. data/lib/conceptql/operators/multiple_vocabularies.rb +17 -3
  97. data/lib/conceptql/operators/numeric.rb +4 -0
  98. data/lib/conceptql/operators/numeric_filter.rb +13 -3
  99. data/lib/conceptql/operators/occurrence.rb +33 -12
  100. data/lib/conceptql/operators/one_in_two_out.rb +22 -5
  101. data/lib/conceptql/operators/operator.rb +8 -4
  102. data/lib/conceptql/operators/person.rb +5 -1
  103. data/lib/conceptql/operators/person_filter.rb +14 -1
  104. data/lib/conceptql/operators/place_of_service_filter.rb +14 -3
  105. data/lib/conceptql/operators/provenance.rb +17 -8
  106. data/lib/conceptql/operators/provider_filter.rb +18 -6
  107. data/lib/conceptql/operators/race.rb +14 -9
  108. data/lib/conceptql/operators/read.rb +11 -1
  109. data/lib/conceptql/operators/recall.rb +34 -2
  110. data/lib/conceptql/operators/snf.rb +7 -1
  111. data/lib/conceptql/operators/sum.rb +4 -0
  112. data/lib/conceptql/operators/temporal_operator.rb +4 -2
  113. data/lib/conceptql/operators/time_window.rb +27 -4
  114. data/lib/conceptql/operators/trim_date.rb +6 -14
  115. data/lib/conceptql/operators/trim_date_end.rb +9 -3
  116. data/lib/conceptql/operators/trim_date_start.rb +9 -3
  117. data/lib/conceptql/operators/union.rb +13 -1
  118. data/lib/conceptql/operators/vocabulary.rb +80 -6
  119. data/lib/conceptql/paths.rb +9 -1
  120. data/lib/conceptql/version.rb +1 -1
  121. data/lib/conceptql/vocabularies/drg_systems.rb +3 -2
  122. data/lib/conceptql/vocabularies/entry.rb +14 -11
  123. data/lib/conceptql/vocabularies/vocabulary_class_factory.rb +2 -1
  124. data/lib/conceptql.rb +3 -0
  125. metadata +75 -2
  126. data/doc/spec.md +0 -2091
@@ -0,0 +1,201 @@
1
+ {
2
+ "spec_id": "trim-date-end-operator",
3
+ "examples": [
4
+ {
5
+ "title": "Each patient's span from birth to age 50 or to 1970-01-01, whichever is earlier (patients born after 1970 are dropped)",
6
+ "statement": [
7
+ "trim_date_end",
8
+ {
9
+ "left": [
10
+ "time_window",
11
+ ["person"],
12
+ {
13
+ "end": "+50y"
14
+ }
15
+ ],
16
+ "right": [
17
+ "date_range",
18
+ {
19
+ "start": "1970-01-01",
20
+ "end": "1970-01-01"
21
+ }
22
+ ]
23
+ }
24
+ ],
25
+ "help": true,
26
+ "columns": [
27
+ "person_id",
28
+ "criterion_id",
29
+ "criterion_table",
30
+ "criterion_domain",
31
+ "start_date",
32
+ "end_date",
33
+ "source_value"
34
+ ],
35
+ "rows": [
36
+ [
37
+ 1,
38
+ 1,
39
+ "patients",
40
+ "person",
41
+ "1923-05-01",
42
+ "1970-01-01",
43
+ "00013D2EFD8E45D1"
44
+ ],
45
+ [
46
+ 2,
47
+ 2,
48
+ "patients",
49
+ "person",
50
+ "1943-01-01",
51
+ "1970-01-01",
52
+ "00016F745862898F"
53
+ ],
54
+ [
55
+ 3,
56
+ 3,
57
+ "patients",
58
+ "person",
59
+ "1936-09-01",
60
+ "1970-01-01",
61
+ "0001FDD721E223DC"
62
+ ],
63
+ [
64
+ 4,
65
+ 4,
66
+ "patients",
67
+ "person",
68
+ "1941-06-01",
69
+ "1970-01-01",
70
+ "00021CA6FF03E670"
71
+ ],
72
+ [
73
+ 5,
74
+ 5,
75
+ "patients",
76
+ "person",
77
+ "1936-08-01",
78
+ "1970-01-01",
79
+ "00024B3D2352D2D0"
80
+ ],
81
+ [
82
+ 6,
83
+ 6,
84
+ "patients",
85
+ "person",
86
+ "1943-10-01",
87
+ "1970-01-01",
88
+ "0002DAE1C81CC70D"
89
+ ],
90
+ [
91
+ 7,
92
+ 7,
93
+ "patients",
94
+ "person",
95
+ "1922-07-01",
96
+ "1970-01-01",
97
+ "0002F28CE057345B"
98
+ ],
99
+ [
100
+ 8,
101
+ 8,
102
+ "patients",
103
+ "person",
104
+ "1935-09-01",
105
+ "1970-01-01",
106
+ "000308435E3E5B76"
107
+ ],
108
+ [
109
+ 10,
110
+ 10,
111
+ "patients",
112
+ "person",
113
+ "1938-10-01",
114
+ "1970-01-01",
115
+ "00036A21B65B0206"
116
+ ],
117
+ [
118
+ 11,
119
+ 11,
120
+ "patients",
121
+ "person",
122
+ "1934-02-01",
123
+ "1970-01-01",
124
+ "000489E7EAAD463F"
125
+ ]
126
+ ],
127
+ "tree": {
128
+ "format": "conceptql-diagram/v1",
129
+ "statements": [
130
+ {
131
+ "name": "trim_date_end",
132
+ "base": "filter",
133
+ "humanName": "Trim Date End",
134
+ "outputTypes": ["person"],
135
+ "parameters": {},
136
+ "values": [],
137
+ "children": [
138
+ {
139
+ "name": "time_window",
140
+ "base": "temporal",
141
+ "humanName": "Time Window",
142
+ "outputTypes": ["person"],
143
+ "parameters": {
144
+ "end": "+50y"
145
+ },
146
+ "values": [],
147
+ "children": [
148
+ {
149
+ "name": "person",
150
+ "base": "cast",
151
+ "humanName": "Person",
152
+ "outputTypes": ["person"],
153
+ "parameters": {},
154
+ "values": [],
155
+ "children": [],
156
+ "counts": {
157
+ "person": {
158
+ "rows": 249,
159
+ "n": 249
160
+ }
161
+ }
162
+ }
163
+ ],
164
+ "counts": {
165
+ "person": {
166
+ "rows": 249,
167
+ "n": 249
168
+ }
169
+ }
170
+ },
171
+ {
172
+ "name": "date_range",
173
+ "base": "selection",
174
+ "humanName": "Date Range",
175
+ "outputTypes": ["person"],
176
+ "parameters": {
177
+ "start": "1970-01-01",
178
+ "end": "1970-01-01"
179
+ },
180
+ "values": [],
181
+ "children": [],
182
+ "counts": {
183
+ "person": {
184
+ "rows": 249,
185
+ "n": 249
186
+ }
187
+ }
188
+ }
189
+ ],
190
+ "counts": {
191
+ "person": {
192
+ "rows": 247,
193
+ "n": 247
194
+ }
195
+ }
196
+ }
197
+ ]
198
+ }
199
+ }
200
+ ]
201
+ }
@@ -0,0 +1,201 @@
1
+ {
2
+ "spec_id": "trim-date-start-operator",
3
+ "examples": [
4
+ {
5
+ "title": "Each patient's span from birth to age 50, trimmed to start no earlier than 1980-01-01 (patients who were 50 before 1980 are dropped)",
6
+ "statement": [
7
+ "trim_date_start",
8
+ {
9
+ "left": [
10
+ "time_window",
11
+ ["person"],
12
+ {
13
+ "end": "+50y"
14
+ }
15
+ ],
16
+ "right": [
17
+ "date_range",
18
+ {
19
+ "start": "1980-01-01",
20
+ "end": "1980-01-01"
21
+ }
22
+ ]
23
+ }
24
+ ],
25
+ "help": true,
26
+ "columns": [
27
+ "person_id",
28
+ "criterion_id",
29
+ "criterion_table",
30
+ "criterion_domain",
31
+ "start_date",
32
+ "end_date",
33
+ "source_value"
34
+ ],
35
+ "rows": [
36
+ [
37
+ 2,
38
+ 2,
39
+ "patients",
40
+ "person",
41
+ "1980-01-01",
42
+ "1993-01-01",
43
+ "00016F745862898F"
44
+ ],
45
+ [
46
+ 3,
47
+ 3,
48
+ "patients",
49
+ "person",
50
+ "1980-01-01",
51
+ "1986-09-01",
52
+ "0001FDD721E223DC"
53
+ ],
54
+ [
55
+ 4,
56
+ 4,
57
+ "patients",
58
+ "person",
59
+ "1980-01-01",
60
+ "1991-06-01",
61
+ "00021CA6FF03E670"
62
+ ],
63
+ [
64
+ 5,
65
+ 5,
66
+ "patients",
67
+ "person",
68
+ "1980-01-01",
69
+ "1986-08-01",
70
+ "00024B3D2352D2D0"
71
+ ],
72
+ [
73
+ 6,
74
+ 6,
75
+ "patients",
76
+ "person",
77
+ "1980-01-01",
78
+ "1993-10-01",
79
+ "0002DAE1C81CC70D"
80
+ ],
81
+ [
82
+ 8,
83
+ 8,
84
+ "patients",
85
+ "person",
86
+ "1980-01-01",
87
+ "1985-09-01",
88
+ "000308435E3E5B76"
89
+ ],
90
+ [
91
+ 9,
92
+ 9,
93
+ "patients",
94
+ "person",
95
+ "1980-01-01",
96
+ "2026-09-01",
97
+ "000345A39D4157C9"
98
+ ],
99
+ [
100
+ 10,
101
+ 10,
102
+ "patients",
103
+ "person",
104
+ "1980-01-01",
105
+ "1988-10-01",
106
+ "00036A21B65B0206"
107
+ ],
108
+ [
109
+ 11,
110
+ 11,
111
+ "patients",
112
+ "person",
113
+ "1980-01-01",
114
+ "1984-02-01",
115
+ "000489E7EAAD463F"
116
+ ],
117
+ [
118
+ 13,
119
+ 13,
120
+ "patients",
121
+ "person",
122
+ "1980-01-01",
123
+ "1986-07-01",
124
+ "0004F0ABD505251D"
125
+ ]
126
+ ],
127
+ "tree": {
128
+ "format": "conceptql-diagram/v1",
129
+ "statements": [
130
+ {
131
+ "name": "trim_date_start",
132
+ "base": "filter",
133
+ "humanName": "Trim Date Start",
134
+ "outputTypes": ["person"],
135
+ "parameters": {},
136
+ "values": [],
137
+ "children": [
138
+ {
139
+ "name": "time_window",
140
+ "base": "temporal",
141
+ "humanName": "Time Window",
142
+ "outputTypes": ["person"],
143
+ "parameters": {
144
+ "end": "+50y"
145
+ },
146
+ "values": [],
147
+ "children": [
148
+ {
149
+ "name": "person",
150
+ "base": "cast",
151
+ "humanName": "Person",
152
+ "outputTypes": ["person"],
153
+ "parameters": {},
154
+ "values": [],
155
+ "children": [],
156
+ "counts": {
157
+ "person": {
158
+ "rows": 249,
159
+ "n": 249
160
+ }
161
+ }
162
+ }
163
+ ],
164
+ "counts": {
165
+ "person": {
166
+ "rows": 249,
167
+ "n": 249
168
+ }
169
+ }
170
+ },
171
+ {
172
+ "name": "date_range",
173
+ "base": "selection",
174
+ "humanName": "Date Range",
175
+ "outputTypes": ["person"],
176
+ "parameters": {
177
+ "start": "1980-01-01",
178
+ "end": "1980-01-01"
179
+ },
180
+ "values": [],
181
+ "children": [],
182
+ "counts": {
183
+ "person": {
184
+ "rows": 249,
185
+ "n": 249
186
+ }
187
+ }
188
+ }
189
+ ],
190
+ "counts": {
191
+ "person": {
192
+ "rows": 172,
193
+ "n": 172
194
+ }
195
+ }
196
+ }
197
+ ]
198
+ }
199
+ }
200
+ ]
201
+ }