conceptql 0.3.0 → 0.4.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 (1210) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +208 -27
  3. data/LICENSE +21 -0
  4. data/README.md +28 -98
  5. data/bin/conceptql +2 -1
  6. data/bin/conceptql_utils +6 -0
  7. data/config/multiple_vocabularies.csv +4 -0
  8. data/config/provenance.yml +471 -436
  9. data/config/race.yml +50 -0
  10. data/config/vocabularies.csv +87 -0
  11. data/lib/conceptql/behaviors/code_lister.rb +23 -0
  12. data/lib/conceptql/behaviors/drugish.rb +13 -8
  13. data/lib/conceptql/behaviors/labish.rb +15 -9
  14. data/lib/conceptql/behaviors/metadatable.rb +102 -34
  15. data/lib/conceptql/behaviors/provenanceable.rb +15 -19
  16. data/lib/conceptql/behaviors/single_event.rb +11 -0
  17. data/lib/conceptql/behaviors/timeless.rb +11 -0
  18. data/lib/conceptql/behaviors/utilizable.rb +206 -0
  19. data/lib/conceptql/behaviors/windowable.rb +27 -0
  20. data/lib/conceptql/cli.rb +99 -134
  21. data/lib/conceptql/columnizer.rb +75 -0
  22. data/lib/conceptql/data_model/base.rb +462 -0
  23. data/lib/conceptql/data_model/gdm.rb +155 -0
  24. data/lib/conceptql/data_model/gdm_wide.rb +42 -0
  25. data/lib/conceptql/data_model/omopv4_plus.rb +12 -0
  26. data/lib/conceptql/data_model.rb +30 -0
  27. data/lib/conceptql/database.rb +195 -23
  28. data/lib/conceptql/date_adjuster.rb +57 -27
  29. data/lib/conceptql/diagram.rb +243 -0
  30. data/lib/conceptql/lexicon/lexicon_gdm.rb +47 -0
  31. data/lib/conceptql/lexicon/lexicon_no_db.rb +49 -0
  32. data/lib/conceptql/lexicon/lexicon_ohdsi.rb +63 -0
  33. data/lib/conceptql/lexicon/lexicon_strategy.rb +116 -0
  34. data/lib/conceptql/lexicon.rb +111 -0
  35. data/lib/conceptql/nodifier.rb +45 -15
  36. data/lib/conceptql/operators/after.rb +24 -21
  37. data/lib/conceptql/operators/any_overlap.rb +6 -6
  38. data/lib/conceptql/operators/before.rb +24 -16
  39. data/lib/conceptql/operators/binary_operator_operator.rb +52 -13
  40. data/lib/conceptql/operators/casting_operator.rb +24 -17
  41. data/lib/conceptql/operators/co_reported.rb +78 -9
  42. data/lib/conceptql/operators/concurrent_within.rb +29 -17
  43. data/lib/conceptql/operators/contains.rb +9 -9
  44. data/lib/conceptql/operators/count.rb +9 -9
  45. data/lib/conceptql/operators/date_range.rb +40 -18
  46. data/lib/conceptql/operators/death.rb +10 -2
  47. data/lib/conceptql/operators/dedup.rb +31 -0
  48. data/lib/conceptql/operators/during.rb +5 -12
  49. data/lib/conceptql/operators/episode.rb +146 -0
  50. data/lib/conceptql/operators/equal.rb +6 -3
  51. data/lib/conceptql/operators/ethnicity.rb +49 -0
  52. data/lib/conceptql/operators/except.rb +15 -20
  53. data/lib/conceptql/operators/filter.rb +20 -8
  54. data/lib/conceptql/operators/first.rb +14 -3
  55. data/lib/conceptql/operators/from.rb +33 -12
  56. data/lib/conceptql/operators/gender.rb +27 -11
  57. data/lib/conceptql/operators/hospice.rb +19 -0
  58. data/lib/conceptql/operators/hospitalization.rb +19 -0
  59. data/lib/conceptql/operators/information_periods.rb +36 -0
  60. data/lib/conceptql/operators/invalid.rb +4 -5
  61. data/lib/conceptql/operators/last.rb +14 -3
  62. data/lib/conceptql/operators/match.rb +91 -0
  63. data/lib/conceptql/operators/multiple_vocabularies.rb +172 -0
  64. data/lib/conceptql/operators/numeric.rb +52 -29
  65. data/lib/conceptql/operators/numeric_filter.rb +68 -0
  66. data/lib/conceptql/operators/occurrence.rb +133 -48
  67. data/lib/conceptql/operators/one_in_two_out.rb +198 -62
  68. data/lib/conceptql/operators/operator.rb +321 -408
  69. data/lib/conceptql/operators/pass_thru.rb +9 -5
  70. data/lib/conceptql/operators/person.rb +12 -2
  71. data/lib/conceptql/operators/person_filter.rb +5 -3
  72. data/lib/conceptql/operators/place_of_service_filter.rb +11 -15
  73. data/lib/conceptql/operators/provenance.rb +25 -36
  74. data/lib/conceptql/operators/provider_filter.rb +40 -14
  75. data/lib/conceptql/operators/race.rb +48 -7
  76. data/lib/conceptql/operators/read.rb +77 -58
  77. data/lib/conceptql/operators/recall.rb +20 -20
  78. data/lib/conceptql/operators/snf.rb +19 -0
  79. data/lib/conceptql/operators/sum.rb +23 -12
  80. data/lib/conceptql/operators/temporal_operator.rb +80 -54
  81. data/lib/conceptql/operators/time_window.rb +13 -15
  82. data/lib/conceptql/operators/trim_date.rb +71 -0
  83. data/lib/conceptql/operators/trim_date_end.rb +20 -40
  84. data/lib/conceptql/operators/trim_date_start.rb +20 -43
  85. data/lib/conceptql/operators/union.rb +59 -35
  86. data/lib/conceptql/operators/vocabulary.rb +151 -0
  87. data/lib/conceptql/paths.rb +41 -0
  88. data/lib/conceptql/query.rb +165 -46
  89. data/lib/conceptql/query_modifiers/gdm/admission_date_query_modifier.rb +46 -0
  90. data/lib/conceptql/query_modifiers/gdm/drug_query_modifier.rb +54 -0
  91. data/lib/conceptql/query_modifiers/gdm/lab_query_modifier.rb +57 -0
  92. data/lib/conceptql/query_modifiers/gdm/pos_query_modifier.rb +46 -0
  93. data/lib/conceptql/query_modifiers/gdm/provenance_query_modifier.rb +45 -0
  94. data/lib/conceptql/query_modifiers/gdm/provider_query_modifier.rb +53 -0
  95. data/lib/conceptql/query_modifiers/gdm_wide/admission_date_query_modifier.rb +42 -0
  96. data/lib/conceptql/query_modifiers/gdm_wide/drug_query_modifier.rb +52 -0
  97. data/lib/conceptql/query_modifiers/gdm_wide/lab_query_modifier.rb +55 -0
  98. data/lib/conceptql/query_modifiers/gdm_wide/pos_query_modifier.rb +37 -0
  99. data/lib/conceptql/query_modifiers/gdm_wide/provenance_query_modifier.rb +38 -0
  100. data/lib/conceptql/query_modifiers/omopv4_plus/admission_date_query_modifier.rb +45 -0
  101. data/lib/conceptql/query_modifiers/omopv4_plus/drug_query_modifier.rb +80 -0
  102. data/lib/conceptql/query_modifiers/omopv4_plus/pos_query_modifier.rb +47 -0
  103. data/lib/conceptql/query_modifiers/omopv4_plus/provenance_query_modifier.rb +45 -0
  104. data/lib/conceptql/query_modifiers/omopv4_plus/provider_query_modifier.rb +26 -0
  105. data/lib/conceptql/query_modifiers/query_modifier.rb +6 -2
  106. data/lib/conceptql/rdbms/duckdb.rb +25 -0
  107. data/lib/conceptql/rdbms/generic.rb +120 -0
  108. data/lib/conceptql/rdbms/postgres.rb +51 -0
  109. data/lib/conceptql/rdbms/spark.rb +22 -0
  110. data/lib/conceptql/rdbms.rb +22 -0
  111. data/lib/conceptql/scope.rb +353 -41
  112. data/lib/conceptql/sql_formatters/formatter.rb +25 -0
  113. data/lib/conceptql/sql_formatters.rb +22 -0
  114. data/lib/conceptql/utils.rb +113 -0
  115. data/lib/conceptql/utils_cli.rb +17 -0
  116. data/lib/conceptql/version.rb +3 -1
  117. data/lib/conceptql/visitors/metadata_extractor.rb +54 -0
  118. data/lib/conceptql/vocabularies/behaviors/costish.rb +24 -0
  119. data/lib/conceptql/vocabularies/behaviors/gdmish.rb +19 -0
  120. data/lib/conceptql/vocabularies/behaviors/omopish.rb +32 -0
  121. data/lib/conceptql/vocabularies/dynamic_vocabularies.rb +63 -0
  122. data/lib/conceptql/vocabularies/entry.rb +138 -0
  123. data/lib/conceptql/vocabularies/vocabulary_class_factory.rb +85 -0
  124. data/lib/conceptql/window/base.rb +26 -0
  125. data/lib/conceptql/window/date_range.rb +25 -0
  126. data/lib/conceptql/window/table.rb +116 -0
  127. data/lib/conceptql/window.rb +72 -0
  128. data/lib/conceptql.rb +53 -10
  129. data/lib/sequel/extensions/pg_ctas_explain.rb +22 -0
  130. data/lib/sequel/extensions/pg_vacuum_table.rb +23 -0
  131. data/schemas/gdm.yml +882 -0
  132. data/schemas/gdm_wide.yml +757 -0
  133. data/schemas/ohdsi_vocabs.yml +143 -0
  134. data/schemas/omopv4_plus.yml +729 -0
  135. data/schemas/omopv4_plus_more_ignorables.tsv +13 -0
  136. metadata +262 -2068
  137. data/.gitignore +0 -25
  138. data/Gemfile +0 -6
  139. data/Guardfile +0 -56
  140. data/LICENSE.txt +0 -22
  141. data/Rakefile +0 -35
  142. data/conceptql.gemspec +0 -31
  143. data/doc/ConceptQL Specification (alpha).pdf +0 -0
  144. data/doc/converter.rb +0 -33
  145. data/doc/diagram_0.png +0 -0
  146. data/doc/implementation_notes.md +0 -39
  147. data/doc/metadata.md +0 -89
  148. data/doc/spec/02f44ad35d266ddd0a4df1691d26bf4a297b30604fc3f44b0391d6d852d23a9f.png +0 -0
  149. data/doc/spec/0360fc0c2b7a88fd82ffc4d13387b76766649d5d42aa8f9349bbf60a81ac6119.png +0 -0
  150. data/doc/spec/04491942fcbd741982514f9eb12aeecf3d54b5b69a2b50c8331f7700169d5521.png +0 -0
  151. data/doc/spec/05f9b844571ffceeed2def3025fb60c68552817b8b73d3c8a76939dbc08b7c65.png +0 -0
  152. data/doc/spec/067241a3579767a802d4f8e20fd35b60adbe377c9a6512ef135f164a5accfb27.png +0 -0
  153. data/doc/spec/1102fa717b1c2df67af5220bf3ae219afafd79be7bba0c117e301983385ada52.png +0 -0
  154. data/doc/spec/11f57941951bad5a75f9a16f38a31a3c6bf3046a475aac6e398e780892fab4ad.png +0 -0
  155. data/doc/spec/15268bc45993d3f57ccf915877f91e48bdee684f24faa614249915833cac4af9.png +0 -0
  156. data/doc/spec/253845fe6162621af407ebd110296ff4f6d8a3f23ec75dfb4ea8cda30be71262.png +0 -0
  157. data/doc/spec/26fd52b5ac55438dd9f81b4a3f3913f1058c9f225c8a5e129007c1e9413d5881.png +0 -0
  158. data/doc/spec/2b57886a9cba66bb696e4b399c51ad0dc95cd64b952709fafc819a79d573f09e.png +0 -0
  159. data/doc/spec/307a8b5a7edd6e42f8be16523a4c939faf1a0533385c861d7004b6af8addd7d1.png +0 -0
  160. data/doc/spec/328467a6a419c7c05e299b8097e5e000686068ded8dc6d5f2e2de6f51976c315.png +0 -0
  161. data/doc/spec/39d6a8eb71cae51b1d6937c97134e51f04fd47c54535ff0915fe6a8b4f197fb2.png +0 -0
  162. data/doc/spec/3f46dee4d775d1a29d52b68af6552f8ea3abd8303094e749714fc77bd7958155.png +0 -0
  163. data/doc/spec/44ec6743d5d77d15b8a487c2058bf3e455d34adc91c46ea05767f6e0e471a75e.png +0 -0
  164. data/doc/spec/462153be527b28dc2cb5259c0aec62e1f529e8b60dc6e9c23fd1e06e8be933c9.png +0 -0
  165. data/doc/spec/4a3b47ed1c54f96ebdae693d41c36c51884c4546ef799a4108085708fb7b964e.png +0 -0
  166. data/doc/spec/514f263e976d07c0d9e0a86c79bcbdcddc7d444d7b72135294ad78758effd28f.png +0 -0
  167. data/doc/spec/58113a57a37431a402d2547369eba3a481bf1dbbfd82dc384406a5c91f6df01f.png +0 -0
  168. data/doc/spec/5d331d74c460d75814b2d3138a9b7d90b5ddb2dcd85e1f5f260d183745fc3a1e.png +0 -0
  169. data/doc/spec/5d6ff62038b75d6f240d65f35d1520a131c221f47d3801554c8c2be5d528ebb0.png +0 -0
  170. data/doc/spec/62323426e381ec21c967971a67e1f4a6d89dae92154bd937284e00b67f67fdd3.png +0 -0
  171. data/doc/spec/6705af65d728c0d5c50d6c4d46253017a91eb459dbb1f40f92449f05d5562f4a.png +0 -0
  172. data/doc/spec/68fac940a32c7e40caacf8e560c61da552d57633d015ba98f2e98ec040a00c5b.png +0 -0
  173. data/doc/spec/6a34c0ef589c9c976fe41f3e67e799e198499f5b9c3ebfd240fb91f73e893573.png +0 -0
  174. data/doc/spec/6b48534236697d1ccfa1f5403764782f9d228f9eb706789cfa80203882b7b13a.png +0 -0
  175. data/doc/spec/7aa76b4d29874719466c2cbafc9936e9f12e504bf31e1a09d26ca3fffa8ba1a6.png +0 -0
  176. data/doc/spec/7b9db2986ab9ada45cfb9451ef87ff1a2d99c908083334b7ccdceb8a92387fa9.png +0 -0
  177. data/doc/spec/8101d9b89d9ba8070d585432707b43a8acdb4c2a3e9d37c3f7114b5e3ea9e800.png +0 -0
  178. data/doc/spec/886bf85249a704668a55c5161bceaac10be4a41a94b91606f49851dfa017526c.png +0 -0
  179. data/doc/spec/8ed478d8c81a58a202d0c51348fca246df206fc24a0567b163d4e0bdab56ca46.png +0 -0
  180. data/doc/spec/9139440329dcb815df89bc70182c3827868402a74ff64d0253706dcaff723dca.png +0 -0
  181. data/doc/spec/99392f56dfb0e5be3f45a12a7f1ba846d094e430f526dfeaa30b606837cd34c0.png +0 -0
  182. data/doc/spec/a4450e8c0fe0e2fde92fe9bd61952f907b1976c1aa3ba963b809bed079d42b09.png +0 -0
  183. data/doc/spec/a4bc7382a1154ea9856544fd48418f3dd9ce474ca94b8859fc323749c6cc1f55.png +0 -0
  184. data/doc/spec/a79274742cf6fac6f6c9f4a0eb651aeb452f9c43b537c8e6ccaefecd05b7105c.png +0 -0
  185. data/doc/spec/a9b4528726adec2a90f3f00139d8d0492f13c51f03c2f9ed6a5134b1b26b44a9.png +0 -0
  186. data/doc/spec/af5ae3787e80bf0771f18f1a04fe4c5d9291e1e0f963ac408a7bc198d2f1ee28.png +0 -0
  187. data/doc/spec/ba572c4f4dbade65be55f141df16cf7b3e7d09e0aec4e4e5debc4f2075277371.png +0 -0
  188. data/doc/spec/ba90ef705f7be91c53c5eb4a81a439fa0f7c48532214bd3db3cc5c069160543e.png +0 -0
  189. data/doc/spec/c1d0402862221d85aceedc7d76b3f82149b612cbd972f14d0ca9011e1e2c455c.png +0 -0
  190. data/doc/spec/c2157d8a6b73abe4f22ba5042159f32502c74bf6d762be28d2df6831586822c7.png +0 -0
  191. data/doc/spec/c5329a7f4937096a57b2e01efb9d542f84a4e2329a1e9381d08c630583ccad37.png +0 -0
  192. data/doc/spec/c82077b9455d0f9abc2c45ee1a298e38b99c9ce9cd685f65d87b376d7718d7ad.png +0 -0
  193. data/doc/spec/c93dd18894a245a5647f99e1867d3779e4cd34c9c8f8860600ff0c837a5ffa53.png +0 -0
  194. data/doc/spec/cc960a268d51ccf2ebde657d36848f780213834844900018bce3d111843f7b0f.png +0 -0
  195. data/doc/spec/d39452b58257c95a7cba07afed4877417b0c227f3690e2bff22c9eca89eac845.png +0 -0
  196. data/doc/spec/d64993258ffbef9406d9ab9136de7af530626b3a69e9eeb75835e11f11dabf62.png +0 -0
  197. data/doc/spec/da450cdd0c94a1301bd98560339a45caa8041e09974352a56ecfb144e9a5e4d4.png +0 -0
  198. data/doc/spec/dbc66b3ae6bd7123d77dd04b64f8a24498d048725a55c5340b15f5ae0a1ff307.png +0 -0
  199. data/doc/spec/de589af36fa854e006a1563c93e644e2210f2a5616babb779f7f38aadb6c1ed7.png +0 -0
  200. data/doc/spec/defbd0b853d895802663f507761ad297d82e167f516c6082686a2a19b76012c5.png +0 -0
  201. data/doc/spec/e1cb0863b21e14256d61a54200316791f6547c78ba2f0156c110f4500f9bbd49.png +0 -0
  202. data/doc/spec/e8630103287f7c9d28eff40b3b1826e24846e776b877f7b8554257acbe621e1c.png +0 -0
  203. data/doc/spec/e9b384fa7dec5f1a06479c4b289e06b1e60e4f23f7630aff6d03c52595f500f8.png +0 -0
  204. data/doc/spec/ea935ac31f3b57ff373646780a1fba34a38c9e086dc771eb7fc16c65a7e20cfc.png +0 -0
  205. data/doc/spec/eb8f5511f7d88bd0f8ba73420fc10f7c78405db7f4373d778a827058707f888e.png +0 -0
  206. data/doc/spec/ebacbd092e3d1a3c7b745a381e51e8ff9d63a21db23a16940193e18e57bc866f.png +0 -0
  207. data/doc/spec/ed039f82867241393b1a6a7153d3690461103934c72c1f3eaa3d99a12bb40885.png +0 -0
  208. data/doc/spec/ee283d6a4b69cf10da2df703be3a16830be9cd8cd4f68c5f7afdf558ea28fa76.png +0 -0
  209. data/doc/spec/f0c734b099841a754ae0366afb00e992ad4814479b65e4a7de23c6e3dd85c09a.png +0 -0
  210. data/doc/spec/f6b4fc31703cfb6327bbbd4614af8bb72da6d39fa3d53ada63a70157f2fad80e.png +0 -0
  211. data/doc/spec/f766f2e3aa13420e3ba0f823ac7956b311ed7c6c20be26b72324fadd87f36712.png +0 -0
  212. data/doc/spec/ff7d5b5573d09bd7c4cdd3aeda124d18bf82ec46673a62881b399a75d69f3f53.png +0 -0
  213. data/doc/spec.md +0 -2258
  214. data/doc/spec.md.cql +0 -1930
  215. data/lib/conceptql/annotate_grapher.rb +0 -127
  216. data/lib/conceptql/fake_annotater.rb +0 -129
  217. data/lib/conceptql/knitter.rb +0 -221
  218. data/lib/conceptql/logger.rb +0 -10
  219. data/lib/conceptql/operators/complement.rb +0 -43
  220. data/lib/conceptql/operators/condition_occurrence_source_vocabulary_operator.rb +0 -34
  221. data/lib/conceptql/operators/condition_occurrence_source_vocabulary_operator_union.rb +0 -28
  222. data/lib/conceptql/operators/condition_type.rb +0 -79
  223. data/lib/conceptql/operators/cpt.rb +0 -28
  224. data/lib/conceptql/operators/cpt_or_hcpcs.rb +0 -27
  225. data/lib/conceptql/operators/drg.rb +0 -42
  226. data/lib/conceptql/operators/drug_type_concept.rb +0 -30
  227. data/lib/conceptql/operators/from_seer_visits.rb +0 -29
  228. data/lib/conceptql/operators/hcpcs.rb +0 -28
  229. data/lib/conceptql/operators/icd10.rb +0 -19
  230. data/lib/conceptql/operators/icd10_pcs.rb +0 -28
  231. data/lib/conceptql/operators/icd9.rb +0 -19
  232. data/lib/conceptql/operators/icd9_procedure.rb +0 -28
  233. data/lib/conceptql/operators/intersect.rb +0 -39
  234. data/lib/conceptql/operators/loinc.rb +0 -28
  235. data/lib/conceptql/operators/medcode.rb +0 -17
  236. data/lib/conceptql/operators/medcode_procedure.rb +0 -28
  237. data/lib/conceptql/operators/ndc.rb +0 -32
  238. data/lib/conceptql/operators/observation_by_enttype.rb +0 -32
  239. data/lib/conceptql/operators/observation_period.rb +0 -32
  240. data/lib/conceptql/operators/overlapped_by.rb +0 -26
  241. data/lib/conceptql/operators/overlaps.rb +0 -21
  242. data/lib/conceptql/operators/place_of_service_code.rb +0 -31
  243. data/lib/conceptql/operators/procedure_occurrence.rb +0 -27
  244. data/lib/conceptql/operators/prodcode.rb +0 -32
  245. data/lib/conceptql/operators/revenue_code.rb +0 -40
  246. data/lib/conceptql/operators/rxnorm.rb +0 -28
  247. data/lib/conceptql/operators/snomed.rb +0 -25
  248. data/lib/conceptql/operators/source_vocabulary_operator.rb +0 -88
  249. data/lib/conceptql/operators/standard_vocabulary_operator.rb +0 -66
  250. data/lib/conceptql/operators/started_by.rb +0 -23
  251. data/lib/conceptql/operators/to_seer_visits.rb +0 -29
  252. data/lib/conceptql/operators/visit_occurrence.rb +0 -32
  253. data/lib/conceptql/operators/vocabulary_operator.rb +0 -45
  254. data/lib/conceptql/query_modifiers/drug_query_modifier.rb +0 -45
  255. data/lib/conceptql/query_modifiers/pos_query_modifier.rb +0 -31
  256. data/lib/conceptql/sql_formatter.rb +0 -22
  257. data/test/all.rb +0 -3
  258. data/test/all_operations_test.rb +0 -45
  259. data/test/code_list_test.rb +0 -23
  260. data/test/data/omopv4/care_site.csv +0 -0
  261. data/test/data/omopv4/cohort.csv +0 -0
  262. data/test/data/omopv4/condition_era.csv +0 -0
  263. data/test/data/omopv4/condition_occurrence.csv +0 -34044
  264. data/test/data/omopv4/death.csv +0 -1
  265. data/test/data/omopv4/drug_cost.csv +0 -0
  266. data/test/data/omopv4/drug_era.csv +0 -0
  267. data/test/data/omopv4/drug_exposure.csv +0 -2
  268. data/test/data/omopv4/location.csv +0 -0
  269. data/test/data/omopv4/observation.csv +0 -2
  270. data/test/data/omopv4/observation_period.csv +0 -1
  271. data/test/data/omopv4/organization.csv +0 -0
  272. data/test/data/omopv4/payer_plan_period.csv +0 -0
  273. data/test/data/omopv4/person.csv +0 -250
  274. data/test/data/omopv4/procedure_cost.csv +0 -0
  275. data/test/data/omopv4/procedure_occurrence.csv +0 -35099
  276. data/test/data/omopv4/provider.csv +0 -0
  277. data/test/data/omopv4/visit_occurrence.csv +0 -14931
  278. data/test/data/omopv4_plus/care_site.csv +0 -0
  279. data/test/data/omopv4_plus/cohort.csv +0 -0
  280. data/test/data/omopv4_plus/concept.csv +0 -352
  281. data/test/data/omopv4_plus/condition_era.csv +0 -0
  282. data/test/data/omopv4_plus/condition_occurrence.csv +0 -46673
  283. data/test/data/omopv4_plus/death.csv +0 -9
  284. data/test/data/omopv4_plus/drug_cost.csv +0 -13921
  285. data/test/data/omopv4_plus/drug_era.csv +0 -0
  286. data/test/data/omopv4_plus/drug_exposure.csv +0 -13921
  287. data/test/data/omopv4_plus/headers/care_site.csv +0 -1
  288. data/test/data/omopv4_plus/headers/cohort.csv +0 -1
  289. data/test/data/omopv4_plus/headers/concept.csv +0 -1
  290. data/test/data/omopv4_plus/headers/condition_era.csv +0 -1
  291. data/test/data/omopv4_plus/headers/condition_occurrence.csv +0 -1
  292. data/test/data/omopv4_plus/headers/death.csv +0 -1
  293. data/test/data/omopv4_plus/headers/drug_cost.csv +0 -1
  294. data/test/data/omopv4_plus/headers/drug_era.csv +0 -1
  295. data/test/data/omopv4_plus/headers/drug_exposure.csv +0 -1
  296. data/test/data/omopv4_plus/headers/location.csv +0 -1
  297. data/test/data/omopv4_plus/headers/observation.csv +0 -1
  298. data/test/data/omopv4_plus/headers/observation_period.csv +0 -1
  299. data/test/data/omopv4_plus/headers/organization.csv +0 -1
  300. data/test/data/omopv4_plus/headers/payer_plan_period.csv +0 -1
  301. data/test/data/omopv4_plus/headers/person.csv +0 -1
  302. data/test/data/omopv4_plus/headers/procedure_cost.csv +0 -1
  303. data/test/data/omopv4_plus/headers/procedure_occurrence.csv +0 -1
  304. data/test/data/omopv4_plus/headers/provider.csv +0 -1
  305. data/test/data/omopv4_plus/headers/source_to_concept_map.csv +0 -1
  306. data/test/data/omopv4_plus/headers/visit_occurrence.csv +0 -1
  307. data/test/data/omopv4_plus/headers/vocabulary.csv +0 -1
  308. data/test/data/omopv4_plus/location.csv +0 -0
  309. data/test/data/omopv4_plus/observation.csv +0 -0
  310. data/test/data/omopv4_plus/observation_period.csv +0 -147
  311. data/test/data/omopv4_plus/organization.csv +0 -736
  312. data/test/data/omopv4_plus/payer_plan_period.csv +0 -808
  313. data/test/data/omopv4_plus/person.csv +0 -250
  314. data/test/data/omopv4_plus/procedure_cost.csv +0 -20123
  315. data/test/data/omopv4_plus/procedure_occurrence.csv +0 -27273
  316. data/test/data/omopv4_plus/provider.csv +0 -10193
  317. data/test/data/omopv4_plus/source_to_concept_map.csv +0 -285
  318. data/test/data/omopv4_plus/visit_occurrence.csv +0 -45125
  319. data/test/data/omopv4_plus/vocabulary.csv +0 -60
  320. data/test/db.rb +0 -15
  321. data/test/db_setup.rb +0 -408
  322. data/test/db_teardown.rb +0 -33
  323. data/test/fake_annotater_test.rb +0 -31
  324. data/test/helper.rb +0 -129
  325. data/test/knitter/conceptql.md.cql +0 -39
  326. data/test/knitter/conceptql.md.expect +0 -43
  327. data/test/knitter/empty.md.cql +0 -0
  328. data/test/knitter/except.md.cql +0 -13
  329. data/test/knitter/except.md.expect +0 -14
  330. data/test/knitter/fake.md.cql +0 -10
  331. data/test/knitter/fake.md.expect +0 -13
  332. data/test/knitter/many.md.cql +0 -7
  333. data/test/knitter/many.md.expect +0 -14
  334. data/test/knitter/no_conceptql.md.cql +0 -36
  335. data/test/knitter/title.md.cql +0 -12
  336. data/test/knitter/title.md.expect +0 -15
  337. data/test/knitter/union.md.cql +0 -11
  338. data/test/knitter/union.md.expect +0 -14
  339. data/test/knitter_test.rb +0 -69
  340. data/test/query_test.rb +0 -36
  341. data/test/results/omopv4/after/anno_1 +0 -25
  342. data/test/results/omopv4/after/anno_2 +0 -48
  343. data/test/results/omopv4/after/anno_3 +0 -34
  344. data/test/results/omopv4/after/anno_4 +0 -60
  345. data/test/results/omopv4/after/anno_5 +0 -68
  346. data/test/results/omopv4/after/anno_6 +0 -60
  347. data/test/results/omopv4/after/crit_at_least +0 -7
  348. data/test/results/omopv4/after/crit_basic +0 -32
  349. data/test/results/omopv4/after/crit_occurrences +0 -12
  350. data/test/results/omopv4/after/crit_within +0 -6
  351. data/test/results/omopv4/any_overlap/crit_basic1 +0 -15
  352. data/test/results/omopv4/any_overlap/crit_basic2 +0 -15
  353. data/test/results/omopv4/any_overlap/crit_occurrences1 +0 -2
  354. data/test/results/omopv4/any_overlap/crit_occurrences2 +0 -15
  355. data/test/results/omopv4/any_overlap/crit_within +0 -8
  356. data/test/results/omopv4/before/crit_at_least +0 -6
  357. data/test/results/omopv4/before/crit_basic1 +0 -48
  358. data/test/results/omopv4/before/crit_basic2 +0 -7
  359. data/test/results/omopv4/before/crit_occurrences +0 -13
  360. data/test/results/omopv4/before/crit_within +0 -18
  361. data/test/results/omopv4/co_reported/anno_1 +0 -43
  362. data/test/results/omopv4/co_reported/anno_2 +0 -66
  363. data/test/results/omopv4/complement/anno_duplicate_params +0 -52
  364. data/test/results/omopv4/complement/anno_invalid_params +0 -37
  365. data/test/results/omopv4/complement/anno_no_params +0 -18
  366. data/test/results/omopv4/complement/count_3way_intersect +0 -4
  367. data/test/results/omopv4/complement/count_3way_union +0 -4
  368. data/test/results/omopv4/complement/count_intersect +0 -3
  369. data/test/results/omopv4/complement/count_union +0 -3
  370. data/test/results/omopv4/complement/count_union_and_intersect +0 -4
  371. data/test/results/omopv4/complement/crit_3way_intersect +0 -1
  372. data/test/results/omopv4/complement/crit_3way_union +0 -1
  373. data/test/results/omopv4/complement/crit_basic1 +0 -33998
  374. data/test/results/omopv4/complement/crit_icd9_selector +0 -54
  375. data/test/results/omopv4/complement/crit_intersect +0 -1
  376. data/test/results/omopv4/complement/crit_union +0 -1
  377. data/test/results/omopv4/complement/crit_union_and_intersect +0 -1
  378. data/test/results/omopv4/complex/anno_1 +0 -85
  379. data/test/results/omopv4/complex/crit_1 +0 -2
  380. data/test/results/omopv4/complex/crit_2 +0 -2
  381. data/test/results/omopv4/complex/crit_3 +0 -2
  382. data/test/results/omopv4/complex/crit_4 +0 -5
  383. data/test/results/omopv4/complex/crit_5 +0 -6
  384. data/test/results/omopv4/complex/crit_6 +0 -28
  385. data/test/results/omopv4/complex/crit_7 +0 -46
  386. data/test/results/omopv4/complex/crit_out_of_order_ctes +0 -7
  387. data/test/results/omopv4/complex/scanno_1 +0 -3
  388. data/test/results/omopv4/concurrent_within/crit_icd9 +0 -54
  389. data/test/results/omopv4/concurrent_within/crit_icd9_and_place_of_service +0 -23
  390. data/test/results/omopv4/concurrent_within/crit_negative_start +0 -5
  391. data/test/results/omopv4/condition_type/anno_icd9 +0 -39
  392. data/test/results/omopv4/condition_type/count_condition_era +0 -2
  393. data/test/results/omopv4/condition_type/count_condition_era_30_day_window +0 -2
  394. data/test/results/omopv4/condition_type/count_ehr_problem_list +0 -2
  395. data/test/results/omopv4/condition_type/count_era_0 +0 -2
  396. data/test/results/omopv4/condition_type/count_inpatient +0 -3
  397. data/test/results/omopv4/condition_type/count_inpatient_detail +0 -2
  398. data/test/results/omopv4/condition_type/count_inpatient_header +0 -3
  399. data/test/results/omopv4/condition_type/count_inpatient_header_2 +0 -3
  400. data/test/results/omopv4/condition_type/count_inpatient_header_3 +0 -3
  401. data/test/results/omopv4/condition_type/count_inpatient_header_4 +0 -3
  402. data/test/results/omopv4/condition_type/count_inpatient_header_5 +0 -3
  403. data/test/results/omopv4/condition_type/count_inpatient_outpatient_detail +0 -3
  404. data/test/results/omopv4/condition_type/count_inpatient_primary +0 -2
  405. data/test/results/omopv4/condition_type/count_inpatient_primary_or_first +0 -3
  406. data/test/results/omopv4/condition_type/count_outpatient +0 -3
  407. data/test/results/omopv4/condition_type/count_outpatient_detail +0 -3
  408. data/test/results/omopv4/condition_type/count_outpatient_header +0 -2
  409. data/test/results/omopv4/condition_type/count_outpatient_primary +0 -3
  410. data/test/results/omopv4/condition_type/count_primary +0 -3
  411. data/test/results/omopv4/condition_type/crit_condition_era +0 -1
  412. data/test/results/omopv4/condition_type/crit_condition_era_30_day_window +0 -1
  413. data/test/results/omopv4/condition_type/crit_ehr_problem_list +0 -1
  414. data/test/results/omopv4/condition_type/crit_era_0 +0 -1
  415. data/test/results/omopv4/condition_type/crit_inpatient +0 -1
  416. data/test/results/omopv4/condition_type/crit_inpatient_detail +0 -1
  417. data/test/results/omopv4/condition_type/crit_inpatient_header +0 -1
  418. data/test/results/omopv4/condition_type/crit_inpatient_header_2 +0 -1
  419. data/test/results/omopv4/condition_type/crit_inpatient_header_3 +0 -1
  420. data/test/results/omopv4/condition_type/crit_inpatient_header_4 +0 -1
  421. data/test/results/omopv4/condition_type/crit_inpatient_header_5 +0 -1
  422. data/test/results/omopv4/condition_type/crit_inpatient_primary +0 -1
  423. data/test/results/omopv4/condition_type/crit_inpatient_primary_or_first +0 -1
  424. data/test/results/omopv4/condition_type/crit_outpatient +0 -1
  425. data/test/results/omopv4/condition_type/crit_outpatient_detail +0 -1
  426. data/test/results/omopv4/condition_type/crit_outpatient_header +0 -1
  427. data/test/results/omopv4/condition_type/crit_outpatient_primary +0 -1
  428. data/test/results/omopv4/condition_type/crit_primary +0 -1
  429. data/test/results/omopv4/contains/crit_1 +0 -5
  430. data/test/results/omopv4/contains/crit_2 +0 -2
  431. data/test/results/omopv4/contains/crit_3 +0 -2
  432. data/test/results/omopv4/count/anno_multiple_upstreams +0 -52
  433. data/test/results/omopv4/count/anno_no_upstream1 +0 -18
  434. data/test/results/omopv4/count/anno_no_upstream2 +0 -25
  435. data/test/results/omopv4/count/crit_icd9_ndc +0 -8
  436. data/test/results/omopv4/count/crit_ndc +0 -5
  437. data/test/results/omopv4/count/crit_person +0 -254
  438. data/test/results/omopv4/cpt/anno_icd9_upstream +0 -40
  439. data/test/results/omopv4/cpt/anno_invalid_code +0 -22
  440. data/test/results/omopv4/cpt/count_1 +0 -3
  441. data/test/results/omopv4/cpt/crit_1 +0 -174
  442. data/test/results/omopv4/cpt/crit_2 +0 -1
  443. data/test/results/omopv4/cpt/scanno_1 +0 -17
  444. data/test/results/omopv4/cpt_or_hcpcs/anno_bad_format +0 -25
  445. data/test/results/omopv4/cpt_or_hcpcs/count_1 +0 -3
  446. data/test/results/omopv4/cpt_or_hcpcs/crit_1 +0 -179
  447. data/test/results/omopv4/cpt_or_hcpcs/crit_2 +0 -1
  448. data/test/results/omopv4/date_range/anno_1 +0 -15
  449. data/test/results/omopv4/date_range/anno_extra_argument +0 -24
  450. data/test/results/omopv4/date_range/anno_invalid_argument +0 -25
  451. data/test/results/omopv4/date_range/anno_missing_argument1 +0 -20
  452. data/test/results/omopv4/date_range/anno_missing_argument2 +0 -20
  453. data/test/results/omopv4/date_range/anno_no_upstreams +0 -38
  454. data/test/results/omopv4/date_range/count_1 +0 -3
  455. data/test/results/omopv4/date_range/count_2 +0 -3
  456. data/test/results/omopv4/date_range/crit_1 +0 -1
  457. data/test/results/omopv4/date_range/crit_2 +0 -1
  458. data/test/results/omopv4/death/anno_multiple_upstreams +0 -50
  459. data/test/results/omopv4/death/anno_no_upstreams +0 -22
  460. data/test/results/omopv4/death/crit_basic +0 -5
  461. data/test/results/omopv4/death/crit_person +0 -5
  462. data/test/results/omopv4/drug_type_concept/anno_has_upstreams +0 -37
  463. data/test/results/omopv4/drug_type_concept/anno_no_arguments +0 -18
  464. data/test/results/omopv4/drug_type_concept/crit_basic1 +0 -5
  465. data/test/results/omopv4/drug_type_concept/crit_basic2 +0 -2
  466. data/test/results/omopv4/during/crit_1 +0 -15
  467. data/test/results/omopv4/during/crit_2 +0 -2
  468. data/test/results/omopv4/equal/crit_1 +0 -5
  469. data/test/results/omopv4/equal/crit_2 +0 -5
  470. data/test/results/omopv4/except/anno_1 +0 -42
  471. data/test/results/omopv4/except/anno_2 +0 -43
  472. data/test/results/omopv4/except/count_complex +0 -5
  473. data/test/results/omopv4/except/crit_412_cpt +0 -54
  474. data/test/results/omopv4/except/crit_412_inpatient +0 -46
  475. data/test/results/omopv4/except/crit_complex +0 -1
  476. data/test/results/omopv4/filter/crit_1 +0 -54
  477. data/test/results/omopv4/first/anno_argument +0 -25
  478. data/test/results/omopv4/first/anno_no_upstream +0 -18
  479. data/test/results/omopv4/first/crit_cpt +0 -207
  480. data/test/results/omopv4/first/crit_icd9 +0 -42
  481. data/test/results/omopv4/first/crit_union +0 -45
  482. data/test/results/omopv4/from/anno_has_upstreams +0 -39
  483. data/test/results/omopv4/from/anno_multiple_arguments +0 -24
  484. data/test/results/omopv4/from/count_condition_occurrence +0 -3
  485. data/test/results/omopv4/from/count_observation_period +0 -3
  486. data/test/results/omopv4/from/count_person +0 -3
  487. data/test/results/omopv4/from_seer_visits/anno_multiple_upstreams +0 -78
  488. data/test/results/omopv4/from_seer_visits/anno_no_upstream +0 -18
  489. data/test/results/omopv4/from_seer_visits/crit_1 +0 -6
  490. data/test/results/omopv4/from_seer_visits/crit_2 +0 -5
  491. data/test/results/omopv4/from_seer_visits/crit_3 +0 -5
  492. data/test/results/omopv4/from_seer_visits/crit_4 +0 -6
  493. data/test/results/omopv4/gender/anno_has_upstreams +0 -39
  494. data/test/results/omopv4/gender/crit_male +0 -130
  495. data/test/results/omopv4/hcpcs/anno_bad_format +0 -24
  496. data/test/results/omopv4/hcpcs/crit_A0382 +0 -9
  497. data/test/results/omopv4/icd10/anno_bad_format +0 -22
  498. data/test/results/omopv4/icd10/anno_has_upstreams +0 -40
  499. data/test/results/omopv4/icd10/crit_1 +0 -5
  500. data/test/results/omopv4/icd10pcs/anno_bad_format +0 -28
  501. data/test/results/omopv4/icd10pcs/anno_has_upstreams +0 -40
  502. data/test/results/omopv4/icd10pcs/crit_1 +0 -2
  503. data/test/results/omopv4/icd9/anno_empty_label +0 -15
  504. data/test/results/omopv4/icd9/anno_invalid_code +0 -21
  505. data/test/results/omopv4/icd9/crit_1 +0 -54
  506. data/test/results/omopv4/icd9_procedure/crit_1 +0 -5
  507. data/test/results/omopv4/intersect/anno_412_inpatient +0 -42
  508. data/test/results/omopv4/intersect/anno_has_arguments +0 -25
  509. data/test/results/omopv4/intersect/anno_no_upstream +0 -18
  510. data/test/results/omopv4/intersect/crit_412_inpatient +0 -12
  511. data/test/results/omopv4/intersect/crit_412_male +0 -182
  512. data/test/results/omopv4/intersect/crit_complex +0 -118
  513. data/test/results/omopv4/invalid/anno_bad_op +0 -55
  514. data/test/results/omopv4/invalid/scanno_1 +0 -23
  515. data/test/results/omopv4/last/crit_icd9 +0 -42
  516. data/test/results/omopv4/loinc/crit_basic +0 -5
  517. data/test/results/omopv4/ndc/crit_basic +0 -5
  518. data/test/results/omopv4/numeric/anno_multiple_upstreams +0 -59
  519. data/test/results/omopv4/numeric/num_values_1 +0 -254
  520. data/test/results/omopv4/numeric/num_values_2 +0 -5
  521. data/test/results/omopv4/numeric/num_values_3 +0 -5
  522. data/test/results/omopv4/observation_period/anno_has_arguments +0 -36
  523. data/test/results/omopv4/observation_period/anno_multiple_upstreams +0 -51
  524. data/test/results/omopv4/observation_period/count_all_periods +0 -3
  525. data/test/results/omopv4/observation_period/crit_female +0 -2
  526. data/test/results/omopv4/observation_period/crit_icd9 +0 -5
  527. data/test/results/omopv4/observation_period/crit_male +0 -5
  528. data/test/results/omopv4/occurrence/anno_no_upstream +0 -22
  529. data/test/results/omopv4/occurrence/cc_412_410 +0 -1
  530. data/test/results/omopv4/occurrence/count_412_410 +0 -3
  531. data/test/results/omopv4/occurrence/crit_1 +0 -16
  532. data/test/results/omopv4/occurrence/crit_2 +0 -2
  533. data/test/results/omopv4/occurrence/crit_3 +0 -42
  534. data/test/results/omopv4/one_in_two_out/anno_has_arguments +0 -27
  535. data/test/results/omopv4/one_in_two_out/anno_multiple_upstreams +0 -54
  536. data/test/results/omopv4/one_in_two_out/anno_no_upstream +0 -20
  537. data/test/results/omopv4/one_in_two_out/count_1 +0 -3
  538. data/test/results/omopv4/one_in_two_out/crit_hcpcs +0 -7
  539. data/test/results/omopv4/one_in_two_out/crit_icd9 +0 -21
  540. data/test/results/omopv4/overlapped_by/crit_1 +0 -5
  541. data/test/results/omopv4/overlapped_by/crit_2 +0 -2
  542. data/test/results/omopv4/overlapped_by/crit_3 +0 -5
  543. data/test/results/omopv4/overlapped_by/crit_4 +0 -2
  544. data/test/results/omopv4/overlaps/crit_1 +0 -5
  545. data/test/results/omopv4/overlaps/crit_2 +0 -2
  546. data/test/results/omopv4/overlaps/crit_3 +0 -5
  547. data/test/results/omopv4/overlaps/crit_4 +0 -2
  548. data/test/results/omopv4/person/anno_has_arguments +0 -22
  549. data/test/results/omopv4/person/anno_multiple_upstreams +0 -52
  550. data/test/results/omopv4/person/count_2 +0 -3
  551. data/test/results/omopv4/person/crit_1 +0 -42
  552. data/test/results/omopv4/person/crit_2 +0 -1
  553. data/test/results/omopv4/person_filter/count_1 +0 -4
  554. data/test/results/omopv4/person_filter/crit_1 +0 -54
  555. data/test/results/omopv4/person_filter/crit_2 +0 -5
  556. data/test/results/omopv4/person_filter/crit_3 +0 -32
  557. data/test/results/omopv4/person_filter/crit_4 +0 -52
  558. data/test/results/omopv4/person_filter/crit_5 +0 -1
  559. data/test/results/omopv4/place_of_service_code/anno_has_upstreams +0 -37
  560. data/test/results/omopv4/place_of_service_code/anno_no_arguments +0 -18
  561. data/test/results/omopv4/place_of_service_code/crit_basic +0 -174
  562. data/test/results/omopv4/place_of_service_filter/anno_1 +0 -29
  563. data/test/results/omopv4/procedure_occurrence/anno_has_arguments +0 -37
  564. data/test/results/omopv4/procedure_occurrence/anno_multiple_upstreams +0 -51
  565. data/test/results/omopv4/procedure_occurrence/count_gender +0 -3
  566. data/test/results/omopv4/procedure_occurrence/count_icd9 +0 -3
  567. data/test/results/omopv4/procedure_occurrence/count_started_by +0 -3
  568. data/test/results/omopv4/procedure_occurrence/crit_gender +0 -1
  569. data/test/results/omopv4/procedure_occurrence/crit_icd9 +0 -1
  570. data/test/results/omopv4/procedure_occurrence/crit_started_by +0 -1
  571. data/test/results/omopv4/provenance/anno_1 +0 -29
  572. data/test/results/omopv4/provider_filter/anno_1 +0 -29
  573. data/test/results/omopv4/race/anno_1 +0 -37
  574. data/test/results/omopv4/race/anno_2 +0 -18
  575. data/test/results/omopv4/race/crit_1 +0 -28
  576. data/test/results/omopv4/read/anno_1 +0 -21
  577. data/test/results/omopv4/read/crit_1 +0 -2
  578. data/test/results/omopv4/recall/anno_1 +0 -54
  579. data/test/results/omopv4/recall/anno_2 +0 -66
  580. data/test/results/omopv4/recall/anno_3 +0 -20
  581. data/test/results/omopv4/recall/anno_4 +0 -18
  582. data/test/results/omopv4/recall/anno_5 +0 -24
  583. data/test/results/omopv4/recall/anno_6 +0 -270
  584. data/test/results/omopv4/recall/crit_1 +0 -21
  585. data/test/results/omopv4/recall/crit_2 +0 -54
  586. data/test/results/omopv4/recall/crit_3 +0 -2
  587. data/test/results/omopv4/recall/crit_cte_1 +0 -42
  588. data/test/results/omopv4/recall/crit_cte_2 +0 -42
  589. data/test/results/omopv4/recall/crit_nested_perm_0 +0 -54
  590. data/test/results/omopv4/revenue_code/crit_1 +0 -2
  591. data/test/results/omopv4/revenue_code/crit_basic +0 -2
  592. data/test/results/omopv4/revenue_code/domains_1 +0 -3
  593. data/test/results/omopv4/revenue_code/domains_drg100 +0 -3
  594. data/test/results/omopv4/rxnorm/crit_1 +0 -5
  595. data/test/results/omopv4/snomed/crit_1 +0 -84
  596. data/test/results/omopv4/started_by/crit_1 +0 -5
  597. data/test/results/omopv4/started_by/crit_2 +0 -2
  598. data/test/results/omopv4/started_by/crit_3 +0 -2
  599. data/test/results/omopv4/sum/anno_1 +0 -18
  600. data/test/results/omopv4/sum/anno_2 +0 -36
  601. data/test/results/omopv4/sum/num_1 +0 -5
  602. data/test/results/omopv4/sum/num_2 +0 -8
  603. data/test/results/omopv4/sum/num_3 +0 -254
  604. data/test/results/omopv4/time_window/anno_1 +0 -20
  605. data/test/results/omopv4/time_window/anno_2 +0 -40
  606. data/test/results/omopv4/time_window/anno_3 +0 -36
  607. data/test/results/omopv4/time_window/anno_4 +0 -39
  608. data/test/results/omopv4/time_window/anno_5 +0 -57
  609. data/test/results/omopv4/time_window/crit_1 +0 -54
  610. data/test/results/omopv4/time_window/crit_2 +0 -174
  611. data/test/results/omopv4/time_window/crit_3 +0 -54
  612. data/test/results/omopv4/time_window/crit_4 +0 -174
  613. data/test/results/omopv4/trim_date_end/crit_1 +0 -5
  614. data/test/results/omopv4/trim_date_end/crit_2 +0 -2
  615. data/test/results/omopv4/trim_date_end/crit_3 +0 -6
  616. data/test/results/omopv4/trim_date_end/crit_at_least +0 -5
  617. data/test/results/omopv4/trim_date_end/crit_occurrences_1 +0 -2
  618. data/test/results/omopv4/trim_date_end/crit_occurrences_2 +0 -6
  619. data/test/results/omopv4/trim_date_end/crit_within +0 -5
  620. data/test/results/omopv4/trim_date_start/crit_1 +0 -5
  621. data/test/results/omopv4/trim_date_start/crit_2 +0 -2
  622. data/test/results/omopv4/trim_date_start/crit_3 +0 -6
  623. data/test/results/omopv4/trim_date_start/crit_at_least +0 -5
  624. data/test/results/omopv4/trim_date_start/crit_occurrences_1 +0 -2
  625. data/test/results/omopv4/trim_date_start/crit_occurrences_2 +0 -6
  626. data/test/results/omopv4/trim_date_start/crit_within +0 -5
  627. data/test/results/omopv4/union/anno_1 +0 -43
  628. data/test/results/omopv4/union/anno_2 +0 -74
  629. data/test/results/omopv4/union/anno_3 +0 -18
  630. data/test/results/omopv4/union/anno_4 +0 -25
  631. data/test/results/omopv4/union/anno_5 +0 -33
  632. data/test/results/omopv4/union/anno_6 +0 -46
  633. data/test/results/omopv4/union/cc_1 +0 -1
  634. data/test/results/omopv4/union/cc_2 +0 -1
  635. data/test/results/omopv4/union/cc_3 +0 -1
  636. data/test/results/omopv4/union/cc_4 +0 -1
  637. data/test/results/omopv4/union/cc_5 +0 -1
  638. data/test/results/omopv4/union/count_1 +0 -3
  639. data/test/results/omopv4/union/count_2 +0 -3
  640. data/test/results/omopv4/union/count_3 +0 -3
  641. data/test/results/omopv4/union/count_4 +0 -3
  642. data/test/results/omopv4/union/count_5 +0 -4
  643. data/test/results/omopv4/union/scanno_1 +0 -22
  644. data/test/results/omopv4/union/scanno_2 +0 -36
  645. data/test/results/omopv4/visit_occurrence/anno_1 +0 -52
  646. data/test/results/omopv4/visit_occurrence/anno_2 +0 -37
  647. data/test/results/omopv4/visit_occurrence/crit_1 +0 -54
  648. data/test/results/omopv4/visit_occurrence/crit_2 +0 -7566
  649. data/test/results/omopv4/visit_occurrence/crit_3 +0 -14935
  650. data/test/results/omopv4_plus/after/anno_1 +0 -25
  651. data/test/results/omopv4_plus/after/anno_2 +0 -48
  652. data/test/results/omopv4_plus/after/anno_3 +0 -34
  653. data/test/results/omopv4_plus/after/anno_4 +0 -60
  654. data/test/results/omopv4_plus/after/anno_5 +0 -68
  655. data/test/results/omopv4_plus/after/anno_6 +0 -60
  656. data/test/results/omopv4_plus/after/crit_at_least +0 -7
  657. data/test/results/omopv4_plus/after/crit_basic +0 -32
  658. data/test/results/omopv4_plus/after/crit_occurrences +0 -12
  659. data/test/results/omopv4_plus/after/crit_within +0 -5
  660. data/test/results/omopv4_plus/any_overlap/crit_basic1 +0 -14
  661. data/test/results/omopv4_plus/any_overlap/crit_basic2 +0 -14
  662. data/test/results/omopv4_plus/any_overlap/crit_occurrences1 +0 -2
  663. data/test/results/omopv4_plus/any_overlap/crit_occurrences2 +0 -14
  664. data/test/results/omopv4_plus/any_overlap/crit_within +0 -8
  665. data/test/results/omopv4_plus/before/crit_at_least +0 -6
  666. data/test/results/omopv4_plus/before/crit_basic1 +0 -48
  667. data/test/results/omopv4_plus/before/crit_basic2 +0 -8
  668. data/test/results/omopv4_plus/before/crit_occurrences +0 -13
  669. data/test/results/omopv4_plus/before/crit_within +0 -17
  670. data/test/results/omopv4_plus/co_reported/anno_1 +0 -43
  671. data/test/results/omopv4_plus/co_reported/anno_2 +0 -66
  672. data/test/results/omopv4_plus/co_reported/anno_3 +0 -47
  673. data/test/results/omopv4_plus/complement/anno_duplicate_params +0 -52
  674. data/test/results/omopv4_plus/complement/anno_invalid_params +0 -37
  675. data/test/results/omopv4_plus/complement/anno_no_params +0 -18
  676. data/test/results/omopv4_plus/complement/count_3way_intersect +0 -4
  677. data/test/results/omopv4_plus/complement/count_3way_union +0 -4
  678. data/test/results/omopv4_plus/complement/count_intersect +0 -3
  679. data/test/results/omopv4_plus/complement/count_union +0 -3
  680. data/test/results/omopv4_plus/complement/count_union_and_intersect +0 -4
  681. data/test/results/omopv4_plus/complement/crit_basic1 +0 -52483
  682. data/test/results/omopv4_plus/complement/crit_icd9_selector +0 -52
  683. data/test/results/omopv4_plus/complex/anno_1 +0 -85
  684. data/test/results/omopv4_plus/complex/crit_1 +0 -2
  685. data/test/results/omopv4_plus/complex/crit_2 +0 -2
  686. data/test/results/omopv4_plus/complex/crit_3 +0 -2
  687. data/test/results/omopv4_plus/complex/crit_4 +0 -2
  688. data/test/results/omopv4_plus/complex/crit_5 +0 -2
  689. data/test/results/omopv4_plus/complex/crit_6 +0 -24
  690. data/test/results/omopv4_plus/complex/crit_7 +0 -45
  691. data/test/results/omopv4_plus/complex/crit_out_of_order_ctes +0 -15
  692. data/test/results/omopv4_plus/complex/scanno_1 +0 -108
  693. data/test/results/omopv4_plus/concurrent_within/crit_icd9 +0 -52
  694. data/test/results/omopv4_plus/concurrent_within/crit_icd9_and_place_of_service +0 -21
  695. data/test/results/omopv4_plus/concurrent_within/crit_negative_start +0 -5
  696. data/test/results/omopv4_plus/condition_type/anno_icd9 +0 -39
  697. data/test/results/omopv4_plus/condition_type/count_condition_era +0 -2
  698. data/test/results/omopv4_plus/condition_type/count_condition_era_30_day_window +0 -2
  699. data/test/results/omopv4_plus/condition_type/count_ehr_problem_list +0 -2
  700. data/test/results/omopv4_plus/condition_type/count_era_0 +0 -2
  701. data/test/results/omopv4_plus/condition_type/count_inpatient +0 -3
  702. data/test/results/omopv4_plus/condition_type/count_inpatient_detail +0 -2
  703. data/test/results/omopv4_plus/condition_type/count_inpatient_header +0 -3
  704. data/test/results/omopv4_plus/condition_type/count_inpatient_header_2 +0 -3
  705. data/test/results/omopv4_plus/condition_type/count_inpatient_header_3 +0 -3
  706. data/test/results/omopv4_plus/condition_type/count_inpatient_header_4 +0 -3
  707. data/test/results/omopv4_plus/condition_type/count_inpatient_header_5 +0 -3
  708. data/test/results/omopv4_plus/condition_type/count_inpatient_outpatient_detail +0 -3
  709. data/test/results/omopv4_plus/condition_type/count_inpatient_primary +0 -3
  710. data/test/results/omopv4_plus/condition_type/count_inpatient_primary_or_first +0 -3
  711. data/test/results/omopv4_plus/condition_type/count_outpatient +0 -3
  712. data/test/results/omopv4_plus/condition_type/count_outpatient_detail +0 -2
  713. data/test/results/omopv4_plus/condition_type/count_outpatient_header +0 -3
  714. data/test/results/omopv4_plus/condition_type/count_outpatient_primary +0 -3
  715. data/test/results/omopv4_plus/condition_type/count_primary +0 -3
  716. data/test/results/omopv4_plus/contains/crit_1 +0 -5
  717. data/test/results/omopv4_plus/contains/crit_2 +0 -2
  718. data/test/results/omopv4_plus/contains/crit_3 +0 -2
  719. data/test/results/omopv4_plus/count/anno_multiple_upstreams +0 -52
  720. data/test/results/omopv4_plus/count/anno_no_upstream1 +0 -18
  721. data/test/results/omopv4_plus/count/anno_no_upstream2 +0 -25
  722. data/test/results/omopv4_plus/count/crit_icd9_ndc +0 -5
  723. data/test/results/omopv4_plus/count/crit_ndc +0 -2
  724. data/test/results/omopv4_plus/count/crit_person +0 -254
  725. data/test/results/omopv4_plus/cpt/anno_icd9_upstream +0 -40
  726. data/test/results/omopv4_plus/cpt/anno_invalid_code +0 -22
  727. data/test/results/omopv4_plus/cpt/count_1 +0 -3
  728. data/test/results/omopv4_plus/cpt/crit_1 +0 -158
  729. data/test/results/omopv4_plus/cpt/scanno_1 +0 -17
  730. data/test/results/omopv4_plus/cpt_or_hcpcs/anno_bad_format +0 -25
  731. data/test/results/omopv4_plus/cpt_or_hcpcs/count_1 +0 -3
  732. data/test/results/omopv4_plus/cpt_or_hcpcs/crit_1 +0 -161
  733. data/test/results/omopv4_plus/date_range/anno_1 +0 -15
  734. data/test/results/omopv4_plus/date_range/anno_extra_argument +0 -24
  735. data/test/results/omopv4_plus/date_range/anno_invalid_argument +0 -25
  736. data/test/results/omopv4_plus/date_range/anno_missing_argument1 +0 -20
  737. data/test/results/omopv4_plus/date_range/anno_missing_argument2 +0 -20
  738. data/test/results/omopv4_plus/date_range/anno_no_upstreams +0 -38
  739. data/test/results/omopv4_plus/date_range/count_1 +0 -3
  740. data/test/results/omopv4_plus/date_range/count_2 +0 -3
  741. data/test/results/omopv4_plus/death/anno_multiple_upstreams +0 -50
  742. data/test/results/omopv4_plus/death/anno_no_upstreams +0 -22
  743. data/test/results/omopv4_plus/death/crit_basic +0 -14
  744. data/test/results/omopv4_plus/death/crit_person +0 -14
  745. data/test/results/omopv4_plus/drug_type_concept/anno_has_upstreams +0 -37
  746. data/test/results/omopv4_plus/drug_type_concept/anno_no_arguments +0 -18
  747. data/test/results/omopv4_plus/drug_type_concept/crit_basic1 +0 -2
  748. data/test/results/omopv4_plus/drug_type_concept/crit_basic2 +0 -2
  749. data/test/results/omopv4_plus/during/crit_1 +0 -14
  750. data/test/results/omopv4_plus/during/crit_2 +0 -2
  751. data/test/results/omopv4_plus/equal/crit_1 +0 -2
  752. data/test/results/omopv4_plus/equal/crit_2 +0 -2
  753. data/test/results/omopv4_plus/except/anno_1 +0 -42
  754. data/test/results/omopv4_plus/except/anno_2 +0 -43
  755. data/test/results/omopv4_plus/except/count_complex +0 -5
  756. data/test/results/omopv4_plus/except/crit_412_cpt +0 -52
  757. data/test/results/omopv4_plus/except/crit_412_inpatient +0 -45
  758. data/test/results/omopv4_plus/filter/crit_1 +0 -52
  759. data/test/results/omopv4_plus/first/anno_argument +0 -25
  760. data/test/results/omopv4_plus/first/anno_no_upstream +0 -18
  761. data/test/results/omopv4_plus/first/crit_cpt +0 -180
  762. data/test/results/omopv4_plus/first/crit_icd9 +0 -41
  763. data/test/results/omopv4_plus/first/crit_union +0 -52
  764. data/test/results/omopv4_plus/from/anno_has_upstreams +0 -39
  765. data/test/results/omopv4_plus/from/anno_multiple_arguments +0 -24
  766. data/test/results/omopv4_plus/from/count_condition_occurrence +0 -3
  767. data/test/results/omopv4_plus/from/count_observation_period +0 -3
  768. data/test/results/omopv4_plus/from/count_person +0 -3
  769. data/test/results/omopv4_plus/from_seer_visits/anno_multiple_upstreams +0 -78
  770. data/test/results/omopv4_plus/from_seer_visits/anno_no_upstream +0 -18
  771. data/test/results/omopv4_plus/from_seer_visits/crit_1 +0 -2
  772. data/test/results/omopv4_plus/from_seer_visits/crit_2 +0 -2
  773. data/test/results/omopv4_plus/from_seer_visits/crit_3 +0 -2
  774. data/test/results/omopv4_plus/from_seer_visits/crit_4 +0 -2
  775. data/test/results/omopv4_plus/gender/anno_has_upstreams +0 -39
  776. data/test/results/omopv4_plus/gender/crit_male +0 -128
  777. data/test/results/omopv4_plus/hcpcs/anno_bad_format +0 -24
  778. data/test/results/omopv4_plus/hcpcs/crit_A0382 +0 -7
  779. data/test/results/omopv4_plus/icd10/anno_bad_format +0 -22
  780. data/test/results/omopv4_plus/icd10/anno_has_upstreams +0 -40
  781. data/test/results/omopv4_plus/icd10/crit_1 +0 -2
  782. data/test/results/omopv4_plus/icd10pcs/anno_bad_format +0 -28
  783. data/test/results/omopv4_plus/icd10pcs/anno_has_upstreams +0 -40
  784. data/test/results/omopv4_plus/icd10pcs/crit_1 +0 -2
  785. data/test/results/omopv4_plus/icd9/anno_empty_label +0 -15
  786. data/test/results/omopv4_plus/icd9/anno_invalid_code +0 -21
  787. data/test/results/omopv4_plus/icd9/anno_valid_code +0 -3
  788. data/test/results/omopv4_plus/icd9/crit_1 +0 -52
  789. data/test/results/omopv4_plus/icd9_procedure/crit_1 +0 -5
  790. data/test/results/omopv4_plus/intersect/anno_412_inpatient +0 -42
  791. data/test/results/omopv4_plus/intersect/anno_has_arguments +0 -25
  792. data/test/results/omopv4_plus/intersect/anno_no_upstream +0 -18
  793. data/test/results/omopv4_plus/intersect/crit_412_inpatient +0 -11
  794. data/test/results/omopv4_plus/intersect/crit_412_male +0 -178
  795. data/test/results/omopv4_plus/intersect/crit_complex +0 -110
  796. data/test/results/omopv4_plus/invalid/anno_bad_op +0 -55
  797. data/test/results/omopv4_plus/invalid/scanno_1 +0 -23
  798. data/test/results/omopv4_plus/last/crit_icd9 +0 -41
  799. data/test/results/omopv4_plus/loinc/crit_basic +0 -2
  800. data/test/results/omopv4_plus/ndc/crit_basic +0 -2
  801. data/test/results/omopv4_plus/ndc/results_1 +0 -41
  802. data/test/results/omopv4_plus/numeric/anno_multiple_upstreams +0 -59
  803. data/test/results/omopv4_plus/numeric/num_values_1 +0 -254
  804. data/test/results/omopv4_plus/numeric/num_values_2 +0 -5
  805. data/test/results/omopv4_plus/numeric/num_values_3 +0 -5
  806. data/test/results/omopv4_plus/observation_period/anno_has_arguments +0 -36
  807. data/test/results/omopv4_plus/observation_period/anno_multiple_upstreams +0 -51
  808. data/test/results/omopv4_plus/observation_period/count_all_periods +0 -3
  809. data/test/results/omopv4_plus/observation_period/crit_female +0 -87
  810. data/test/results/omopv4_plus/observation_period/crit_icd9 +0 -28
  811. data/test/results/omopv4_plus/observation_period/crit_male +0 -75
  812. data/test/results/omopv4_plus/occurrence/anno_no_upstream +0 -22
  813. data/test/results/omopv4_plus/occurrence/count_412_410 +0 -3
  814. data/test/results/omopv4_plus/occurrence/crit_1 +0 -15
  815. data/test/results/omopv4_plus/occurrence/crit_2 +0 -2
  816. data/test/results/omopv4_plus/occurrence/crit_3 +0 -41
  817. data/test/results/omopv4_plus/one_in_two_out/anno_has_arguments +0 -27
  818. data/test/results/omopv4_plus/one_in_two_out/anno_multiple_upstreams +0 -54
  819. data/test/results/omopv4_plus/one_in_two_out/anno_no_upstream +0 -20
  820. data/test/results/omopv4_plus/one_in_two_out/count_1 +0 -3
  821. data/test/results/omopv4_plus/one_in_two_out/count_same_as_1 +0 -3
  822. data/test/results/omopv4_plus/one_in_two_out/crit_hcpcs +0 -2
  823. data/test/results/omopv4_plus/one_in_two_out/crit_icd9 +0 -19
  824. data/test/results/omopv4_plus/one_in_two_out/results_1 +0 -803
  825. data/test/results/omopv4_plus/one_in_two_out/results_2 +0 -803
  826. data/test/results/omopv4_plus/overlapped_by/crit_1 +0 -5
  827. data/test/results/omopv4_plus/overlapped_by/crit_2 +0 -2
  828. data/test/results/omopv4_plus/overlapped_by/crit_3 +0 -5
  829. data/test/results/omopv4_plus/overlapped_by/crit_4 +0 -2
  830. data/test/results/omopv4_plus/overlaps/crit_1 +0 -5
  831. data/test/results/omopv4_plus/overlaps/crit_2 +0 -2
  832. data/test/results/omopv4_plus/overlaps/crit_3 +0 -5
  833. data/test/results/omopv4_plus/overlaps/crit_4 +0 -2
  834. data/test/results/omopv4_plus/person/anno_has_arguments +0 -22
  835. data/test/results/omopv4_plus/person/anno_multiple_upstreams +0 -52
  836. data/test/results/omopv4_plus/person/count_2 +0 -3
  837. data/test/results/omopv4_plus/person/crit_1 +0 -41
  838. data/test/results/omopv4_plus/person_filter/count_1 +0 -4
  839. data/test/results/omopv4_plus/person_filter/crit_1 +0 -52
  840. data/test/results/omopv4_plus/person_filter/crit_2 +0 -10
  841. data/test/results/omopv4_plus/person_filter/crit_3 +0 -32
  842. data/test/results/omopv4_plus/person_filter/crit_4 +0 -50
  843. data/test/results/omopv4_plus/place_of_service_code/anno_has_upstreams +0 -37
  844. data/test/results/omopv4_plus/place_of_service_code/anno_no_arguments +0 -18
  845. data/test/results/omopv4_plus/place_of_service_code/crit_basic +0 -157
  846. data/test/results/omopv4_plus/place_of_service_filter/anno_1 +0 -29
  847. data/test/results/omopv4_plus/procedure_occurrence/anno_has_arguments +0 -37
  848. data/test/results/omopv4_plus/procedure_occurrence/anno_multiple_upstreams +0 -51
  849. data/test/results/omopv4_plus/procedure_occurrence/count_gender +0 -3
  850. data/test/results/omopv4_plus/procedure_occurrence/count_icd9 +0 -3
  851. data/test/results/omopv4_plus/procedure_occurrence/count_started_by +0 -3
  852. data/test/results/omopv4_plus/provenance/anno_1 +0 -29
  853. data/test/results/omopv4_plus/provenance/anno_bad_keyword +0 -38
  854. data/test/results/omopv4_plus/provenance/count_1 +0 -3
  855. data/test/results/omopv4_plus/provenance/count_2 +0 -3
  856. data/test/results/omopv4_plus/provider_filter/anno_1 +0 -29
  857. data/test/results/omopv4_plus/race/anno_1 +0 -37
  858. data/test/results/omopv4_plus/race/anno_2 +0 -18
  859. data/test/results/omopv4_plus/race/crit_1 +0 -32
  860. data/test/results/omopv4_plus/read/anno_1 +0 -15
  861. data/test/results/omopv4_plus/read/crit_1 +0 -2
  862. data/test/results/omopv4_plus/recall/anno_1 +0 -54
  863. data/test/results/omopv4_plus/recall/anno_2 +0 -66
  864. data/test/results/omopv4_plus/recall/anno_3 +0 -20
  865. data/test/results/omopv4_plus/recall/anno_4 +0 -18
  866. data/test/results/omopv4_plus/recall/anno_5 +0 -24
  867. data/test/results/omopv4_plus/recall/anno_6 +0 -270
  868. data/test/results/omopv4_plus/recall/crit_1 +0 -19
  869. data/test/results/omopv4_plus/recall/crit_2 +0 -52
  870. data/test/results/omopv4_plus/recall/crit_3 +0 -2
  871. data/test/results/omopv4_plus/recall/crit_cte_1 +0 -41
  872. data/test/results/omopv4_plus/recall/crit_cte_2 +0 -41
  873. data/test/results/omopv4_plus/recall/crit_nested_perm_0 +0 -52
  874. data/test/results/omopv4_plus/revenue_code/crit_1 +0 -2
  875. data/test/results/omopv4_plus/revenue_code/crit_basic +0 -2
  876. data/test/results/omopv4_plus/revenue_code/domains_1 +0 -3
  877. data/test/results/omopv4_plus/revenue_code/domains_drg100 +0 -3
  878. data/test/results/omopv4_plus/rxnorm/crit_1 +0 -2
  879. data/test/results/omopv4_plus/snomed/crit_1 +0 -2
  880. data/test/results/omopv4_plus/started_by/crit_1 +0 -5
  881. data/test/results/omopv4_plus/started_by/crit_2 +0 -2
  882. data/test/results/omopv4_plus/started_by/crit_3 +0 -2
  883. data/test/results/omopv4_plus/sum/anno_1 +0 -18
  884. data/test/results/omopv4_plus/sum/anno_2 +0 -36
  885. data/test/results/omopv4_plus/sum/num_1 +0 -2
  886. data/test/results/omopv4_plus/sum/num_2 +0 -5
  887. data/test/results/omopv4_plus/sum/num_3 +0 -254
  888. data/test/results/omopv4_plus/time_window/anno_1 +0 -20
  889. data/test/results/omopv4_plus/time_window/anno_2 +0 -40
  890. data/test/results/omopv4_plus/time_window/anno_3 +0 -36
  891. data/test/results/omopv4_plus/time_window/anno_4 +0 -39
  892. data/test/results/omopv4_plus/time_window/anno_5 +0 -57
  893. data/test/results/omopv4_plus/time_window/crit_1 +0 -52
  894. data/test/results/omopv4_plus/time_window/crit_2 +0 -157
  895. data/test/results/omopv4_plus/time_window/crit_3 +0 -52
  896. data/test/results/omopv4_plus/time_window/crit_4 +0 -157
  897. data/test/results/omopv4_plus/trim_date_end/crit_1 +0 -5
  898. data/test/results/omopv4_plus/trim_date_end/crit_2 +0 -2
  899. data/test/results/omopv4_plus/trim_date_end/crit_3 +0 -6
  900. data/test/results/omopv4_plus/trim_date_end/crit_at_least +0 -5
  901. data/test/results/omopv4_plus/trim_date_end/crit_occurrences_1 +0 -2
  902. data/test/results/omopv4_plus/trim_date_end/crit_occurrences_2 +0 -6
  903. data/test/results/omopv4_plus/trim_date_end/crit_within +0 -5
  904. data/test/results/omopv4_plus/trim_date_start/crit_1 +0 -5
  905. data/test/results/omopv4_plus/trim_date_start/crit_2 +0 -2
  906. data/test/results/omopv4_plus/trim_date_start/crit_3 +0 -6
  907. data/test/results/omopv4_plus/trim_date_start/crit_at_least +0 -5
  908. data/test/results/omopv4_plus/trim_date_start/crit_occurrences_1 +0 -2
  909. data/test/results/omopv4_plus/trim_date_start/crit_occurrences_2 +0 -6
  910. data/test/results/omopv4_plus/trim_date_start/crit_within +0 -5
  911. data/test/results/omopv4_plus/union/anno_1 +0 -43
  912. data/test/results/omopv4_plus/union/anno_2 +0 -74
  913. data/test/results/omopv4_plus/union/anno_3 +0 -18
  914. data/test/results/omopv4_plus/union/anno_4 +0 -25
  915. data/test/results/omopv4_plus/union/anno_5 +0 -33
  916. data/test/results/omopv4_plus/union/anno_6 +0 -46
  917. data/test/results/omopv4_plus/union/count_1 +0 -3
  918. data/test/results/omopv4_plus/union/count_2 +0 -3
  919. data/test/results/omopv4_plus/union/count_3 +0 -3
  920. data/test/results/omopv4_plus/union/count_4 +0 -3
  921. data/test/results/omopv4_plus/union/count_5 +0 -4
  922. data/test/results/omopv4_plus/union/optcc_1 +0 -3
  923. data/test/results/omopv4_plus/union/optcc_2 +0 -3
  924. data/test/results/omopv4_plus/union/optcc_3 +0 -3
  925. data/test/results/omopv4_plus/union/optcc_4 +0 -3
  926. data/test/results/omopv4_plus/union/optcc_5 +0 -3
  927. data/test/results/omopv4_plus/union/optcc_6 +0 -3
  928. data/test/results/omopv4_plus/union/scanno_1 +0 -22
  929. data/test/results/omopv4_plus/union/scanno_2 +0 -36
  930. data/test/results/omopv4_plus/visit_occurrence/anno_1 +0 -52
  931. data/test/results/omopv4_plus/visit_occurrence/anno_2 +0 -37
  932. data/test/results/omopv4_plus/visit_occurrence/crit_1 +0 -52
  933. data/test/results/omopv4_plus/visit_occurrence/crit_2 +0 -22945
  934. data/test/results/omopv4_plus/visit_occurrence/crit_3 +0 -46851
  935. data/test/statements/after/anno_1 +0 -7
  936. data/test/statements/after/anno_2 +0 -16
  937. data/test/statements/after/anno_3 +0 -9
  938. data/test/statements/after/anno_4 +0 -19
  939. data/test/statements/after/anno_5 +0 -21
  940. data/test/statements/after/anno_6 +0 -16
  941. data/test/statements/after/crit_at_least +0 -21
  942. data/test/statements/after/crit_basic +0 -20
  943. data/test/statements/after/crit_occurrences +0 -21
  944. data/test/statements/after/crit_within +0 -21
  945. data/test/statements/any_overlap/crit_basic1 +0 -16
  946. data/test/statements/any_overlap/crit_basic2 +0 -16
  947. data/test/statements/any_overlap/crit_occurrences1 +0 -17
  948. data/test/statements/any_overlap/crit_occurrences2 +0 -17
  949. data/test/statements/any_overlap/crit_within +0 -17
  950. data/test/statements/before/crit_at_least +0 -14
  951. data/test/statements/before/crit_basic1 +0 -13
  952. data/test/statements/before/crit_basic2 +0 -16
  953. data/test/statements/before/crit_occurrences +0 -14
  954. data/test/statements/before/crit_within +0 -14
  955. data/test/statements/co_reported/anno_1 +0 -13
  956. data/test/statements/co_reported/anno_2 +0 -21
  957. data/test/statements/co_reported/anno_3 +0 -14
  958. data/test/statements/complement/anno_duplicate_params +0 -11
  959. data/test/statements/complement/anno_invalid_params +0 -8
  960. data/test/statements/complement/anno_no_params +0 -3
  961. data/test/statements/complement/count_3way_intersect +0 -24
  962. data/test/statements/complement/count_3way_union +0 -18
  963. data/test/statements/complement/count_intersect +0 -17
  964. data/test/statements/complement/count_union +0 -14
  965. data/test/statements/complement/count_union_and_intersect +0 -27
  966. data/test/statements/complement/crit_basic1 +0 -7
  967. data/test/statements/complement/crit_icd9_selector +0 -10
  968. data/test/statements/complex/anno_1 +0 -29
  969. data/test/statements/complex/crit_1 +0 -278
  970. data/test/statements/complex/crit_2 +0 -43
  971. data/test/statements/complex/crit_3 +0 -54
  972. data/test/statements/complex/crit_4 +0 -17
  973. data/test/statements/complex/crit_5 +0 -17
  974. data/test/statements/complex/crit_6 +0 -20
  975. data/test/statements/complex/crit_7 +0 -14
  976. data/test/statements/complex/crit_out_of_order_ctes +0 -39
  977. data/test/statements/complex/scanno_1 +0 -1508
  978. data/test/statements/concurrent_within/crit_icd9 +0 -11
  979. data/test/statements/concurrent_within/crit_icd9_and_place_of_service +0 -15
  980. data/test/statements/concurrent_within/crit_negative_start +0 -15
  981. data/test/statements/condition_type/anno_icd9 +0 -7
  982. data/test/statements/condition_type/count_condition_era +0 -4
  983. data/test/statements/condition_type/count_condition_era_30_day_window +0 -4
  984. data/test/statements/condition_type/count_ehr_problem_list +0 -4
  985. data/test/statements/condition_type/count_era_0 +0 -4
  986. data/test/statements/condition_type/count_inpatient +0 -4
  987. data/test/statements/condition_type/count_inpatient_detail +0 -4
  988. data/test/statements/condition_type/count_inpatient_header +0 -4
  989. data/test/statements/condition_type/count_inpatient_header_2 +0 -4
  990. data/test/statements/condition_type/count_inpatient_header_3 +0 -4
  991. data/test/statements/condition_type/count_inpatient_header_4 +0 -4
  992. data/test/statements/condition_type/count_inpatient_header_5 +0 -4
  993. data/test/statements/condition_type/count_inpatient_outpatient_detail +0 -5
  994. data/test/statements/condition_type/count_inpatient_primary +0 -4
  995. data/test/statements/condition_type/count_inpatient_primary_or_first +0 -4
  996. data/test/statements/condition_type/count_outpatient +0 -4
  997. data/test/statements/condition_type/count_outpatient_detail +0 -4
  998. data/test/statements/condition_type/count_outpatient_header +0 -4
  999. data/test/statements/condition_type/count_outpatient_primary +0 -4
  1000. data/test/statements/condition_type/count_primary +0 -4
  1001. data/test/statements/contains/crit_1 +0 -16
  1002. data/test/statements/contains/crit_2 +0 -16
  1003. data/test/statements/contains/crit_3 +0 -16
  1004. data/test/statements/count/anno_multiple_upstreams +0 -11
  1005. data/test/statements/count/anno_no_upstream1 +0 -3
  1006. data/test/statements/count/anno_no_upstream2 +0 -4
  1007. data/test/statements/count/crit_icd9_ndc +0 -15
  1008. data/test/statements/count/crit_ndc +0 -11
  1009. data/test/statements/count/crit_person +0 -7
  1010. data/test/statements/cpt/anno_icd9_upstream +0 -7
  1011. data/test/statements/cpt/anno_invalid_code +0 -5
  1012. data/test/statements/cpt/count_1 +0 -4
  1013. data/test/statements/cpt/crit_1 +0 -4
  1014. data/test/statements/cpt/scanno_1 +0 -4
  1015. data/test/statements/cpt_or_hcpcs/anno_bad_format +0 -7
  1016. data/test/statements/cpt_or_hcpcs/count_1 +0 -5
  1017. data/test/statements/cpt_or_hcpcs/crit_1 +0 -5
  1018. data/test/statements/date_range/anno_1 +0 -7
  1019. data/test/statements/date_range/anno_extra_argument +0 -8
  1020. data/test/statements/date_range/anno_invalid_argument +0 -7
  1021. data/test/statements/date_range/anno_missing_argument1 +0 -6
  1022. data/test/statements/date_range/anno_missing_argument2 +0 -6
  1023. data/test/statements/date_range/anno_no_upstreams +0 -11
  1024. data/test/statements/date_range/count_1 +0 -7
  1025. data/test/statements/date_range/count_2 +0 -7
  1026. data/test/statements/death/anno_multiple_upstreams +0 -10
  1027. data/test/statements/death/anno_no_upstreams +0 -4
  1028. data/test/statements/death/crit_basic +0 -3
  1029. data/test/statements/death/crit_person +0 -7
  1030. data/test/statements/drug_type_concept/anno_has_upstreams +0 -8
  1031. data/test/statements/drug_type_concept/anno_no_arguments +0 -3
  1032. data/test/statements/drug_type_concept/crit_basic1 +0 -4
  1033. data/test/statements/drug_type_concept/crit_basic2 +0 -4
  1034. data/test/statements/during/crit_1 +0 -16
  1035. data/test/statements/during/crit_2 +0 -16
  1036. data/test/statements/equal/crit_1 +0 -17
  1037. data/test/statements/equal/crit_2 +0 -21
  1038. data/test/statements/except/anno_1 +0 -13
  1039. data/test/statements/except/anno_2 +0 -14
  1040. data/test/statements/except/count_complex +0 -31
  1041. data/test/statements/except/crit_412_cpt +0 -13
  1042. data/test/statements/except/crit_412_inpatient +0 -13
  1043. data/test/statements/filter/crit_1 +0 -15
  1044. data/test/statements/first/anno_argument +0 -4
  1045. data/test/statements/first/anno_no_upstream +0 -3
  1046. data/test/statements/first/crit_cpt +0 -7
  1047. data/test/statements/first/crit_icd9 +0 -7
  1048. data/test/statements/first/crit_union +0 -14
  1049. data/test/statements/from/anno_has_upstreams +0 -7
  1050. data/test/statements/from/anno_multiple_arguments +0 -5
  1051. data/test/statements/from_seer_visits/anno_multiple_upstreams +0 -17
  1052. data/test/statements/from_seer_visits/anno_no_upstream +0 -3
  1053. data/test/statements/from_seer_visits/crit_1 +0 -10
  1054. data/test/statements/from_seer_visits/crit_2 +0 -11
  1055. data/test/statements/from_seer_visits/crit_3 +0 -11
  1056. data/test/statements/from_seer_visits/crit_4 +0 -12
  1057. data/test/statements/gender/anno_has_upstreams +0 -7
  1058. data/test/statements/gender/crit_male +0 -4
  1059. data/test/statements/hcpcs/anno_bad_format +0 -6
  1060. data/test/statements/hcpcs/crit_A0382 +0 -4
  1061. data/test/statements/icd10/anno_bad_format +0 -5
  1062. data/test/statements/icd10/anno_has_upstreams +0 -7
  1063. data/test/statements/icd10/crit_1 +0 -4
  1064. data/test/statements/icd10pcs/anno_bad_format +0 -6
  1065. data/test/statements/icd10pcs/anno_has_upstreams +0 -7
  1066. data/test/statements/icd10pcs/crit_1 +0 -4
  1067. data/test/statements/icd9/anno_empty_label +0 -7
  1068. data/test/statements/icd9/anno_invalid_code +0 -4
  1069. data/test/statements/icd9/anno_valid_code +0 -4
  1070. data/test/statements/icd9/crit_1 +0 -4
  1071. data/test/statements/icd9_procedure/crit_1 +0 -4
  1072. data/test/statements/intersect/anno_412_inpatient +0 -11
  1073. data/test/statements/intersect/anno_has_arguments +0 -4
  1074. data/test/statements/intersect/anno_no_upstream +0 -3
  1075. data/test/statements/intersect/crit_412_inpatient +0 -11
  1076. data/test/statements/intersect/crit_412_male +0 -11
  1077. data/test/statements/intersect/crit_complex +0 -19
  1078. data/test/statements/invalid/anno_bad_op +0 -13
  1079. data/test/statements/invalid/scanno_1 +0 -7
  1080. data/test/statements/last/crit_icd9 +0 -7
  1081. data/test/statements/loinc/crit_basic +0 -4
  1082. data/test/statements/ndc/crit_basic +0 -4
  1083. data/test/statements/ndc/results_1 +0 -4
  1084. data/test/statements/numeric/anno_multiple_upstreams +0 -11
  1085. data/test/statements/numeric/num_values_1 +0 -4
  1086. data/test/statements/numeric/num_values_2 +0 -8
  1087. data/test/statements/numeric/num_values_3 +0 -8
  1088. data/test/statements/observation_period/anno_has_arguments +0 -8
  1089. data/test/statements/observation_period/anno_multiple_upstreams +0 -11
  1090. data/test/statements/observation_period/count_all_periods +0 -4
  1091. data/test/statements/observation_period/crit_female +0 -7
  1092. data/test/statements/observation_period/crit_icd9 +0 -7
  1093. data/test/statements/observation_period/crit_male +0 -7
  1094. data/test/statements/occurrence/anno_no_upstream +0 -3
  1095. data/test/statements/occurrence/count_412_410 +0 -17
  1096. data/test/statements/occurrence/crit_1 +0 -8
  1097. data/test/statements/occurrence/crit_2 +0 -11
  1098. data/test/statements/occurrence/crit_3 +0 -11
  1099. data/test/statements/one_in_two_out/anno_has_arguments +0 -8
  1100. data/test/statements/one_in_two_out/anno_multiple_upstreams +0 -15
  1101. data/test/statements/one_in_two_out/anno_no_upstream +0 -7
  1102. data/test/statements/one_in_two_out/count_1 +0 -10
  1103. data/test/statements/one_in_two_out/count_same_as_1 +0 -11
  1104. data/test/statements/one_in_two_out/crit_hcpcs +0 -10
  1105. data/test/statements/one_in_two_out/crit_icd9 +0 -11
  1106. data/test/statements/one_in_two_out/results_1 +0 -9
  1107. data/test/statements/one_in_two_out/results_2 +0 -9
  1108. data/test/statements/overlapped_by/crit_1 +0 -16
  1109. data/test/statements/overlapped_by/crit_2 +0 -16
  1110. data/test/statements/overlapped_by/crit_3 +0 -16
  1111. data/test/statements/overlapped_by/crit_4 +0 -16
  1112. data/test/statements/overlaps/crit_1 +0 -16
  1113. data/test/statements/overlaps/crit_2 +0 -16
  1114. data/test/statements/overlaps/crit_3 +0 -16
  1115. data/test/statements/overlaps/crit_4 +0 -16
  1116. data/test/statements/person/anno_has_arguments +0 -4
  1117. data/test/statements/person/anno_multiple_upstreams +0 -11
  1118. data/test/statements/person/count_2 +0 -3
  1119. data/test/statements/person/crit_1 +0 -7
  1120. data/test/statements/person_filter/count_1 +0 -20
  1121. data/test/statements/person_filter/crit_1 +0 -20
  1122. data/test/statements/person_filter/crit_2 +0 -13
  1123. data/test/statements/person_filter/crit_3 +0 -13
  1124. data/test/statements/person_filter/crit_4 +0 -13
  1125. data/test/statements/place_of_service_code/anno_has_upstreams +0 -8
  1126. data/test/statements/place_of_service_code/anno_no_arguments +0 -3
  1127. data/test/statements/place_of_service_code/crit_basic +0 -4
  1128. data/test/statements/place_of_service_filter/anno_1 +0 -8
  1129. data/test/statements/procedure_occurrence/anno_has_arguments +0 -8
  1130. data/test/statements/procedure_occurrence/anno_multiple_upstreams +0 -11
  1131. data/test/statements/procedure_occurrence/count_gender +0 -7
  1132. data/test/statements/procedure_occurrence/count_icd9 +0 -7
  1133. data/test/statements/procedure_occurrence/count_started_by +0 -19
  1134. data/test/statements/provenance/anno_1 +0 -8
  1135. data/test/statements/provenance/anno_bad_keyword +0 -10
  1136. data/test/statements/provenance/count_1 +0 -8
  1137. data/test/statements/provenance/count_2 +0 -8
  1138. data/test/statements/provider_filter/anno_1 +0 -10
  1139. data/test/statements/race/anno_1 +0 -8
  1140. data/test/statements/race/anno_2 +0 -3
  1141. data/test/statements/race/crit_1 +0 -4
  1142. data/test/statements/read/anno_1 +0 -4
  1143. data/test/statements/read/crit_1 +0 -8
  1144. data/test/statements/recall/anno_1 +0 -16
  1145. data/test/statements/recall/anno_2 +0 -18
  1146. data/test/statements/recall/anno_3 +0 -4
  1147. data/test/statements/recall/anno_4 +0 -3
  1148. data/test/statements/recall/anno_5 +0 -5
  1149. data/test/statements/recall/anno_6 +0 -107
  1150. data/test/statements/recall/crit_1 +0 -17
  1151. data/test/statements/recall/crit_2 +0 -14
  1152. data/test/statements/recall/crit_3 +0 -16
  1153. data/test/statements/recall/crit_cte_1 +0 -17
  1154. data/test/statements/recall/crit_cte_2 +0 -17
  1155. data/test/statements/recall/crit_nested_perm_0 +0 -28
  1156. data/test/statements/revenue_code/crit_1 +0 -4
  1157. data/test/statements/revenue_code/crit_basic +0 -4
  1158. data/test/statements/revenue_code/domains_1 +0 -4
  1159. data/test/statements/revenue_code/domains_drg100 +0 -4
  1160. data/test/statements/rxnorm/crit_1 +0 -4
  1161. data/test/statements/snomed/crit_1 +0 -4
  1162. data/test/statements/started_by/crit_1 +0 -16
  1163. data/test/statements/started_by/crit_2 +0 -16
  1164. data/test/statements/started_by/crit_3 +0 -16
  1165. data/test/statements/sum/anno_1 +0 -3
  1166. data/test/statements/sum/anno_2 +0 -8
  1167. data/test/statements/sum/num_1 +0 -11
  1168. data/test/statements/sum/num_2 +0 -15
  1169. data/test/statements/sum/num_3 +0 -7
  1170. data/test/statements/time_window/anno_1 +0 -7
  1171. data/test/statements/time_window/anno_2 +0 -11
  1172. data/test/statements/time_window/anno_3 +0 -11
  1173. data/test/statements/time_window/anno_4 +0 -12
  1174. data/test/statements/time_window/anno_5 +0 -15
  1175. data/test/statements/time_window/crit_1 +0 -11
  1176. data/test/statements/time_window/crit_2 +0 -11
  1177. data/test/statements/time_window/crit_3 +0 -11
  1178. data/test/statements/time_window/crit_4 +0 -11
  1179. data/test/statements/trim_date_end/crit_1 +0 -16
  1180. data/test/statements/trim_date_end/crit_2 +0 -16
  1181. data/test/statements/trim_date_end/crit_3 +0 -16
  1182. data/test/statements/trim_date_end/crit_at_least +0 -17
  1183. data/test/statements/trim_date_end/crit_occurrences_1 +0 -17
  1184. data/test/statements/trim_date_end/crit_occurrences_2 +0 -17
  1185. data/test/statements/trim_date_end/crit_within +0 -17
  1186. data/test/statements/trim_date_start/crit_1 +0 -16
  1187. data/test/statements/trim_date_start/crit_2 +0 -16
  1188. data/test/statements/trim_date_start/crit_3 +0 -16
  1189. data/test/statements/trim_date_start/crit_at_least +0 -17
  1190. data/test/statements/trim_date_start/crit_occurrences_1 +0 -17
  1191. data/test/statements/trim_date_start/crit_occurrences_2 +0 -17
  1192. data/test/statements/trim_date_start/crit_within +0 -17
  1193. data/test/statements/union/anno_1 +0 -11
  1194. data/test/statements/union/anno_2 +0 -18
  1195. data/test/statements/union/anno_3 +0 -3
  1196. data/test/statements/union/anno_4 +0 -4
  1197. data/test/statements/union/anno_5 +0 -7
  1198. data/test/statements/union/anno_6 +0 -10
  1199. data/test/statements/union/count_1 +0 -11
  1200. data/test/statements/union/count_2 +0 -11
  1201. data/test/statements/union/count_3 +0 -15
  1202. data/test/statements/union/count_4 +0 -18
  1203. data/test/statements/union/count_5 +0 -18
  1204. data/test/statements/union/scanno_1 +0 -3
  1205. data/test/statements/union/scanno_2 +0 -18
  1206. data/test/statements/visit_occurrence/anno_1 +0 -11
  1207. data/test/statements/visit_occurrence/anno_2 +0 -8
  1208. data/test/statements/visit_occurrence/crit_1 +0 -7
  1209. data/test/statements/visit_occurrence/crit_2 +0 -7
  1210. data/test/statements/visit_occurrence/crit_3 +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 41a911f8bcafa0d691e093e990fe37bfdd6a9b40
