hquery-patient-api 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. data/.gitignore +6 -0
  2. data/.travis.yml +17 -0
  3. data/Gemfile +14 -0
  4. data/LICENSE +57 -0
  5. data/README.md +34 -0
  6. data/Rakefile +41 -0
  7. data/VERSION +1 -0
  8. data/app/assets/javascripts/allergy.js.coffee +79 -0
  9. data/app/assets/javascripts/caregoal.js.coffee +18 -0
  10. data/app/assets/javascripts/condition.js.coffee +88 -0
  11. data/app/assets/javascripts/core.js.coffee +556 -0
  12. data/app/assets/javascripts/encounter.js.coffee +56 -0
  13. data/app/assets/javascripts/functionalstatus.js.coffee +48 -0
  14. data/app/assets/javascripts/immunization.js.coffee +115 -0
  15. data/app/assets/javascripts/languages.js.coffee +29 -0
  16. data/app/assets/javascripts/medicalequipment.js.coffee +28 -0
  17. data/app/assets/javascripts/medication.js.coffee +280 -0
  18. data/app/assets/javascripts/patient.js.coffee +302 -0
  19. data/app/assets/javascripts/pregnancy.js.coffee +24 -0
  20. data/app/assets/javascripts/procedure.js.coffee +28 -0
  21. data/app/assets/javascripts/provider.js.coffee +55 -0
  22. data/app/assets/javascripts/result.js.coffee +43 -0
  23. data/app/assets/javascripts/socialhistory.js.coffee +40 -0
  24. data/doc/jsdoc-toolkit/README.txt +183 -0
  25. data/doc/jsdoc-toolkit/app/frame.js +33 -0
  26. data/doc/jsdoc-toolkit/app/frame/Chain.js +102 -0
  27. data/doc/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  28. data/doc/jsdoc-toolkit/app/frame/Hash.js +84 -0
  29. data/doc/jsdoc-toolkit/app/frame/Link.js +173 -0
  30. data/doc/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  31. data/doc/jsdoc-toolkit/app/frame/Opt.js +134 -0
  32. data/doc/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  33. data/doc/jsdoc-toolkit/app/frame/String.js +93 -0
  34. data/doc/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  35. data/doc/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  36. data/doc/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  37. data/doc/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  38. data/doc/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  39. data/doc/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  40. data/doc/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
  41. data/doc/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
  42. data/doc/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +294 -0
  43. data/doc/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +140 -0
  44. data/doc/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  45. data/doc/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  46. data/doc/jsdoc-toolkit/app/lib/JSDOC/Parser.js +146 -0
  47. data/doc/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  48. data/doc/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +644 -0
  49. data/doc/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +243 -0
  50. data/doc/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  51. data/doc/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  52. data/doc/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  53. data/doc/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  54. data/doc/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  55. data/doc/jsdoc-toolkit/app/lib/JSDOC/Walker.js +507 -0
  56. data/doc/jsdoc-toolkit/app/main.js +111 -0
  57. data/doc/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  58. data/doc/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  59. data/doc/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  60. data/doc/jsdoc-toolkit/app/plugins/publishSrcHilite.js +62 -0
  61. data/doc/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
  62. data/doc/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  63. data/doc/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
  64. data/doc/jsdoc-toolkit/app/run.js +348 -0
  65. data/doc/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  66. data/doc/jsdoc-toolkit/app/t/runner.js +13 -0
  67. data/doc/jsdoc-toolkit/app/test.js +342 -0
  68. data/doc/jsdoc-toolkit/app/test/addon.js +24 -0
  69. data/doc/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  70. data/doc/jsdoc-toolkit/app/test/augments.js +31 -0
  71. data/doc/jsdoc-toolkit/app/test/augments2.js +26 -0
  72. data/doc/jsdoc-toolkit/app/test/borrows.js +46 -0
  73. data/doc/jsdoc-toolkit/app/test/borrows2.js +23 -0
  74. data/doc/jsdoc-toolkit/app/test/config.js +22 -0
  75. data/doc/jsdoc-toolkit/app/test/constructs.js +18 -0
  76. data/doc/jsdoc-toolkit/app/test/encoding.js +10 -0
  77. data/doc/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  78. data/doc/jsdoc-toolkit/app/test/event.js +54 -0
  79. data/doc/jsdoc-toolkit/app/test/exports.js +14 -0
  80. data/doc/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  81. data/doc/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  82. data/doc/jsdoc-toolkit/app/test/global.js +13 -0
  83. data/doc/jsdoc-toolkit/app/test/globals.js +25 -0
  84. data/doc/jsdoc-toolkit/app/test/ignore.js +10 -0
  85. data/doc/jsdoc-toolkit/app/test/inner.js +16 -0
  86. data/doc/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  87. data/doc/jsdoc-toolkit/app/test/lend.js +33 -0
  88. data/doc/jsdoc-toolkit/app/test/memberof.js +19 -0
  89. data/doc/jsdoc-toolkit/app/test/memberof2.js +38 -0
  90. data/doc/jsdoc-toolkit/app/test/memberof3.js +33 -0
  91. data/doc/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  92. data/doc/jsdoc-toolkit/app/test/module.js +17 -0
  93. data/doc/jsdoc-toolkit/app/test/multi_methods.js +25 -0
  94. data/doc/jsdoc-toolkit/app/test/name.js +19 -0
  95. data/doc/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  96. data/doc/jsdoc-toolkit/app/test/nocode.js +13 -0
  97. data/doc/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  98. data/doc/jsdoc-toolkit/app/test/overview.js +20 -0
  99. data/doc/jsdoc-toolkit/app/test/param_inline.js +37 -0
  100. data/doc/jsdoc-toolkit/app/test/params_optional.js +8 -0
  101. data/doc/jsdoc-toolkit/app/test/prototype.js +17 -0
  102. data/doc/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  103. data/doc/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  104. data/doc/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  105. data/doc/jsdoc-toolkit/app/test/public.js +10 -0
  106. data/doc/jsdoc-toolkit/app/test/scripts/code.js +5 -0
  107. data/doc/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
  108. data/doc/jsdoc-toolkit/app/test/shared.js +42 -0
  109. data/doc/jsdoc-toolkit/app/test/shared2.js +2 -0
  110. data/doc/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  111. data/doc/jsdoc-toolkit/app/test/static_this.js +13 -0
  112. data/doc/jsdoc-toolkit/app/test/synonyms.js +31 -0
  113. data/doc/jsdoc-toolkit/app/test/tosource.js +23 -0
  114. data/doc/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  115. data/doc/jsdoc-toolkit/conf/sample.conf +31 -0
  116. data/doc/jsdoc-toolkit/java/build.xml +36 -0
  117. data/doc/jsdoc-toolkit/java/build_1.4.xml +36 -0
  118. data/doc/jsdoc-toolkit/java/classes/js.jar +0 -0
  119. data/doc/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  120. data/doc/jsdoc-toolkit/java/src/JsRun.java +21 -0
  121. data/doc/jsdoc-toolkit/jsdebug.jar +0 -0
  122. data/doc/jsdoc-toolkit/jsrun.jar +0 -0
  123. data/doc/jsdoc-toolkit/jsrun.sh +52 -0
  124. data/doc/jsdoc-toolkit/out/jsdoc/files.html +218 -0
  125. data/doc/jsdoc-toolkit/out/jsdoc/index.html +218 -0
  126. data/doc/jsdoc-toolkit/out/jsdoc/symbols/Patient.html +546 -0
  127. data/doc/jsdoc-toolkit/out/jsdoc/symbols/_global_.html +463 -0
  128. data/doc/jsdoc-toolkit/out/jsdoc/symbols/src/tmp_patient.js.html +89 -0
  129. data/doc/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  130. data/doc/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  131. data/doc/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
  132. data/doc/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  133. data/doc/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
  134. data/doc/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  135. data/doc/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  136. data/doc/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  137. data/doc/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  138. data/hquery_patientapi.gemspec +14 -0
  139. data/lib/hquery-patient-api.rb +4 -0
  140. data/lib/hquery/engine.rb +4 -0
  141. data/lib/hquery/generator.rb +18 -0
  142. data/test/fixtures/patient/barry_berry.json +466 -0
  143. data/test/test_helper.rb +25 -0
  144. data/test/unit/patient_api_test.rb +178 -0
  145. metadata +193 -0
