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,547 @@
1
+ {
2
+ "spec_id": "union-operator",
3
+ "examples": [
4
+ {
5
+ "title": "Two streams of the same type (condition_occurrence) combined into one stream",
6
+ "statement": ["union", ["icd9", "412"], ["icd9", "250.01"]],
7
+ "help": true,
8
+ "columns": [
9
+ "person_id",
10
+ "criterion_id",
11
+ "criterion_table",
12
+ "criterion_domain",
13
+ "start_date",
14
+ "end_date",
15
+ "source_value"
16
+ ],
17
+ "rows": [
18
+ [
19
+ 2,
20
+ 55131,
21
+ "observations",
22
+ "condition_occurrence",
23
+ "2010-02-19",
24
+ "2010-02-19",
25
+ "25001"
26
+ ],
27
+ [
28
+ 11,
29
+ 82614,
30
+ "observations",
31
+ "condition_occurrence",
32
+ "2008-10-29",
33
+ "2008-10-29",
34
+ "412"
35
+ ],
36
+ [
37
+ 13,
38
+ 68892,
39
+ "observations",
40
+ "condition_occurrence",
41
+ "2010-09-14",
42
+ "2010-09-14",
43
+ "25001"
44
+ ],
45
+ [
46
+ 14,
47
+ 28741,
48
+ "observations",
49
+ "condition_occurrence",
50
+ "2009-06-27",
51
+ "2009-06-27",
52
+ "25001"
53
+ ],
54
+ [
55
+ 17,
56
+ 27269,
57
+ "observations",
58
+ "condition_occurrence",
59
+ "2008-08-25",
60
+ "2008-08-25",
61
+ "412"
62
+ ],
63
+ [
64
+ 17,
65
+ 46165,
66
+ "observations",
67
+ "condition_occurrence",
68
+ "2009-04-30",
69
+ "2009-04-30",
70
+ "412"
71
+ ],
72
+ [
73
+ 17,
74
+ 59056,
75
+ "observations",
76
+ "condition_occurrence",
77
+ "2009-11-25",
78
+ "2009-11-25",
79
+ "25001"
80
+ ],
81
+ [
82
+ 17,
83
+ 30214,
84
+ "observations",
85
+ "condition_occurrence",
86
+ "2010-03-21",
87
+ "2010-03-21",
88
+ "25001"
89
+ ],
90
+ [
91
+ 23,
92
+ 77713,
93
+ "observations",
94
+ "condition_occurrence",
95
+ "2010-01-30",
96
+ "2010-01-30",
97
+ "25001"
98
+ ],
99
+ [
100
+ 25,
101
+ 84696,
102
+ "observations",
103
+ "condition_occurrence",
104
+ "2009-12-31",
105
+ "2009-12-31",
106
+ "25001"
107
+ ]
108
+ ],
109
+ "tree": {
110
+ "format": "conceptql-diagram/v1",
111
+ "statements": [
112
+ {
113
+ "name": "union",
114
+ "base": "set",
115
+ "humanName": "Union",
116
+ "outputTypes": ["condition_occurrence"],
117
+ "parameters": {},
118
+ "values": [],
119
+ "children": [
120
+ {
121
+ "name": "icd9",
122
+ "base": "selection",
123
+ "humanName": "ICD-9 CM",
124
+ "vocabularyId": "ICD9CM",
125
+ "outputTypes": ["condition_occurrence"],
126
+ "parameters": {},
127
+ "values": ["412"],
128
+ "children": [],
129
+ "counts": {
130
+ "condition_occurrence": {
131
+ "rows": 48,
132
+ "n": 37
133
+ }
134
+ }
135
+ },
136
+ {
137
+ "name": "icd9",
138
+ "base": "selection",
139
+ "humanName": "ICD-9 CM",
140
+ "vocabularyId": "ICD9CM",
141
+ "outputTypes": ["condition_occurrence"],
142
+ "parameters": {},
143
+ "values": ["250.01"],
144
+ "children": [],
145
+ "counts": {
146
+ "condition_occurrence": {
147
+ "rows": 82,
148
+ "n": 45
149
+ }
150
+ }
151
+ }
152
+ ],
153
+ "counts": {
154
+ "condition_occurrence": {
155
+ "rows": 130,
156
+ "n": 68
157
+ }
158
+ }
159
+ }
160
+ ]
161
+ }
162
+ },
163
+ {
164
+ "title": "Two condition_occurrence streams combined, then combined with a procedure_occurrence stream",
165
+ "statement": [
166
+ "union",
167
+ ["union", ["icd9", "412"], ["icd9", "250.01"]],
168
+ ["cpt", "99214"]
169
+ ],
170
+ "help": true,
171
+ "columns": [
172
+ "person_id",
173
+ "criterion_id",
174
+ "criterion_table",
175
+ "criterion_domain",
176
+ "start_date",
177
+ "end_date",
178
+ "source_value"
179
+ ],
180
+ "rows": [
181
+ [
182
+ 2,
183
+ 55131,
184
+ "observations",
185
+ "condition_occurrence",
186
+ "2010-02-19",
187
+ "2010-02-19",
188
+ "25001"
189
+ ],
190
+ [
191
+ 2,
192
+ 58127,
193
+ "observations",
194
+ "procedure_occurrence",
195
+ "2009-07-03",
196
+ "2009-07-03",
197
+ "99214"
198
+ ],
199
+ [
200
+ 2,
201
+ 83339,
202
+ "observations",
203
+ "procedure_occurrence",
204
+ "2009-12-02",
205
+ "2009-12-02",
206
+ "99214"
207
+ ],
208
+ [
209
+ 5,
210
+ 38313,
211
+ "observations",
212
+ "procedure_occurrence",
213
+ "2008-12-14",
214
+ "2008-12-14",
215
+ "99214"
216
+ ],
217
+ [
218
+ 5,
219
+ 76788,
220
+ "observations",
221
+ "procedure_occurrence",
222
+ "2009-07-04",
223
+ "2009-07-04",
224
+ "99214"
225
+ ],
226
+ [
227
+ 5,
228
+ 63847,
229
+ "observations",
230
+ "procedure_occurrence",
231
+ "2009-12-21",
232
+ "2009-12-21",
233
+ "99214"
234
+ ],
235
+ [
236
+ 6,
237
+ 48992,
238
+ "observations",
239
+ "procedure_occurrence",
240
+ "2009-09-12",
241
+ "2009-09-12",
242
+ "99214"
243
+ ],
244
+ [
245
+ 6,
246
+ 76651,
247
+ "observations",
248
+ "procedure_occurrence",
249
+ "2010-02-23",
250
+ "2010-02-23",
251
+ "99214"
252
+ ],
253
+ [
254
+ 7,
255
+ 63797,
256
+ "observations",
257
+ "procedure_occurrence",
258
+ "2008-08-13",
259
+ "2008-08-13",
260
+ "99214"
261
+ ],
262
+ [
263
+ 7,
264
+ 59555,
265
+ "observations",
266
+ "procedure_occurrence",
267
+ "2008-09-21",
268
+ "2008-09-21",
269
+ "99214"
270
+ ]
271
+ ],
272
+ "tree": {
273
+ "format": "conceptql-diagram/v1",
274
+ "statements": [
275
+ {
276
+ "name": "union",
277
+ "base": "set",
278
+ "humanName": "Union",
279
+ "outputTypes": ["condition_occurrence", "procedure_occurrence"],
280
+ "parameters": {},
281
+ "values": [],
282
+ "children": [
283
+ {
284
+ "name": "union",
285
+ "base": "set",
286
+ "humanName": "Union",
287
+ "outputTypes": ["condition_occurrence"],
288
+ "parameters": {},
289
+ "values": [],
290
+ "children": [
291
+ {
292
+ "name": "icd9",
293
+ "base": "selection",
294
+ "humanName": "ICD-9 CM",
295
+ "vocabularyId": "ICD9CM",
296
+ "outputTypes": ["condition_occurrence"],
297
+ "parameters": {},
298
+ "values": ["412"],
299
+ "children": [],
300
+ "counts": {
301
+ "condition_occurrence": {
302
+ "rows": 48,
303
+ "n": 37
304
+ }
305
+ }
306
+ },
307
+ {
308
+ "name": "icd9",
309
+ "base": "selection",
310
+ "humanName": "ICD-9 CM",
311
+ "vocabularyId": "ICD9CM",
312
+ "outputTypes": ["condition_occurrence"],
313
+ "parameters": {},
314
+ "values": ["250.01"],
315
+ "children": [],
316
+ "counts": {
317
+ "condition_occurrence": {
318
+ "rows": 82,
319
+ "n": 45
320
+ }
321
+ }
322
+ }
323
+ ],
324
+ "counts": {
325
+ "condition_occurrence": {
326
+ "rows": 130,
327
+ "n": 68
328
+ }
329
+ }
330
+ },
331
+ {
332
+ "name": "cpt",
333
+ "base": "selection",
334
+ "humanName": "CPT",
335
+ "vocabularyId": "CPT4",
336
+ "outputTypes": ["procedure_occurrence"],
337
+ "parameters": {},
338
+ "values": ["99214"],
339
+ "children": [],
340
+ "counts": {
341
+ "procedure_occurrence": {
342
+ "rows": 1073,
343
+ "n": 175
344
+ }
345
+ }
346
+ }
347
+ ],
348
+ "counts": {
349
+ "condition_occurrence": {
350
+ "rows": 130,
351
+ "n": 68
352
+ },
353
+ "procedure_occurrence": {
354
+ "rows": 1073,
355
+ "n": 175
356
+ }
357
+ }
358
+ }
359
+ ]
360
+ }
361
+ },
362
+ {
363
+ "title": "Two condition_occurrence streams and a procedure_occurrence stream combined by a single union",
364
+ "statement": [
365
+ "union",
366
+ ["icd9", "412"],
367
+ ["icd9", "250.01"],
368
+ ["cpt", "99214"]
369
+ ],
370
+ "help": true,
371
+ "columns": [
372
+ "person_id",
373
+ "criterion_id",
374
+ "criterion_table",
375
+ "criterion_domain",
376
+ "start_date",
377
+ "end_date",
378
+ "source_value"
379
+ ],
380
+ "rows": [
381
+ [
382
+ 2,
383
+ 55131,
384
+ "observations",
385
+ "condition_occurrence",
386
+ "2010-02-19",
387
+ "2010-02-19",
388
+ "25001"
389
+ ],
390
+ [
391
+ 2,
392
+ 58127,
393
+ "observations",
394
+ "procedure_occurrence",
395
+ "2009-07-03",
396
+ "2009-07-03",
397
+ "99214"
398
+ ],
399
+ [
400
+ 2,
401
+ 83339,
402
+ "observations",
403
+ "procedure_occurrence",
404
+ "2009-12-02",
405
+ "2009-12-02",
406
+ "99214"
407
+ ],
408
+ [
409
+ 5,
410
+ 38313,
411
+ "observations",
412
+ "procedure_occurrence",
413
+ "2008-12-14",
414
+ "2008-12-14",
415
+ "99214"
416
+ ],
417
+ [
418
+ 5,
419
+ 76788,
420
+ "observations",
421
+ "procedure_occurrence",
422
+ "2009-07-04",
423
+ "2009-07-04",
424
+ "99214"
425
+ ],
426
+ [
427
+ 5,
428
+ 63847,
429
+ "observations",
430
+ "procedure_occurrence",
431
+ "2009-12-21",
432
+ "2009-12-21",
433
+ "99214"
434
+ ],
435
+ [
436
+ 6,
437
+ 48992,
438
+ "observations",
439
+ "procedure_occurrence",
440
+ "2009-09-12",
441
+ "2009-09-12",
442
+ "99214"
443
+ ],
444
+ [
445
+ 6,
446
+ 76651,
447
+ "observations",
448
+ "procedure_occurrence",
449
+ "2010-02-23",
450
+ "2010-02-23",
451
+ "99214"
452
+ ],
453
+ [
454
+ 7,
455
+ 63797,
456
+ "observations",
457
+ "procedure_occurrence",
458
+ "2008-08-13",
459
+ "2008-08-13",
460
+ "99214"
461
+ ],
462
+ [
463
+ 7,
464
+ 59555,
465
+ "observations",
466
+ "procedure_occurrence",
467
+ "2008-09-21",
468
+ "2008-09-21",
469
+ "99214"
470
+ ]
471
+ ],
472
+ "tree": {
473
+ "format": "conceptql-diagram/v1",
474
+ "statements": [
475
+ {
476
+ "name": "union",
477
+ "base": "set",
478
+ "humanName": "Union",
479
+ "outputTypes": ["condition_occurrence", "procedure_occurrence"],
480
+ "parameters": {},
481
+ "values": [],
482
+ "children": [
483
+ {
484
+ "name": "icd9",
485
+ "base": "selection",
486
+ "humanName": "ICD-9 CM",
487
+ "vocabularyId": "ICD9CM",
488
+ "outputTypes": ["condition_occurrence"],
489
+ "parameters": {},
490
+ "values": ["412"],
491
+ "children": [],
492
+ "counts": {
493
+ "condition_occurrence": {
494
+ "rows": 48,
495
+ "n": 37
496
+ }
497
+ }
498
+ },
499
+ {
500
+ "name": "icd9",
501
+ "base": "selection",
502
+ "humanName": "ICD-9 CM",
503
+ "vocabularyId": "ICD9CM",
504
+ "outputTypes": ["condition_occurrence"],
505
+ "parameters": {},
506
+ "values": ["250.01"],
507
+ "children": [],
508
+ "counts": {
509
+ "condition_occurrence": {
510
+ "rows": 82,
511
+ "n": 45
512
+ }
513
+ }
514
+ },
515
+ {
516
+ "name": "cpt",
517
+ "base": "selection",
518
+ "humanName": "CPT",
519
+ "vocabularyId": "CPT4",
520
+ "outputTypes": ["procedure_occurrence"],
521
+ "parameters": {},
522
+ "values": ["99214"],
523
+ "children": [],
524
+ "counts": {
525
+ "procedure_occurrence": {
526
+ "rows": 1073,
527
+ "n": 175
528
+ }
529
+ }
530
+ }
531
+ ],
532
+ "counts": {
533
+ "condition_occurrence": {
534
+ "rows": 130,
535
+ "n": 68
536
+ },
537
+ "procedure_occurrence": {
538
+ "rows": 1073,
539
+ "n": 175
540
+ }
541
+ }
542
+ }
543
+ ]
544
+ }
545
+ }
546
+ ]
547
+ }