4
- data.tar.gz: c9d90541f263d84795b24e3ad38c0d55fd704474
2
+ SHA256:
3
+ metadata.gz: 5201b0144372677675ffcd8abea73662b8e79544ffacfbbd1a61e39a9923d2da
4
+ data.tar.gz: b81fc6806c7aae55562b073e33b2f6704f36fd6cd57266ffe6b8055df6c6baa0
5
5
  SHA512:
6
- metadata.gz: 83afc484b1486e2c21e5c120b4fcd18b09ad085564f0d856033607bd8979291aa986cf93c403fe75684181898878180eeead220418d427238deebb3be05886d9
7
- data.tar.gz: aa5ef37c3a85638a4cf93e1a648dce558fb84c86145f1a1b982eaccba68d104c07a4ad2979bfe951e3d05f32eb1d363ed4f300d6e4182ce3d8caa6d50953f6e0
6
+ metadata.gz: 2a49e99ec315bac889401893e68a83de444ab6ac3307e3ae08897a07f7cd59f9a60e3f4f712cff0d43e4d50394d6ff921900e7c23f06f86fdd6134f691fd1d1f
7
+ data.tar.gz: bf260ffadecac3a5e0dbd8aeb6eb932258fdebcc709363be34704b8f74abde9bd092be0f5710208b4a84d362758087c0c7fb4bf72871f2bafce8fb9496d5fbf9
data/CHANGELOG.md CHANGED
@@ -1,51 +1,202 @@
1
1
  # Changelog