@@ -0,0 +1,25 @@
1
+ require 'bundler/setup'
2
+ require 'test/unit'
3
+ require 'tilt'
4
+ require 'coffee_script'
5
+ require 'sprockets'
6
+ require 'execjs'
7
+ require 'turn'
8
+
9
+ Tilt::CoffeeScriptTemplate.default_bare=true
10
+ class QueryExecutor
11
+ @@ctx = nil
12
+
13
+ def self.ctx
14
+ unless @@ctx
15
+ @@ctx = Sprockets::Environment.new(File.expand_path("../../", __FILE__))
16
+ @@ctx.append_path "app/assets/javascripts"
17
+ end
18
+ @@ctx
19
+ end
20
+
21
+ def self.patient_api_javascript
22
+ self.ctx.find_asset('patient')
23
+ end
24
+
25
+ end
@@ -0,0 +1,178 @@
1
+ require File.expand_path("../../test_helper", __FILE__)
2
+
3
+ class PatientApiTest < Test::Unit::TestCase
4
+ def setup
5
+ patient_api = QueryExecutor.patient_api_javascript.to_s
6
+ fixture_json = File.read('test/fixtures/patient/barry_berry.json')
7
+ initialize_patient = 'var patient = new hQuery.Patient(barry);'
8
+ date = Time.new(2010,1,1)
9
+ initialize_date = "var sampleDate = new Date(#{date.to_i*1000});"
10
+ @context = ExecJS.compile(patient_api + "\nvar barry = " + fixture_json + ";\n" + initialize_patient + "\n" + initialize_date)
11
+ end
12
+
13
+ def test_demographics
14
+ assert_equal 'Barry', @context.eval('patient.given()')
15
+ assert_equal 'Berry', @context.eval('patient.last()')
16
+ assert_equal 'Barry B. Berry', @context.eval('patient.name()')
17
+ assert_equal 1962, @context.eval('patient.birthtime().getFullYear()')
18
+ assert_equal 'M', @context.eval('patient.gender()')
19
+ assert_equal 49, @context.eval('patient.age(new Date(2012,1,10))').to_i
20
+ assert_equal 1, @context.eval('patient.addresses().length').to_i
21
+ assert_equal 'MA', @context.eval('patient.addresses()[0].state()')
22
+ assert_equal 'M', @context.eval('patient.maritalStatus().code()')
23
+ assert_equal '1013', @context.eval('patient.religiousAffiliation().code()')
24
+ assert_equal '2131-1', @context.eval('patient.race().code()')
25
+ assert_equal '2186-5', @context.eval('patient.ethnicity().code()')
26
+ assert_equal 'DC', @context.eval('patient.birthPlace().state()')
27
+ assert_equal 'Washington', @context.eval('patient.birthPlace().city()')
28
+ assert_equal 'N', @context.eval('patient.confidentiality().code()')
29
+ assert_equal 'General Hospital', @context.eval('patient.custodian().organizationName()')
30
+ assert_equal 2005, @context.eval('patient.supports().supportDate().hi().getFullYear()')
31
+ assert_equal 2005, @context.eval('patient.provider().careProvisionDateRange().hi().getFullYear()')
32
+ assert_equal 'Mary', @context.eval('patient.provider().providerEntity().given()')
33
+ assert_equal 'Care', @context.eval('patient.provider().providerEntity().last()')
34
+ assert_equal 'en', @context.eval('patient.languages()[0].type()[0].code()')
35
+ assert_equal true, @context.eval('patient.expired()')
36
+ assert_equal false, @context.eval('patient.clinicalTrialParticipant()')
37
+ end
38
+
39
+ def test_encounters
40
+ assert_equal 2, @context.eval('patient.encounters().length')
41
+ assert_equal '99201', @context.eval('patient.encounters()[0].type()[0].code()')
42
+ assert_equal 'CPT', @context.eval('patient.encounters()[0].type()[0].codeSystemName()')
43
+ assert_equal 'OP12345', @context.eval('patient.encounters()[0].id')
44
+ assert_equal 'Outpatient encounter', @context.eval('patient.encounters()[0].freeTextType()')
45
+ assert_equal 'Home', @context.eval('patient.encounters()[0].dischargeDisp()')
46
+ assert_equal '04', @context.eval('patient.encounters()[0].admitType().code()')
47
+ assert_equal 'General Hospital', @context.eval('patient.encounters()[0].performer().organization().organizationName()')
48
+ assert_equal 2005, @context.eval('patient.encounters()[0].encounterDuration().low().getFullYear()')
49
+ assert_equal 2011, @context.eval('patient.encounters()[0].encounterDuration().hi().getFullYear()')
50
+ assert_equal 'PCP referred', @context.eval('patient.encounters()[0].reasonForVisit().freeTextType()')
51
+ assert_equal 'CPT', @context.eval('patient.encounters()[0].reasonForVisit().type()[0].codeSystemName()')
52
+ assert_equal 'HL7 Healthcare Service Location', @context.eval('patient.encounters()[0].facility().codeSystemName()')
53
+ assert_equal '1155-1', @context.eval('patient.encounters()[0].facility().code()')
54
+ assert_equal 'General Hospital', @context.eval('patient.encounters()[0].facility().name()')
55
+ end
56
+
57
+ def test_procedures
58
+ assert_equal 1, @context.eval('patient.procedures().length')
59
+ assert_equal '44388', @context.eval('patient.procedures()[0].type()[0].code()')
60
+ assert_equal 'CPT', @context.eval('patient.procedures()[0].type()[0].codeSystemName()')
61
+ assert_equal 'Colonscopy', @context.eval('patient.procedures()[0].freeTextType()')
62
+ assert @context.eval('patient.procedures()[0].includesCodeFrom({"CPT": ["44388"]})')
63
+ assert_equal 1, @context.eval('patient.procedures().match({"CPT": ["44388"]}).length')
64
+ assert_equal 0, @context.eval('patient.procedures().match({"CPT": ["44388"]}, sampleDate).length')
65
+ assert_equal 'SNOMED-CT', @context.eval('patient.procedures()[0].site().codeSystemName()')
66
+ assert_equal '71854001', @context.eval('patient.procedures()[0].site().code()')
67
+ assert_equal 'Bobby', @context.eval('patient.procedures()[0].performer().person().given()')
68
+ assert_equal 'Tables', @context.eval('patient.procedures()[0].performer().person().last()')
69
+ end
70
+
71
+ def test_vital_signs
72
+ assert_equal 2, @context.eval('patient.vitalSigns().length')
73
+ assert_equal '105539002', @context.eval('patient.vitalSigns()[0].type()[0].code()')
74
+ assert_equal 'SNOMED-CT', @context.eval('patient.vitalSigns()[0].type()[0].codeSystemName()')
75
+ assert_equal 'completed', @context.eval('patient.vitalSigns()[0].status()')
76
+ assert_equal 'completed', @context.eval('patient.vitalSigns()[0].statusCode()["HL7 ActStatus"][0]')
77
+ assert_equal 132, @context.eval('patient.vitalSigns()[1].values()[0].scalar()')
78
+ assert_equal '8480-6', @context.eval('patient.vitalSigns()[1].resultType()[0].code()')
79
+ assert_equal 'BP taken sitting', @context.eval('patient.vitalSigns()[1].comment()')
80
+ end
81
+
82
+ def test_results
83
+ assert_equal 1, @context.eval('patient.results().length')
84
+ assert_equal '104150001', @context.eval('patient.results()[0].type()[0].code()')
85
+ assert_equal 'SNOMED-CT', @context.eval('patient.results()[0].type()[0].codeSystemName()')
86
+ assert_equal 'SNOMED-CT', @context.eval('patient.results()[0].resultType()[0].codeSystemName()')
87
+ assert_equal 'completed', @context.eval('patient.results()[0].status()')
88
+ assert_equal 'Negative', @context.eval('patient.results()[0].comment()')
89
+ end
90
+
91
+ def test_conditions
92
+ assert_equal 2, @context.eval('patient.conditions().length')
93
+ assert @context.eval('patient.conditions().match({"SNOMED-CT": ["105539002"]}).length != 0')
94
+ assert @context.eval('patient.conditions().match({"SNOMED-CT": ["109838007"]}).length != 0')
95
+ assert_equal 20, @context.eval('patient.conditions()[1].ageAtOnset()')
96
+ assert_equal '55561003', @context.eval('patient.conditions()[1].problemStatus().code()')
97
+ assert_equal '371924009', @context.eval('patient.conditions()[1].severity().code()')
98
+ assert_equal 1, @context.eval('patient.conditions()[1].diagnosisPriority()')
99
+ assert_equal '8319008', @context.eval('patient.conditions()[1].ordinality().code()')
100
+ end
101
+
102
+ def test_medications
103
+ assert_equal 1, @context.eval('patient.medications().length')
104
+ assert_equal 24, @context.eval('patient.medications()[0].administrationTiming().period().value()')
105
+ assert @context.eval('patient.medications()[0].administrationTiming().institutionSpecified()')
106
+ assert_equal 'tablet', @context.eval('patient.medications()[0].dose().unit()')
107
+ assert_equal 'Multivitamin', @context.eval('patient.medications()[0].medicationInformation().freeTextProductName()')
108
+ assert_equal 1, @context.eval('patient.medications().match({"RxNorm": ["89905"]}).length')
109
+ assert_equal 'C38288', @context.eval('patient.medications()[0].route().code()')
110
+ assert_equal 30, @context.eval('patient.medications()[0].fulfillmentHistory()[0].quantityDispensed().value()')
111
+ assert @context.eval('patient.medications()[0].typeOfMedication().isOverTheCounter()')
112
+ assert @context.eval('patient.medications()[0].statusOfMedication().isActive()')
113
+ assert_equal 30, @context.eval('patient.medications()[0].orderInformation()[0].quantityOrdered().value()')
114
+ assert_equal 20, @context.eval('patient.medications()[0].orderInformation()[0].fills()')
115
+ assert_equal 3, @context.eval('patient.medications()[0].cumulativeMedicationDuration()["scalar"]')
116
+ end
117
+
118
+ def test_immunizations
119
+ assert_equal 3, @context.eval('patient.immunizations().length')
120
+ assert_equal 2, @context.eval('patient.immunizations().withoutNegation().length')
121
+ assert_equal 1, @context.eval('patient.immunizations().withNegation().length')
122
+ assert_equal 1, @context.eval('patient.immunizations().withNegation({"HL7 No Immunization Reason":["IMMUNE"]}).length')
123
+ assert_equal 0, @context.eval('patient.immunizations().withNegation({"HL7 No Immunization Reason":["OSTOCK"]}).length')
124
+ assert_equal 1, @context.eval('patient.immunizations().match({"CVX": ["03"]}).length')
125
+ assert_equal 1, @context.eval('patient.immunizations().match({"CVX": ["04"]}).length')
126
+ assert_equal 2, @context.eval('patient.immunizations().match({"CVX": ["04"]},null,null,true).length')
127
+ assert_equal 'MMR', @context.eval('patient.immunizations()[0].medicationInformation().freeTextProductName()')
128
+ assert_equal 2, @context.eval('patient.immunizations()[0].medicationSeriesNumber().value()')
129
+ assert_equal 'vaccine', @context.eval('patient.immunizations()[0].comment()')
130
+ assert @context.eval('patient.immunizations()[1].refusalInd()')
131
+ assert @context.eval('patient.immunizations()[1].refusalReason().isImmune()')
132
+ assert @context.eval('patient.immunizations()[1].negationInd()')
133
+ assert_equal 'IMMUNE', @context.eval('patient.immunizations()[1].negationReason().code()')
134
+ assert_equal 'FirstName', @context.eval('patient.immunizations()[1].performer().person().given()')
135
+ assert_equal 'LastName', @context.eval('patient.immunizations()[1].performer().person().last()')
136
+ assert_equal 1, @context.eval('patient.immunizations()[1].performer().person().addresses().length')
137
+ assert_equal '100 Bureau Drive', @context.eval('patient.immunizations()[1].performer().person().addresses()[0].street()[0]')
138
+ assert_equal 'Gaithersburg', @context.eval('patient.immunizations()[1].performer().person().addresses()[0].city()')
139
+ assert_equal 'MD', @context.eval('patient.immunizations()[1].performer().person().addresses()[0].state()')
140
+ assert_equal '20899', @context.eval('patient.immunizations()[1].performer().person().addresses()[0].postalCode()')
141
+ end
142
+
143
+ def test_allergies
144
+ assert_equal 1, @context.eval('patient.allergies().length')
145
+ assert_equal 'Carries Epipen',@context.eval('patient.allergies()[0].comment()')
146
+ assert_equal 1, @context.eval('patient.allergies().match({"SNOMED-CT": ["39579001"]}).length')
147
+ assert_equal 'Anaphalactic reaction to peanuts', @context.eval('patient.allergies()[0].freeTextType()')
148
+ assert_equal '414285001', @context.eval('patient.allergies()[0].reaction().code()')
149
+ assert_equal '371924009', @context.eval('patient.allergies()[0].severity().code()')
150
+ assert_equal 1269762692000, @context.eval('patient.allergies()[0].date().getTime()')
151
+ assert_equal 1269762692000, @context.eval('patient.allergies()[0].timeStamp().getTime()')
152
+ assert_equal 1269762691000, @context.eval('patient.allergies()[0].startDate().getTime()')
153
+ assert_equal 1269762693000, @context.eval('patient.allergies()[0].endDate().getTime()')
154
+ assert @context.eval('patient.allergies()[0].isTimeRange()')
155
+ end
156
+
157
+ def test_pregnancies
158
+ assert_equal 1, @context.eval('patient.pregnancies().length')
159
+ assert_equal 1, @context.eval('patient.pregnancies().match({"SNOMED-CT": ["77386006"]}).length')
160
+ end
161
+
162
+ def test_socialhistory
163
+ assert_equal 1, @context.eval('patient.socialHistories().length')
164
+ assert_equal 1, @context.eval('patient.socialHistories().match({"SNOMED-CT": ["229819007"]}).length')
165
+ end
166
+
167
+ def test_functional_status
168
+ assert_equal 1, @context.eval('patient.functionalStatuses().length')
169
+ assert_equal 'result', @context.eval('patient.functionalStatuses()[0].type()')
170
+ assert_equal 'patient reported', @context.eval('patient.functionalStatuses()[0].source().code()')
171
+ end
172
+
173
+ def test_medical_equipment
174
+ assert_equal 1, @context.eval('patient.medicalEquipment().length')
175
+ assert_equal '13648007', @context.eval('patient.medicalEquipment()[0].anatomicalStructure().code()')
176
+ end
177
+
178
+ end
metadata ADDED
@@ -0,0 +1,193 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hquery-patient-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Marc Hadley
9
+ - Andy Gregorowicz
10
+ - Rob Dingwell
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2012-11-01 00:00:00.000000000 Z
15
+ dependencies: []
16
+ description: A javascript library abstraction for dealing with patients in hQuery
17
+ map reduce functions
18
+ email: talk@hquery.org
19
+ executables: []
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - .gitignore
24
+ - .travis.yml
25
+ - Gemfile
26
+ - LICENSE
27
+ - README.md
28
+ - Rakefile
29
+ - VERSION
30
+ - app/assets/javascripts/allergy.js.coffee
31
+ - app/assets/javascripts/caregoal.js.coffee
32
+ - app/assets/javascripts/condition.js.coffee
33
+ - app/assets/javascripts/core.js.coffee
34
+ - app/assets/javascripts/encounter.js.coffee
35
+ - app/assets/javascripts/functionalstatus.js.coffee
36
+ - app/assets/javascripts/immunization.js.coffee
37
+ - app/assets/javascripts/languages.js.coffee
38
+ - app/assets/javascripts/medicalequipment.js.coffee
39
+ - app/assets/javascripts/medication.js.coffee
40
+ - app/assets/javascripts/patient.js.coffee
41
+ - app/assets/javascripts/pregnancy.js.coffee
42
+ - app/assets/javascripts/procedure.js.coffee
43
+ - app/assets/javascripts/provider.js.coffee
44
+ - app/assets/javascripts/result.js.coffee
45
+ - app/assets/javascripts/socialhistory.js.coffee
46
+ - doc/jsdoc-toolkit/README.txt
47
+ - doc/jsdoc-toolkit/app/frame.js
48
+ - doc/jsdoc-toolkit/app/frame/Chain.js
49
+ - doc/jsdoc-toolkit/app/frame/Dumper.js
50
+ - doc/jsdoc-toolkit/app/frame/Hash.js
51
+ - doc/jsdoc-toolkit/app/frame/Link.js
52
+ - doc/jsdoc-toolkit/app/frame/Namespace.js
53
+ - doc/jsdoc-toolkit/app/frame/Opt.js
54
+ - doc/jsdoc-toolkit/app/frame/Reflection.js
55
+ - doc/jsdoc-toolkit/app/frame/String.js
56
+ - doc/jsdoc-toolkit/app/frame/Testrun.js
57
+ - doc/jsdoc-toolkit/app/handlers/FOODOC.js
58
+ - doc/jsdoc-toolkit/app/handlers/XMLDOC.js
59
+ - doc/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js
60
+ - doc/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js
61
+ - doc/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js
62
+ - doc/jsdoc-toolkit/app/lib/JSDOC.js
63
+ - doc/jsdoc-toolkit/app/lib/JSDOC/DocComment.js
64
+ - doc/jsdoc-toolkit/app/lib/JSDOC/DocTag.js
65
+ - doc/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js
66
+ - doc/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js
67
+ - doc/jsdoc-toolkit/app/lib/JSDOC/Lang.js
68
+ - doc/jsdoc-toolkit/app/lib/JSDOC/Parser.js
69
+ - doc/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js
70
+ - doc/jsdoc-toolkit/app/lib/JSDOC/Symbol.js
71
+ - doc/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js
72
+ - doc/jsdoc-toolkit/app/lib/JSDOC/TextStream.js
73
+ - doc/jsdoc-toolkit/app/lib/JSDOC/Token.js
74
+ - doc/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js
75
+ - doc/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js
76
+ - doc/jsdoc-toolkit/app/lib/JSDOC/Util.js
77
+ - doc/jsdoc-toolkit/app/lib/JSDOC/Walker.js
78
+ - doc/jsdoc-toolkit/app/main.js
79
+ - doc/jsdoc-toolkit/app/plugins/commentSrcJson.js
80
+ - doc/jsdoc-toolkit/app/plugins/frameworkPrototype.js
81
+ - doc/jsdoc-toolkit/app/plugins/functionCall.js
82
+ - doc/jsdoc-toolkit/app/plugins/publishSrcHilite.js
83
+ - doc/jsdoc-toolkit/app/plugins/symbolLink.js
84
+ - doc/jsdoc-toolkit/app/plugins/tagParamConfig.js
85
+ - doc/jsdoc-toolkit/app/plugins/tagSynonyms.js
86
+ - doc/jsdoc-toolkit/app/run.js
87
+ - doc/jsdoc-toolkit/app/t/TestDoc.js
88
+ - doc/jsdoc-toolkit/app/t/runner.js
89
+ - doc/jsdoc-toolkit/app/test.js
90
+ - doc/jsdoc-toolkit/app/test/addon.js
91
+ - doc/jsdoc-toolkit/app/test/anon_inner.js
92
+ - doc/jsdoc-toolkit/app/test/augments.js
93
+ - doc/jsdoc-toolkit/app/test/augments2.js
94
+ - doc/jsdoc-toolkit/app/test/borrows.js
95
+ - doc/jsdoc-toolkit/app/test/borrows2.js
96
+ - doc/jsdoc-toolkit/app/test/config.js
97
+ - doc/jsdoc-toolkit/app/test/constructs.js
98
+ - doc/jsdoc-toolkit/app/test/encoding.js
99
+ - doc/jsdoc-toolkit/app/test/encoding_other.js
100
+ - doc/jsdoc-toolkit/app/test/event.js
101
+ - doc/jsdoc-toolkit/app/test/exports.js
102
+ - doc/jsdoc-toolkit/app/test/functions_anon.js
103
+ - doc/jsdoc-toolkit/app/test/functions_nested.js
104
+ - doc/jsdoc-toolkit/app/test/global.js
105
+ - doc/jsdoc-toolkit/app/test/globals.js
106
+ - doc/jsdoc-toolkit/app/test/ignore.js
107
+ - doc/jsdoc-toolkit/app/test/inner.js
108
+ - doc/jsdoc-toolkit/app/test/jsdoc_test.js
109
+ - doc/jsdoc-toolkit/app/test/lend.js
110
+ - doc/jsdoc-toolkit/app/test/memberof.js
111
+ - doc/jsdoc-toolkit/app/test/memberof2.js
112
+ - doc/jsdoc-toolkit/app/test/memberof3.js
113
+ - doc/jsdoc-toolkit/app/test/memberof_constructor.js
114
+ - doc/jsdoc-toolkit/app/test/module.js
115
+ - doc/jsdoc-toolkit/app/test/multi_methods.js
116
+ - doc/jsdoc-toolkit/app/test/name.js
117
+ - doc/jsdoc-toolkit/app/test/namespace_nested.js
118
+ - doc/jsdoc-toolkit/app/test/nocode.js
119
+ - doc/jsdoc-toolkit/app/test/oblit_anon.js
120
+ - doc/jsdoc-toolkit/app/test/overview.js
121
+ - doc/jsdoc-toolkit/app/test/param_inline.js
122
+ - doc/jsdoc-toolkit/app/test/params_optional.js
123
+ - doc/jsdoc-toolkit/app/test/prototype.js
124
+ - doc/jsdoc-toolkit/app/test/prototype_nested.js
125
+ - doc/jsdoc-toolkit/app/test/prototype_oblit.js
126
+ - doc/jsdoc-toolkit/app/test/prototype_oblit_constructor.js
127
+ - doc/jsdoc-toolkit/app/test/public.js
128
+ - doc/jsdoc-toolkit/app/test/scripts/code.js
129
+ - doc/jsdoc-toolkit/app/test/scripts/notcode.txt
130
+ - doc/jsdoc-toolkit/app/test/shared.js
131
+ - doc/jsdoc-toolkit/app/test/shared2.js
132
+ - doc/jsdoc-toolkit/app/test/shortcuts.js
133
+ - doc/jsdoc-toolkit/app/test/static_this.js
134
+ - doc/jsdoc-toolkit/app/test/synonyms.js
135
+ - doc/jsdoc-toolkit/app/test/tosource.js
136
+ - doc/jsdoc-toolkit/app/test/variable_redefine.js
137
+ - doc/jsdoc-toolkit/conf/sample.conf
138
+ - doc/jsdoc-toolkit/java/build.xml
139
+ - doc/jsdoc-toolkit/java/build_1.4.xml
140
+ - doc/jsdoc-toolkit/java/classes/js.jar
141
+ - doc/jsdoc-toolkit/java/src/JsDebugRun.java
142
+ - doc/jsdoc-toolkit/java/src/JsRun.java
143
+ - doc/jsdoc-toolkit/jsdebug.jar
144
+ - doc/jsdoc-toolkit/jsrun.jar
145
+ - doc/jsdoc-toolkit/jsrun.sh
146
+ - doc/jsdoc-toolkit/out/jsdoc/files.html
147
+ - doc/jsdoc-toolkit/out/jsdoc/index.html
148
+ - doc/jsdoc-toolkit/out/jsdoc/symbols/Patient.html
149
+ - doc/jsdoc-toolkit/out/jsdoc/symbols/_global_.html
150
+ - doc/jsdoc-toolkit/out/jsdoc/symbols/src/tmp_patient.js.html
151
+ - doc/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl
152
+ - doc/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl
153
+ - doc/jsdoc-toolkit/templates/jsdoc/class.tmpl
154
+ - doc/jsdoc-toolkit/templates/jsdoc/index.tmpl
155
+ - doc/jsdoc-toolkit/templates/jsdoc/publish.js
156
+ - doc/jsdoc-toolkit/templates/jsdoc/static/default.css
157
+ - doc/jsdoc-toolkit/templates/jsdoc/static/header.html
158
+ - doc/jsdoc-toolkit/templates/jsdoc/static/index.html
159
+ - doc/jsdoc-toolkit/templates/jsdoc/symbol.tmpl
160
+ - hquery_patientapi.gemspec
161
+ - lib/hquery-patient-api.rb
162
+ - lib/hquery/engine.rb
163
+ - lib/hquery/generator.rb
164
+ - test/fixtures/patient/barry_berry.json
165
+ - test/test_helper.rb
166
+ - test/unit/patient_api_test.rb
167
+ homepage: http://github.com/hquery/patient_api
168
+ licenses: []
169
+ post_install_message:
170
+ rdoc_options: []
171
+ require_paths:
172
+ - lib
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ! '>='
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
+ none: false
181
+ requirements:
182
+ - - ! '>='
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubyforge_project:
187
+ rubygems_version: 1.8.24
188
+ signing_key:
189
+ specification_version: 3
190
+ summary: A javascript library abstraction for dealing with patients in hQuery map
191
+ reduce functions
192
+ test_files: []
193
+ has_rdoc: