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,919 @@
1
+ {
2
+ "spec_id": "person-filter-operator",
3
+ "examples": [
4
+ {
5
+ "title": "All MI Conditions for people who are male",
6
+ "statement": [
7
+ "person_filter",
8
+ {
9
+ "left": ["icd9", "412"],
10
+ "right": ["gender", "Male"]
11
+ }
12
+ ],
13
+ "help": true,
14
+ "columns": [
15
+ "person_id",
16
+ "criterion_id",
17
+ "criterion_table",
18
+ "criterion_domain",
19
+ "start_date",
20
+ "end_date",
21
+ "source_value"
22
+ ],
23
+ "rows": [
24
+ [
25
+ 54,
26
+ 74606,
27
+ "observations",
28
+ "condition_occurrence",
29
+ "2008-06-05",
30
+ "2008-06-05",
31
+ "412"
32
+ ],
33
+ [
34
+ 60,
35
+ 986,
36
+ "observations",
37
+ "condition_occurrence",
38
+ "2009-07-19",
39
+ "2009-07-22",
40
+ "412"
41
+ ],
42
+ [
43
+ 93,
44
+ 82295,
45
+ "observations",
46
+ "condition_occurrence",
47
+ "2009-11-08",
48
+ "2009-11-08",
49
+ "412"
50
+ ],
51
+ [
52
+ 96,
53
+ 20748,
54
+ "observations",
55
+ "condition_occurrence",
56
+ "2008-09-21",
57
+ "2008-09-24",
58
+ "412"
59
+ ],
60
+ [
61
+ 109,
62
+ 89334,
63
+ "observations",
64
+ "condition_occurrence",
65
+ "2010-07-06",
66
+ "2010-07-06",
67
+ "412"
68
+ ],
69
+ [
70
+ 110,
71
+ 62592,
72
+ "observations",
73
+ "condition_occurrence",
74
+ "2010-06-27",
75
+ "2010-06-27",
76
+ "412"
77
+ ],
78
+ [
79
+ 131,
80
+ 172,
81
+ "observations",
82
+ "condition_occurrence",
83
+ "2008-03-22",
84
+ "2008-03-23",
85
+ "412"
86
+ ],
87
+ [
88
+ 149,
89
+ 28518,
90
+ "observations",
91
+ "condition_occurrence",
92
+ "2008-04-07",
93
+ "2008-04-07",
94
+ "412"
95
+ ],
96
+ [
97
+ 152,
98
+ 82988,
99
+ "observations",
100
+ "condition_occurrence",
101
+ "2008-08-16",
102
+ "2008-08-16",
103
+ "412"
104
+ ],
105
+ [
106
+ 152,
107
+ 84298,
108
+ "observations",
109
+ "condition_occurrence",
110
+ "2010-11-22",
111
+ "2010-11-22",
112
+ "412"
113
+ ]
114
+ ],
115
+ "tree": {
116
+ "format": "conceptql-diagram/v1",
117
+ "statements": [
118
+ {
119
+ "name": "person_filter",
120
+ "base": "filter",
121
+ "humanName": "Person Filter",
122
+ "outputTypes": ["condition_occurrence"],
123
+ "parameters": {},
124
+ "values": [],
125
+ "children": [
126
+ {
127
+ "name": "icd9",
128
+ "base": "selection",
129
+ "humanName": "ICD-9 CM",
130
+ "vocabularyId": "ICD9CM",
131
+ "outputTypes": ["condition_occurrence"],
132
+ "parameters": {},
133
+ "values": ["412"],
134
+ "children": [],
135
+ "counts": {
136
+ "condition_occurrence": {
137
+ "rows": 48,
138
+ "n": 37
139
+ }
140
+ }
141
+ },
142
+ {
143
+ "name": "gender",
144
+ "base": "selection",
145
+ "humanName": "Gender",
146
+ "outputTypes": ["person"],
147
+ "parameters": {},
148
+ "values": ["Male"],
149
+ "children": [],
150
+ "counts": {
151
+ "person": {
152
+ "rows": 124,
153
+ "n": 124
154
+ }
155
+ }
156
+ }
157
+ ],
158
+ "counts": {
159
+ "condition_occurrence": {
160
+ "rows": 28,
161
+ "n": 20
162
+ }
163
+ }
164
+ }
165
+ ]
166
+ }
167
+ },
168
+ {
169
+ "title": "All MI Conditions for people who had an office visit at some point in the data",
170
+ "statement": [
171
+ "person_filter",
172
+ {
173
+ "left": ["icd9", "412"],
174
+ "right": ["cpt", "99214"]
175
+ }
176
+ ],
177
+ "help": true,
178
+ "columns": [
179
+ "person_id",
180
+ "criterion_id",
181
+ "criterion_table",
182
+ "criterion_domain",
183
+ "start_date",
184
+ "end_date",
185
+ "source_value"
186
+ ],
187
+ "rows": [
188
+ [
189
+ 11,
190
+ 82614,
191
+ "observations",
192
+ "condition_occurrence",
193
+ "2008-10-29",
194
+ "2008-10-29",
195
+ "412"
196
+ ],
197
+ [
198
+ 17,
199
+ 27269,
200
+ "observations",
201
+ "condition_occurrence",
202
+ "2008-08-25",
203
+ "2008-08-25",
204
+ "412"
205
+ ],
206
+ [
207
+ 17,
208
+ 46165,
209
+ "observations",
210
+ "condition_occurrence",
211
+ "2009-04-30",
212
+ "2009-04-30",
213
+ "412"
214
+ ],
215
+ [
216
+ 38,
217
+ 40556,
218
+ "observations",
219
+ "condition_occurrence",
220
+ "2010-02-12",
221
+ "2010-02-12",
222
+ "412"
223
+ ],
224
+ [
225
+ 54,
226
+ 74606,
227
+ "observations",
228
+ "condition_occurrence",
229
+ "2008-06-05",
230
+ "2008-06-05",
231
+ "412"
232
+ ],
233
+ [
234
+ 60,
235
+ 986,
236
+ "observations",
237
+ "condition_occurrence",
238
+ "2009-07-19",
239
+ "2009-07-22",
240
+ "412"
241
+ ],
242
+ [
243
+ 66,
244
+ 16171,
245
+ "observations",
246
+ "condition_occurrence",
247
+ "2009-07-25",
248
+ "2009-07-25",
249
+ "412"
250
+ ],
251
+ [
252
+ 73,
253
+ 52843,
254
+ "observations",
255
+ "condition_occurrence",
256
+ "2008-11-16",
257
+ "2008-11-16",
258
+ "412"
259
+ ],
260
+ [
261
+ 77,
262
+ 58165,
263
+ "observations",
264
+ "condition_occurrence",
265
+ "2010-10-06",
266
+ "2010-10-06",
267
+ "412"
268
+ ],
269
+ [
270
+ 81,
271
+ 1405,
272
+ "observations",
273
+ "condition_occurrence",
274
+ "2009-01-28",
275
+ "2009-01-30",
276
+ "412"
277
+ ]
278
+ ],
279
+ "tree": {
280
+ "format": "conceptql-diagram/v1",
281
+ "statements": [
282
+ {
283
+ "name": "person_filter",
284
+ "base": "filter",
285
+ "humanName": "Person Filter",
286
+ "outputTypes": ["condition_occurrence"],
287
+ "parameters": {},
288
+ "values": [],
289
+ "children": [
290
+ {
291
+ "name": "icd9",
292
+ "base": "selection",
293
+ "humanName": "ICD-9 CM",
294
+ "vocabularyId": "ICD9CM",
295
+ "outputTypes": ["condition_occurrence"],
296
+ "parameters": {},
297
+ "values": ["412"],
298
+ "children": [],
299
+ "counts": {
300
+ "condition_occurrence": {
301
+ "rows": 48,
302
+ "n": 37
303
+ }
304
+ }
305
+ },
306
+ {
307
+ "name": "cpt",
308
+ "base": "selection",
309
+ "humanName": "CPT",
310
+ "vocabularyId": "CPT4",
311
+ "outputTypes": ["procedure_occurrence"],
312
+ "parameters": {},
313
+ "values": ["99214"],
314
+ "children": [],
315
+ "counts": {
316
+ "procedure_occurrence": {
317
+ "rows": 1073,
318
+ "n": 175
319
+ }
320
+ }
321
+ }
322
+ ],
323
+ "counts": {
324
+ "condition_occurrence": {
325
+ "rows": 46,
326
+ "n": 36
327
+ }
328
+ }
329
+ }
330
+ ]
331
+ }
332
+ },
333
+ {
334
+ "title": "The same result as the example above, with the office visits converted to patients first",
335
+ "statement": [
336
+ "person_filter",
337
+ {
338
+ "left": ["icd9", "412"],
339
+ "right": ["person", ["cpt", "99214"]]
340
+ }
341
+ ],
342
+ "help": true,
343
+ "columns": [
344
+ "person_id",
345
+ "criterion_id",
346
+ "criterion_table",
347
+ "criterion_domain",
348
+ "start_date",
349
+ "end_date",
350
+ "source_value"
351
+ ],
352
+ "rows": [
353
+ [
354
+ 11,
355
+ 82614,
356
+ "observations",
357
+ "condition_occurrence",
358
+ "2008-10-29",
359
+ "2008-10-29",
360
+ "412"
361
+ ],
362
+ [
363
+ 17,
364
+ 27269,
365
+ "observations",
366
+ "condition_occurrence",
367
+ "2008-08-25",
368
+ "2008-08-25",
369
+ "412"
370
+ ],
371
+ [
372
+ 17,
373
+ 46165,
374
+ "observations",
375
+ "condition_occurrence",
376
+ "2009-04-30",
377
+ "2009-04-30",
378
+ "412"
379
+ ],
380
+ [
381
+ 38,
382
+ 40556,
383
+ "observations",
384
+ "condition_occurrence",
385
+ "2010-02-12",
386
+ "2010-02-12",
387
+ "412"
388
+ ],
389
+ [
390
+ 54,
391
+ 74606,
392
+ "observations",
393
+ "condition_occurrence",
394
+ "2008-06-05",
395
+ "2008-06-05",
396
+ "412"
397
+ ],
398
+ [
399
+ 60,
400
+ 986,
401
+ "observations",
402
+ "condition_occurrence",
403
+ "2009-07-19",
404
+ "2009-07-22",
405
+ "412"
406
+ ],
407
+ [
408
+ 66,
409
+ 16171,
410
+ "observations",
411
+ "condition_occurrence",
412
+ "2009-07-25",
413
+ "2009-07-25",
414
+ "412"
415
+ ],
416
+ [
417
+ 73,
418
+ 52843,
419
+ "observations",
420
+ "condition_occurrence",
421
+ "2008-11-16",
422
+ "2008-11-16",
423
+ "412"
424
+ ],
425
+ [
426
+ 77,
427
+ 58165,
428
+ "observations",
429
+ "condition_occurrence",
430
+ "2010-10-06",
431
+ "2010-10-06",
432
+ "412"
433
+ ],
434
+ [
435
+ 81,
436
+ 1405,
437
+ "observations",
438
+ "condition_occurrence",
439
+ "2009-01-28",
440
+ "2009-01-30",
441
+ "412"
442
+ ]
443
+ ],
444
+ "tree": {
445
+ "format": "conceptql-diagram/v1",
446
+ "statements": [
447
+ {
448
+ "name": "person_filter",
449
+ "base": "filter",
450
+ "humanName": "Person Filter",
451
+ "outputTypes": ["condition_occurrence"],
452
+ "parameters": {},
453
+ "values": [],
454
+ "children": [
455
+ {
456
+ "name": "icd9",
457
+ "base": "selection",
458
+ "humanName": "ICD-9 CM",
459
+ "vocabularyId": "ICD9CM",
460
+ "outputTypes": ["condition_occurrence"],
461
+ "parameters": {},
462
+ "values": ["412"],
463
+ "children": [],
464
+ "counts": {
465
+ "condition_occurrence": {
466
+ "rows": 48,
467
+ "n": 37
468
+ }
469
+ }
470
+ },
471
+ {
472
+ "name": "person",
473
+ "base": "cast",
474
+ "humanName": "Person",
475
+ "outputTypes": ["person"],
476
+ "parameters": {},
477
+ "values": [],
478
+ "children": [
479
+ {
480
+ "name": "cpt",
481
+ "base": "selection",
482
+ "humanName": "CPT",
483
+ "vocabularyId": "CPT4",
484
+ "outputTypes": ["procedure_occurrence"],
485
+ "parameters": {},
486
+ "values": ["99214"],
487
+ "children": [],
488
+ "counts": {
489
+ "procedure_occurrence": {
490
+ "rows": 1073,
491
+ "n": 175
492
+ }
493
+ }
494
+ }
495
+ ],
496
+ "counts": {
497
+ "person": {
498
+ "rows": 175,
499
+ "n": 175
500
+ }
501
+ }
502
+ }
503
+ ],
504
+ "counts": {
505
+ "condition_occurrence": {
506
+ "rows": 46,
507
+ "n": 36
508
+ }
509
+ }
510
+ }
511
+ ]
512
+ }
513
+ },
514
+ {
515
+ "title": "All MI Conditions for people who are Male OR had an office visit at some point in the data",
516
+ "statement": [
517
+ "person_filter",
518
+ {
519
+ "left": ["icd9", "412"],
520
+ "right": ["union", ["cpt", "99214"], ["gender", "Male"]]
521
+ }
522
+ ],
523
+ "help": true,
524
+ "columns": [
525
+ "person_id",
526
+ "criterion_id",
527
+ "criterion_table",
528
+ "criterion_domain",
529
+ "start_date",
530
+ "end_date",
531
+ "source_value"
532
+ ],
533
+ "rows": [
534
+ [
535
+ 11,
536
+ 82614,
537
+ "observations",
538
+ "condition_occurrence",
539
+ "2008-10-29",
540
+ "2008-10-29",
541
+ "412"
542
+ ],
543
+ [
544
+ 17,
545
+ 27269,
546
+ "observations",
547
+ "condition_occurrence",
548
+ "2008-08-25",
549
+ "2008-08-25",
550
+ "412"
551
+ ],
552
+ [
553
+ 17,
554
+ 46165,
555
+ "observations",
556
+ "condition_occurrence",
557
+ "2009-04-30",
558
+ "2009-04-30",
559
+ "412"
560
+ ],
561
+ [
562
+ 38,
563
+ 40556,
564
+ "observations",
565
+ "condition_occurrence",
566
+ "2010-02-12",
567
+ "2010-02-12",
568
+ "412"
569
+ ],
570
+ [
571
+ 54,
572
+ 74606,
573
+ "observations",
574
+ "condition_occurrence",
575
+ "2008-06-05",
576
+ "2008-06-05",
577
+ "412"
578
+ ],
579
+ [
580
+ 60,
581
+ 986,
582
+ "observations",
583
+ "condition_occurrence",
584
+ "2009-07-19",
585
+ "2009-07-22",
586
+ "412"
587
+ ],
588
+ [
589
+ 66,
590
+ 16171,
591
+ "observations",
592
+ "condition_occurrence",
593
+ "2009-07-25",
594
+ "2009-07-25",
595
+ "412"
596
+ ],
597
+ [
598
+ 73,
599
+ 52843,
600
+ "observations",
601
+ "condition_occurrence",
602
+ "2008-11-16",
603
+ "2008-11-16",
604
+ "412"
605
+ ],
606
+ [
607
+ 77,
608
+ 58165,
609
+ "observations",
610
+ "condition_occurrence",
611
+ "2010-10-06",
612
+ "2010-10-06",
613
+ "412"
614
+ ],
615
+ [
616
+ 81,
617
+ 1405,
618
+ "observations",
619
+ "condition_occurrence",
620
+ "2009-01-28",
621
+ "2009-01-30",
622
+ "412"
623
+ ]
624
+ ],
625
+ "tree": {
626
+ "format": "conceptql-diagram/v1",
627
+ "statements": [
628
+ {
629
+ "name": "person_filter",
630
+ "base": "filter",
631
+ "humanName": "Person Filter",
632
+ "outputTypes": ["condition_occurrence"],
633
+ "parameters": {},
634
+ "values": [],
635
+ "children": [
636
+ {
637
+ "name": "icd9",
638
+ "base": "selection",
639
+ "humanName": "ICD-9 CM",
640
+ "vocabularyId": "ICD9CM",
641
+ "outputTypes": ["condition_occurrence"],
642
+ "parameters": {},
643
+ "values": ["412"],
644
+ "children": [],
645
+ "counts": {
646
+ "condition_occurrence": {
647
+ "rows": 48,
648
+ "n": 37
649
+ }
650
+ }
651
+ },
652
+ {
653
+ "name": "union",
654
+ "base": "set",
655
+ "humanName": "Union",
656
+ "outputTypes": ["person", "procedure_occurrence"],
657
+ "parameters": {},
658
+ "values": [],
659
+ "children": [
660
+ {
661
+ "name": "cpt",
662
+ "base": "selection",
663
+ "humanName": "CPT",
664
+ "vocabularyId": "CPT4",
665
+ "outputTypes": ["procedure_occurrence"],
666
+ "parameters": {},
667
+ "values": ["99214"],
668
+ "children": [],
669
+ "counts": {
670
+ "procedure_occurrence": {
671
+ "rows": 1073,
672
+ "n": 175
673
+ }
674
+ }
675
+ },
676
+ {
677
+ "name": "gender",
678
+ "base": "selection",
679
+ "humanName": "Gender",
680
+ "outputTypes": ["person"],
681
+ "parameters": {},
682
+ "values": ["Male"],
683
+ "children": [],
684
+ "counts": {
685
+ "person": {
686
+ "rows": 124,
687
+ "n": 124
688
+ }
689
+ }
690
+ }
691
+ ],
692
+ "counts": {
693
+ "person": {
694
+ "rows": 124,
695
+ "n": 124
696
+ },
697
+ "procedure_occurrence": {
698
+ "rows": 1073,
699
+ "n": 175
700
+ }
701
+ }
702
+ }
703
+ ],
704
+ "counts": {
705
+ "condition_occurrence": {
706
+ "rows": 48,
707
+ "n": 37
708
+ }
709
+ }
710
+ }
711
+ ]
712
+ }
713
+ },
714
+ {
715
+ "title": "Yields two types: all MI Conditions for people who are Male, and all office visit Procedures for people who are Male",
716
+ "statement": [
717
+ "person_filter",
718
+ {
719
+ "left": ["union", ["icd9", "412"], ["cpt", "99214"]],
720
+ "right": ["gender", "Male"]
721
+ }
722
+ ],
723
+ "help": true,
724
+ "columns": [
725
+ "person_id",
726
+ "criterion_id",
727
+ "criterion_table",
728
+ "criterion_domain",
729
+ "start_date",
730
+ "end_date",
731
+ "source_value"
732
+ ],
733
+ "rows": [
734
+ [
735
+ 2,
736
+ 58127,
737
+ "observations",
738
+ "procedure_occurrence",
739
+ "2009-07-03",
740
+ "2009-07-03",
741
+ "99214"
742
+ ],
743
+ [
744
+ 2,
745
+ 83339,
746
+ "observations",
747
+ "procedure_occurrence",
748
+ "2009-12-02",
749
+ "2009-12-02",
750
+ "99214"
751
+ ],
752
+ [
753
+ 5,
754
+ 38313,
755
+ "observations",
756
+ "procedure_occurrence",
757
+ "2008-12-14",
758
+ "2008-12-14",
759
+ "99214"
760
+ ],
761
+ [
762
+ 5,
763
+ 76788,
764
+ "observations",
765
+ "procedure_occurrence",
766
+ "2009-07-04",
767
+ "2009-07-04",
768
+ "99214"
769
+ ],
770
+ [
771
+ 5,
772
+ 63847,
773
+ "observations",
774
+ "procedure_occurrence",
775
+ "2009-12-21",
776
+ "2009-12-21",
777
+ "99214"
778
+ ],
779
+ [
780
+ 6,
781
+ 48992,
782
+ "observations",
783
+ "procedure_occurrence",
784
+ "2009-09-12",
785
+ "2009-09-12",
786
+ "99214"
787
+ ],
788
+ [
789
+ 6,
790
+ 76651,
791
+ "observations",
792
+ "procedure_occurrence",
793
+ "2010-02-23",
794
+ "2010-02-23",
795
+ "99214"
796
+ ],
797
+ [
798
+ 7,
799
+ 63797,
800
+ "observations",
801
+ "procedure_occurrence",
802
+ "2008-08-13",
803
+ "2008-08-13",
804
+ "99214"
805
+ ],
806
+ [
807
+ 7,
808
+ 59555,
809
+ "observations",
810
+ "procedure_occurrence",
811
+ "2008-09-21",
812
+ "2008-09-21",
813
+ "99214"
814
+ ],
815
+ [
816
+ 7,
817
+ 71597,
818
+ "observations",
819
+ "procedure_occurrence",
820
+ "2008-09-22",
821
+ "2008-09-22",
822
+ "99214"
823
+ ]
824
+ ],
825
+ "tree": {
826
+ "format": "conceptql-diagram/v1",
827
+ "statements": [
828
+ {
829
+ "name": "person_filter",
830
+ "base": "filter",
831
+ "humanName": "Person Filter",
832
+ "outputTypes": ["condition_occurrence", "procedure_occurrence"],
833
+ "parameters": {},
834
+ "values": [],
835
+ "children": [
836
+ {
837
+ "name": "union",
838
+ "base": "set",
839
+ "humanName": "Union",
840
+ "outputTypes": ["condition_occurrence", "procedure_occurrence"],
841
+ "parameters": {},
842
+ "values": [],
843
+ "children": [
844
+ {
845
+ "name": "icd9",
846
+ "base": "selection",
847
+ "humanName": "ICD-9 CM",
848
+ "vocabularyId": "ICD9CM",
849
+ "outputTypes": ["condition_occurrence"],
850
+ "parameters": {},
851
+ "values": ["412"],
852
+ "children": [],
853
+ "counts": {
854
+ "condition_occurrence": {
855
+ "rows": 48,
856
+ "n": 37
857
+ }
858
+ }
859
+ },
860
+ {
861
+ "name": "cpt",
862
+ "base": "selection",
863
+ "humanName": "CPT",
864
+ "vocabularyId": "CPT4",
865
+ "outputTypes": ["procedure_occurrence"],
866
+ "parameters": {},
867
+ "values": ["99214"],
868
+ "children": [],
869
+ "counts": {
870
+ "procedure_occurrence": {
871
+ "rows": 1073,
872
+ "n": 175
873
+ }
874
+ }
875
+ }
876
+ ],
877
+ "counts": {
878
+ "condition_occurrence": {
879
+ "rows": 48,
880
+ "n": 37
881
+ },
882
+ "procedure_occurrence": {
883
+ "rows": 1073,
884
+ "n": 175
885
+ }
886
+ }
887
+ },
888
+ {
889
+ "name": "gender",
890
+ "base": "selection",
891
+ "humanName": "Gender",
892
+ "outputTypes": ["person"],
893
+ "parameters": {},
894
+ "values": ["Male"],
895
+ "children": [],
896
+ "counts": {
897
+ "person": {
898
+ "rows": 124,
899
+ "n": 124
900
+ }
901
+ }
902
+ }
903
+ ],
904
+ "counts": {
905
+ "condition_occurrence": {
906
+ "rows": 28,
907
+ "n": 20
908
+ },
909
+ "procedure_occurrence": {
910
+ "rows": 536,
911
+ "n": 89
912
+ }
913
+ }
914
+ }
915
+ ]
916
+ }
917
+ }
918
+ ]
919
+ }