2
+
2
3
  All notable changes to this project will be documented in this file.
3
4
 
5
+ ## [Unreleased]
6
+
7
+ ## [0.4.0] - 2026-10-26
8
+
9
+ ### Added
10
+
11
+ - `conceptql render_json STATEMENT_FILE [--counts] [--data-model=...]` prints statements as a
12
+ `conceptql-diagram/v1` render tree for the diagram renderer (`ConceptQL::Diagram`), plus
13
+ `ConceptQL::Diagram::JigsawTree`, a port of the diagram editor's ConceptqlAdapter
14
+ - `ConceptQL::Database#operators(data_model = own)`: each Database's own operator registry, with
15
+ vocabulary operators built from that Database's lexicon and the built-in operators merged over
16
+ them. Every operator lookup goes through it.
17
+ - `ConceptQL::Database.new(db, name_concepts_table: name)` and
18
+ `ConceptQL::Database#create_name_concepts_table`: the display-name joins (drug name and dose
19
+ units, lab units and result concept, admission source and discharge location) read a table of
20
+ only the concept rows that the data references, instead of the whole concept table. The caller
21
+ builds the table once, before its queries run, and drops it afterwards. Off by default.
22
+ - `ConceptQL::Database.new(db, share_utilization: true)` and `ConceptQL::Database#shared_tables`:
23
+ the statements of one Database share each hospitalization, SNF and hospice list (the
24
+ `Utilizable` operators) as a table named `<table_prefix>_util_<hash>`, in `scratch_database`
25
+ when that is set. While the table does not exist, `Query#sql_statements` lists it as an entry
26
+ before the entries that read it, so a caller that runs the entries in order (as CREATE TABLE AS,
27
+ then the query) creates it first. A caller that reads rows through conceptql gets the table
28
+ created at the first read. Building SQL creates no table. Two threads that generate SQL on one
29
+ Database at the same time can both list the same table: this is not handled. The key is the SQL
30
+ of the list, so each window gets its own table, and a list shares only when its lookup ids come
31
+ in one order: use the option with `cache_lookups: true`. The option needs a `table_prefix` in
32
+ `scope_opts`. conceptql never drops these tables: the caller drops `shared_tables`. Off by
33
+ default. On DuckDB, a t_shank prototype of this change cut one export with 40 hospitalization
34
+ criteria from 6.85 to 5.10 minutes. Spark and Postgres timing are not measured.
35
+ - `ConceptQL::Database.new(db, cache_lookups: true)`: each vocabulary lookup reaches the database
36
+ once per distinct argument list for the life of the Database. This includes the empty-vocabulary
37
+ check behind the unknown-code warnings, the Race operator's name lookup, the Provenance
38
+ operator's keyword check, and the checks that the data model's source tables and the concept
39
+ table exist (once per table and database). Off by default.
40
+ - Tag-based releases: pushing a `v*` tag runs `.github/workflows/release.yml`, which publishes the
41
+ gem to rubygems.org through RubyGems trusted publishing (no stored API key). It refuses unless the
42
+ tag equals `v` + `ConceptQL::VERSION`, the commit is on `main`, and the `Run Tests` workflow passed
43
+ on a push to `main` for that commit. Before publishing, it installs the built gem into an empty
44
+ `GEM_HOME` and checks that it loads and ships `config/` and `schemas/`. After publishing, it checks
45
+ that rubygems.org lists the version. See "Releasing" in `CLAUDE.md`.
46
+
47
+ ### Fixed
48
+
49
+ - `ConceptQL.metadata` marks every option that an operator requires as `required`, not only the
50
+ first. `right` on each two-stream operator, `end` on `date_range` and `roles` on
51
+ `provider_filter` were not marked. Marking a subclass's options no longer changes its parent
52
+ class's option hashes
53
+ - `trim_date_end` and `trim_date_start` accept `join_columns` from a JSON statement. The column
54
+ names arrived as strings and became string literals in the SQL, so the query failed
55
+ - `Query#code_list` on a statement with validation errors raises `Query::InvalidStatementError`
56
+ (a `Query::QueryError` that names the errors) instead of NoMethodError or a partial code list
57
+ - `require 'conceptql'` no longer connects to a database. It used to connect to whatever
58
+ Sequelizer was configured for, to register an operator per vocabulary, so it crashed with no
59
+ database configured and, on DuckDB, a second process could not load the library while another
60
+ held the file
61
+ - Bug with PlaceOfServiceFilter and other procedure_cost-based operators (#84)
62
+ - Spark CI downloads its test data from the repo variable `SPARK_TEST_DATA_URL` and checks it
63
+ against `.github/synpuf_test_data.tgz.sha256` before it extracts it. The hardcoded Dropbox link
64
+ it used was dead
65
+ - CLI: `conceptql metadata` raised ArgumentError when it wrote metadata.json, and
66
+ `CONCEPTQL_PARQUET_TEST_DIR` raised NoMethodError (`String#glob`) for every command that
67
+ connects to a database. It now makes the parquet files of each directory in its glob ready.
68
+ `conceptql scope_annotate` ignored the connection options, and `conceptql help` listed
69
+ `simple_visit` as `extract_metadata`
70
+ - A vocabulary statement with `*` no longer warns about the format of its other codes. The check
71
+ for `*` never ran, because `Vocabulary#select_all?` is private
72
+ - `occurrence` with a blank or whitespace-only `at_least` or `within` (as an editor can send for
73
+ an empty field) gives the same rows as without the option. It used to take the timed query,
74
+ which returns other rows
75
+ - `match` without `only_columns` compared every column with `=`, so two NULL values never matched
76
+ and a stream matched with itself kept nothing. It now compares the key columns (`person_id`,
77
+ `criterion_id`, `criterion_table`, `criterion_domain`, `start_date`, `uuid`, `window_id`) with
78
+ `=` and the other columns NULL-safe (`IS NOT DISTINCT FROM`, `<=>` on Spark). `match` also
79
+ ignored `join_columns`. It now compares only the person and the listed columns, as the other
80
+ two-stream operators do, and rejects `join_columns` next to `only_columns` or `except_columns`
81
+ - An option that lists columns (`only_columns`, `except_columns` and `join_columns` on `match`,
82
+ and `join_columns` on the temporal operators and `trim_date_start`/`trim_date_end`) also
83
+ accepts a comma-separated string, such as `"uuid, start_date"`. A blank string is an unset
84
+ option. Before, a string raised NoMethodError
85
+ - `match` with `invert_match` set to the string `"false"` (in any case), or to an empty string,
86
+ no longer inverts the match. Before, any value other than `false` and `nil` inverted it
87
+
88
+ ### Changed
89
+
90
+ - Set RUNTIME_FILTER_MODE only if asked
91
+ - `ConceptQL::Operators.operators` is removed. Built-in operators are in
92
+ `ConceptQL::Operators.static_operators`; vocabulary operators come from each Database
93
+ (`ConceptQL::Database#operators`). `ConceptQL::Database.lexicon` (class method) is removed;
94
+ use `Database#lexicon`
95
+ - The sequelizer dependency now admits 0.4.x (`>= 0.3.0, < 0.5`). The previous `< 0.4` bound
96
+ rejected the released sequelizer 0.4.0. Gemfile.lock now resolves sequelizer 0.4.0.
97
+ - Development dependencies are updated to their newest releases (2026-10-26), including the
98
+ duckdb gem 2.0.0.1, pg 1.7.0, rubocop 1.92.1, and the newest sequelizer, sequel-duckdb 0.4.1
99
+ and sequel-hexspace 2.1.0. The test suites pass on Postgres and DuckDB. `just test-duckdb`
100
+ pins the libduckdb library to 1.5.6 (override with `LIBDUCKDB_VERSION`). GitHub CI runs the
101
+ DuckDB suite against libduckdb 1.5.6 and 2.0.0
102
+ - `just release-check` fails when a dependency is behind its newest allowed release. The release
103
+ procedure runs it first
104
+ - Docker test runs use the ghcr `test_data.jumper` image pinned by digest, the same one as CI, and
105
+ run as the calling user, so they leave no root-owned files. The runner image drops Chrome's libraries
106
+ - On DuckDB, operator CTEs are now `AS MATERIALIZED`, as on Postgres
107
+ (`ConceptQL::Rdbms::DuckDB#supports_materialized?` is true). DuckDB accepts the keyword since
108
+ v0.8.0. `just test-duckdb` passes against libduckdb 1.5.6
109
+ - The provenance and utilization operators (`provenance`, `one_in_two_out`, `hospitalization`,
110
+ `hospice`, `snf`) are now GDM-only. On omopv4_plus they fail validation as an invalid operator
111
+ instead of raising NoMethodError, and they are not in its metadata
112
+ - Code format checks ("improperly formatted code") use the vocabulary_formats validator patterns.
113
+ CPT4, CPT4_HCPCS, HCPCS, ICD10, ICD10CM and ICD9Proc changed: CPT4 now accepts M0201, HCPCS
114
+ needs a leading letter, and the ICD patterns need a real dot. ATC, DRG, ICD03_Morphology,
115
+ ICD03_Topography, NDC, RxNorm and SNOMED are checked for the first time. ICD10PCS accepts only 7-character billable codes
116
+ with a real section character first (row ICD10PCS.BILLABLE), so Z561123 is now improperly
117
+ formatted
118
+ - A `cpt_or_hcpcs` code gets a warning when every vocabulary rejects it, for any reason. It is
119
+ "improperly formatted" only when every vocabulary says so, and otherwise "unknown"
120
+ - `first` and `last` reject the `at_least` and `within` options with the validation error
121
+ "unsupported option". With either option they returned every upstream row instead of one row
122
+ per person. The two options are no longer in the `first` and `last` metadata. A blank value
123
+ counts as not set. `occurrence` keeps both options
124
+
125
+ ### Removed
126
+
127
+ - Presto support (breaking). `ConceptQL::Rdbms::Presto` and `database_type: :presto` are gone, so
128
+ `ConceptQL::Rdbms.generate(:presto)` raises "Unknown database_type". Its `primary_concepts`
129
+ emitted `DISTINCT ON`, which Presto does not support. The Rakefile's Presto scaffolding
130
+ (`test_script` and `driftr_script` namespaces, `convert`, `prestofy`, the Presto `cdb`) is
131
+ removed too. The default rake task is now `test` instead of `test_omopv4_plus`
132
+ - The `conceptql selection_operators` command, which had raised NameError since 2016.
133
+ - The unused query optimizer (breaking for a caller of these methods). `Query#optimized`,
134
+ `Operator#optimized`, `Operator#unionable?`, `Operator#dup_values` and the
135
+ `ConceptQL::Vocabularies::Behaviors::Sourcish` module are gone. Nothing in conceptql called
136
+ `optimized`, so its union merging never ran, and the generated SQL does not change.
137
+ - The `pass_thru` operator name, which never worked. `PassThru` had no query method, so a
138
+ statement that used it failed to generate SQL. A `pass_thru` statement is now an invalid
139
+ operator. The `PassThru` class stays as the base class of union, count, sum, numeric, dedup,
140
+ episode, time_window and co_reported.
141
+ - `ConceptQL::Vocabularies::Entry#is_source?`, `Entry#is_standard?` and `Entry::STANDARD_VOCABS`
142
+ (breaking for a caller of these). Their only use was the `Sourcish` include removed with the
143
+ query optimizer. Neither t_shank nor jigsaw-diagram-editor calls them.
144
+ - The `only_columns`, `except_columns` and `query_columns` options of `dedup` (breaking). No
145
+ statement could use them: with any column left out, the query failed, and from JSON they did
146
+ nothing or broke the SQL. Like any option an operator does not read, they are now ignored, and
147
+ dedup groups by every column.
148
+
4
149
  ## [0.3.0] - 2016-11-08
150
+
5
151
  ### Added
152
+
6
153
  - New operators
7
- - PlaceOfServiceFilter
8
- - Provenance
9
- - ProviderFilter
10
- - CoReported
154
+ - PlaceOfServiceFilter
155
+ - Provenance
156
+ - ProviderFilter
157
+ - CoReported
11
158
  - Support for :impala_mem_limit option
12
159
  - Initial support for dynamic columns
13
160
  - Additional columns for observation domains and drug domains
14
161
  - Support for :within, :occurrences, :at_least
15
162
 
16
163
  ### Changed
164
+
17
165
  - Format of this [CHANGELOG](http://keepachangelog.com/en/0.3.0/)
18
166
  - Read searches Condition, Procedure, Drug, Observation
19
167
  - Rewrote OneInTwoOut to produce faster queries
20
168
  - Except operator uses different strategy under Impala
21
169
 
22
170
  ### Fixed
171
+
23
172
  - Fixed date casting and other issues for Impala compatibility.
24
173
  - Fixed ConditionType to accept concept_ids
25
174
 
26
175
  ## [0.2.0] - 2015-12-11
176
+
27
177
  ### Added
178
+
28
179
  - Optimized After/Before nodes when multi-person results are in the right stream.
29
180
  - Set end_date as coalesce(end_date, start_date) to make range if end_date missing.
30
181
  - Nodes
31
- - AnyOverlap
32
- - Contains
33
- - Filter
34
- - Ndc
35
- - ObservationPeriod
36
- - OneInTwoOut
37
- - OverlappedBy
38
- - Overlaps
39
- - TrimDateEnd
40
- - TrimDateStart
182
+ - AnyOverlap
183
+ - Contains
184
+ - Filter
185
+ - Ndc
186
+ - ObservationPeriod
187
+ - OneInTwoOut
188
+ - OverlappedBy
189
+ - Overlaps
190
+ - TrimDateEnd
191
+ - TrimDateStart
41
192
  - Nodes for CPRD
42
- - Medcode
43
- - MedcodeProcedure
44
- - ObservationByEnttype
45
- - Prodcode
193
+ - Medcode
194
+ - MedcodeProcedure
195
+ - ObservationByEnttype
196
+ - Prodcode
46
197
  - Nodes for SEER
47
- - FromSeerVisits
48
- - ToSeerVisits
198
+ - FromSeerVisits
199
+ - ToSeerVisits
49
200
  - Ability to limit results to a set of patients by setting Tree#person_ids
50
201
  - "units_source_value" and "source_value" columns in results
51
202
  - TimeWindow supports date literals
@@ -53,8 +204,9 @@ All notable changes to this project will be documented in this file.
53
204
  - Nodifier#to_metadata
54
205
 
55
206
  ### Changed
207
+
56
208
  - Except now allows :ignore_date option
57
- - Comparison is only done on criterion_id/type
209
+ - Comparison is only done on criterion_id/type
58
210
  - DateRange START/END use observation_period instead of visit_occurrence
59
211
  - Operator#columns value_as_numeric => value_as_number
60
212
  - Syntax is now more "lispy"
@@ -62,53 +214,69 @@ All notable changes to this project will be documented in this file.
62
214
  - Nodes now called Operators
63
215
 
64
216
  ### Removed
217
+
65
218
  - Let/Define operators
66
219
 
67
220
  ### Fixed
221
+
68
222
  - Many broken specs.
69
223
  - Union calls #from_self on incoming streams to avoid column issues
70
224
  - Concept node now works again
71
225
  - Define ensures tables are built
72
226
 
73
227
  ## [0.1.1] - 2014-09-18
228
+
74
229
  ### Fixed
230
+
75
231
  - Calling Query#sql no longer creates a bunch of temporary tables.
76
232
 
77
233
  ## [0.1.0] - 2014-09-04
234
+
78
235
  ### Added
236
+
79
237
  - Support for numeric, string, and concept_ids returned in results.
80
238
  - Many updates to the ConceptQL Specification document.
81
239
  - Added doc/implementation_notes.md to capture thoughts and bad ideas.
82
240
 
83
241
  ### Fixed
242
+
84
243
  - "Fake" graphs are now drawn correctly.
85
244
  - bin/conceptql doesn't bomb out drawing "fake" graphs
86
245
 
87
246
  ## [0.0.9] - 2014-09-03
247
+
88
248
  ### Added
249
+
89
250
  - Support for MSSQL (SQL Server).
90
251
 
91
252
  ### Fixed
253
+
92
254
  - Removed debug output from Node#namify
93
255
 
94
256
  ## [0.0.8] - 2014-08-28
257
+
95
258
  ### Added
259
+
96
260
  - Support for Oracle.
97
261
 
98
262
  ### Fixed
263
+
99
264
  - DateAdjuster/TimeWindow use Sequel's date_arithmetic extension to produce database agnostic date manipulation.
100
265
  - Breakage from Node#tree in GraphNodifier.
101
266
  - All tests are back to passing.
102
267
  - Changed from SHA1 to CRC32 hash since Oracle can't handle table names longer than 30 characters.
103
268
 
104
269
  ## [0.0.6] - 2014-08-23
270
+
105
271
  ### Added
272
+
106
273
  - Support for Oracle
107
274
  - Tree#defined to pass type information between Define and Recall.
108
275
  - Node#sql to produce SQL for each node.
109
276
  - Graph includes row count on each edge in the diagram.
110
277
 
111
278
  ### Fixed
279
+
112
280
  - Bug in CastingNode that generate SQL returning multiple columns in a subquery.
113
281
  - Made ruby-graphviz a dependency so calling programs don't bomb out.
114
282
  - Define now passes rows on through like any other node!
@@ -116,41 +284,54 @@ All notable changes to this project will be documented in this file.
116
284
  - All tests are back to passing.
117
285
 
118
286
  ## [0.0.5] - 2014-08-19
287
+
119
288
  ### Fixed
289
+
120
290
  - Bug in GraphNodifier not displaying types for `recall` nodes.
121
291
 
122
292
  ## [0.0.4] - 2014-08-19
293
+
123
294
  ### Added
295
+
124
296
  - Support for 5 instead of 13 column internal representation of results.
125
297
  - `define` node, used to create "variables" in ConceptQL.
126
298
  - `recall` node, used to pull results from "variables" in ConceptQL.
127
299
 
128
300
  ### Removed
301
+
129
302
  - Support for 13 column results.
130
303
  - Dependency on a set of views to run SQL queries.
131
304
 
132
305
  ### Fixed
306
+
133
307
  - Bug where `place_of_service_code` wasn't limited to vocabulary_id 14
134
308
 
135
309
  ## [0.0.3] - 2014-08-12
310
+
136
311
  ### Added
312
+
137
313
  - FakeGrapher class to make it easier to generate diagrams with experimental nodes
138
314
  - fake_graph command has returned to the `conceptql` program
139
315
  - GraphNodifier now supports:
140
- - condition_type as condition_occurrence
141
- - drg as procedure_occurrence
142
- - vsac as misc
316
+ - condition_type as condition_occurrence
317
+ - drg as procedure_occurrence
318
+ - vsac as misc
143
319
 
144
320
  ### Fixed
321
+
145
322
  - Tree now runs #deep_symbolize_keys on incoming statements
146
323
 
147
324
  ## [0.0.2] - 2014-07-11
325
+
148
326
  ### Removed
327
+
149
328
  - Several commands from `conceptql` program
150
- - fake_graph
151
- - show_db_graph
152
- - show_and_tell_db
329
+ - fake_graph
330
+ - show_db_graph
331
+ - show_and_tell_db
153
332
 
154
333
  ## [0.0.1] - 2014-07-11
334
+
155
335
  ### Added
336
+
156
337
  - This project.
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2014-2026 Outcomes Insights, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,32 +1,32 @@
1
- # ConceptQL
1
+ # ConceptQL [![Run Tests](https://github.com/outcomesinsights/conceptql/actions/workflows/run_tests.yml/badge.svg)](https://github.com/outcomesinsights/conceptql/actions/workflows/run_tests.yml)
2
2
 
3
3
  ConceptQL (pronounced concept-Q-L) is a high-level language that allows researchers to unambiguously define their research algorithms.
4
4
 
5
- This gem interprets the ConceptQL language and translates it into SQL queries compatible with OMOP CDM-structured data. The ConceptQL "language" is a set of nested hashes and arrays representing search criteria and some set operations and temporal operations to glue those criteria together.
5
+ This gem interprets the ConceptQL language and translates it into SQL queries compatible with [Generalized Data Model (GDM)](https://github.com/outcomesinsights/generalized_data_model#contexts)-structured data. The ConceptQL "language" is a set of nested arrays and hashes representing search criteria with some set operations and temporal operations to glue those criteria together.
6
6
 
7
7
  ## Further Reading
8
8
 
9
- If you're interested in reading up on ConceptQL, a rough draft of the specifications document is [available in markdown format](https://github.com/outcomesinsights/conceptql_spec).
9
+ If you're interested in reading up on ConceptQL, a the specifications document is [available in markdown format](https://github.com/outcomesinsights/conceptql_spec).
10
10
 
11
11
  ## Motivation for ConceptQL
12
12
 
13
- Outcomes Insights intends to build a vast library of research algorithms and apply those algorithms to large databases of claims data. Early into building the library, we realized we had to overcome two major issues:
13
+ Outcomes Insights has built a vast library of research algorithms and applied those algorithms to large databases of claims data. Early into building the library, we realized we had to overcome two major issues:
14
14
 
15
15
  1. Methods sections of research papers commonly use natural language to specify the criteria used to build cohorts from a claims database.
16
- - Algorithms defined in natural language are often imprecise, open to multiple interpretations, and generally difficult to reproduce.
17
- - Researchers could benefit from a language that removes the ambiguity of natural language while increasing the reproducibility of their research algorithms.
18
- 1. Querying against claims databases is often difficult.
19
- - Hand-coding algorithms to extract cohorts from datasets is time-consuming, error-prone, and opaque.
20
- - Researchers could benefit from a language that allows algorithms to be defined at a high-level and then gets translated into the appropriate queries against a database.
16
+ - Algorithms defined in natural language are often imprecise, open to multiple interpretations, and generally difficult to reproduce.
17
+ - Researchers could benefit from a language that removes the ambiguity of natural language while increasing the reproducibility of their research algorithms.
18
+ 2. Querying against claims databases is often difficult.
19
+ - Hand-coding algorithms to extract cohorts from datasets is time-consuming, error-prone, and opaque.
20
+ - Researchers could benefit from a language that allows algorithms to be defined at a high-level and then gets translated into the appropriate queries against a database.
21
21
 
22
22
  We developed ConceptQL to address these two issues.
23
23
 
24
- We are writing a tool that can read research algorithms defined in ConceptQL. The tool can create a diagram for the algorithm which makes it easy to visualize and understand. The tool can also translate the algorithm into a SQL query which runs against data structured in [OMOP's Common Data Model (CDM)](http://omop.org/CDM). The purpose of the CDM is to standardize the format and content of observational data, so standardized applications, tools and methods can be applied to them.
24
+ We have written a tool that can read research algorithms defined in ConceptQL. The tool can create a diagram for the algorithm which makes it easy to visualize and understand. The tool can also translate the algorithm into a SQL query which runs against data structured in the [Generalized Data Model (GDM)](https://github.com/outcomesinsights/generalized_data_model). The purpose of the GDM is to standardize the format and content of observational data, so standardized applications, tools and methods can be applied to them.
25
25
 
26
26
  For instance, using ConceptQL we can take a statement that looks like this:
27
27
 
28
- ```YAML
29
- :icd9: '412'
28
+ ```JSON
29
+ [ "icd9", "412" ]
30
30
  ```
31
31
 
32
32
  And generate a diagram that looks like this:
@@ -37,101 +37,31 @@ And generate SQL that looks like this:
37
37
 
38
38
  ```SQL
39
39
  SELECT *
40
- FROM cdm_data.condition_occurrence AS co
41
- JOIN vocabulary.source_to_concept_map AS scm ON (c.condition_concept_id = scm.target_concept_id)
42
- WHERE scm.source_code IN ('412')
43
- AND scm.source_vocabulary_id = 2
44
- AND scm.source_code = co.condition_source_value
40
+ FROM gdm_data.clinical_codes AS cc
41
+ WHERE cc.clinical_code_concept_id IN (
42
+ SELECT id
43
+ FROM concepts
44
+ WHERE vocabulary_id = 'ICD9CM'
45
+ AND concept_code = '412'
46
+ )
45
47
  ```
46
48
 
47
- As stated above, one of the goals of ConceptQL is to make it easy to assemble fairly complex queries without having to roll up our sleeves and write raw SQL. To accommodate this complexity, ConceptQL itself has some complexities of its own. That said, we believe ConceptQL will help researchers define, hone, and share their research algorithms.
48
-
49
- ## Try Before You Buy
50
-
51
- If you'd like to interact with ConceptQL a bit before deciding to dive in, head over to the [ConceptQL Sandbox](http://sandbox.cohortjigsaw.com) for an online demonstration of the language and its features.
49
+ As stated above, one of the goals of ConceptQL is to make it easy to assemble fairly complex queries without having to roll up our sleeves and write raw SQL. We believe ConceptQL will help researchers define, hone, and share their research algorithms.
52
50
 
53
51
  ## Requirements
54
52
 
55
- ConceptQL is in an early-alpha state. For now it is limited to working with [OMOP CDM](http://omop.org/CDM)-structured data stored in the [PostgreSQL](http://www.postgresql.org/) database. It has been tested under [Ubuntu Linux](http://www.ubuntu.com/) and Mac OS X 10.8+. The interpreter is written in Ruby and theoretically should be platform independent, but your mileage may vary.
56
-
57
- Specifically, ConceptQL needs:
58
-
59
- - Ruby 2.0+
60
- - PostgresQL 9.3+
61
- - Ruby's [Bundler](http://bundler.io/) gem
62
- - A PostgreSQL database with
63
- - OMOP CDM-structured data stored in the public schema
64
- - The OMOP Vocabularies stored in a schema named 'vocabulary'
65
- - You may want to use [loadmop](http://github.com/outcomesinsights/loadmop) to quickly create the OMOP vocabulary schema
66
-
67
- ## Installation
68
-
69
- Add this line to your application's Gemfile:
70
-
71
- gem 'conceptql'
72
-
73
- And then execute:
74
-
75
- bundle
76
-
77
- Or install it yourself as:
78
-
79
- gem install conceptql
80
-
81
- ## Usage
82
-
83
- ConceptQL comes with a [Thor](http://whatisthor.com/)-based command-line program: `conceptql`
84
-
85
- `conceptql` allows you to translate a ConceptQL statement into a SQL statement or a graph depicting the ConceptQL statement.
86
-
87
- `conceptql` will print a basic help menu for each command if you run `conceptql`
88
-
89
- ## Writing Your Own ConceptQL
90
-
91
- Right now, the only way to create a new ConceptQL statement is to write it out by hand in either Ruby, JSON, or YAML.
92
-
93
- If you're feeling bold, feel free to try your hand at authoring a ConceptQL statement.
94
-
95
- ## Testing
96
-
97
- ### Setup
98
-
99
- In order to run the tests for ConceptQL, you first have to create a database and load the OMOP vocabularies into it. You can use [loadmop](https://github.com/outcomesinsights/loadmop/tree/develop) do to so.
100
-
101
- Follow the instructions in [loadmop](https://github.com/outcomesinsights/loadmop/#preparation) to setup the vocabulary files correctly.
102
-
103
- After loading the vocabulary data file into the database,
104
- create an .env file in the root of the conceptql directory,
105
- similar or identical to the one used for loadmop. Then
106
- run `rake test_db_setup`. This will load the ConceptQL test
107
- data into the database. This only needs to be done once, not
108
- every time you run the tests.
109
-
110
- ### Running
111
-
112
- If any of the CSV files in `test/data` has been updated since you
113
- last updated the database, you should run `rake test_db_teardown test_db_setup`
114
- to reset the data in the database. Updates to the CSV files in
115
- `test/data` should be infrequent.
116
-
117
- After the test database has been setup, you can run the tests
118
- using `rake`, as the default task is set to run the tests.
119
-
120
- ## Contributing
53
+ ConceptQL works best with data stored in the [GDM](https://github.com/outcomesinsights/generalized_data_model#contexts) using [PostgreSQL](http://www.postgresql.org/) as the RDBMS engine. It has been tested under [Ubuntu Linux](http://www.ubuntu.com/). The interpreter is written in Ruby and theoretically should be platform independent, but your mileage may vary.
121
54
 
122
- 1. Fork it ( [http://github.com/outcomesinsights/conceptql/fork](http://github.com/outcomesinsights/conceptql/fork) )
123
- 1. Create your feature branch (`git checkout -b my-new-feature`)
124
- 1. Commit your changes (`git commit -am 'Add some feature'`)
125
- 1. Push to the branch (`git push origin my-new-feature`)
126
- 1. Create new Pull Request
55
+ Specifically, ConceptQL is tested against:
127
56
 
128
- Or, use the [conceptql-dev-box](https://github.com/outcomesinsights/conceptql-dev-box) to get yourself setup and hack on ConceptQL that way.
57
+ - Ruby 3.2
58
+ - PostgresQL 14
129
59
 
130
60
  ## Thanks
131
61
 
132
62
  - [Outcomes Insights, Inc.](http://outins.com)
133
- - Many thanks for allowing me to release a portion of my work as Open Source Software!
134
- - [OMOP](http://omop.org)/[OHDSI](http://www.ohdsi.org/)
135
- - Thank you for providing a great [Common Data Model](http://omop.org/CDM) and fantastic set of standardized [Vocabularies](http://omop.org/Vocabularies) upon which ConceptQL rests.
63
+ - Many thanks for allowing me to release a portion of my work as Open Source Software!
64
+ - [OHDSI](http://www.ohdsi.org/)
65
+ - Thank you for providing the original inspiration for ConceptQL.
136
66
  - [Jeremy Evans](http://code.jeremyevans.net/)
137
- - Thank you for the great contributions, ideas, and commits.
67
+ - Thank you for the great contributions, ideas, and commits.
data/bin/conceptql CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require_relative '../lib/conceptql/cli.rb'
4
+ require_relative '../lib/conceptql/cli'
4
5
 
5
6
  ConceptQL::CLI.start(ARGV)
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require_relative '../lib/conceptql/utils_cli'
5
+
6
+ ConceptQL::UtilsCLI.start(ARGV)
@@ -0,0 +1,4 @@
1
+ operator,vocabulary_id,domain,optional
2
+ CPT or HCPCS,CPT4,procedure_occurrence,
3
+ CPT or HCPCS,HCPCS,procedure_occurrence,
4
+ CPT or HCPCS,CPT4_HCPCS,procedure_occurrence,yes