hquery-patient-api 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/.travis.yml +17 -0
- data/Gemfile +14 -0
- data/LICENSE +57 -0
- data/README.md +34 -0
- data/Rakefile +41 -0
- data/VERSION +1 -0
- data/app/assets/javascripts/allergy.js.coffee +79 -0
- data/app/assets/javascripts/caregoal.js.coffee +18 -0
- data/app/assets/javascripts/condition.js.coffee +88 -0
- data/app/assets/javascripts/core.js.coffee +556 -0
- data/app/assets/javascripts/encounter.js.coffee +56 -0
- data/app/assets/javascripts/functionalstatus.js.coffee +48 -0
- data/app/assets/javascripts/immunization.js.coffee +115 -0
- data/app/assets/javascripts/languages.js.coffee +29 -0
- data/app/assets/javascripts/medicalequipment.js.coffee +28 -0
- data/app/assets/javascripts/medication.js.coffee +280 -0
- data/app/assets/javascripts/patient.js.coffee +302 -0
- data/app/assets/javascripts/pregnancy.js.coffee +24 -0
- data/app/assets/javascripts/procedure.js.coffee +28 -0
- data/app/assets/javascripts/provider.js.coffee +55 -0
- data/app/assets/javascripts/result.js.coffee +43 -0
- data/app/assets/javascripts/socialhistory.js.coffee +40 -0
- data/doc/jsdoc-toolkit/README.txt +183 -0
- data/doc/jsdoc-toolkit/app/frame.js +33 -0
- data/doc/jsdoc-toolkit/app/frame/Chain.js +102 -0
- data/doc/jsdoc-toolkit/app/frame/Dumper.js +144 -0
- data/doc/jsdoc-toolkit/app/frame/Hash.js +84 -0
- data/doc/jsdoc-toolkit/app/frame/Link.js +173 -0
- data/doc/jsdoc-toolkit/app/frame/Namespace.js +10 -0
- data/doc/jsdoc-toolkit/app/frame/Opt.js +134 -0
- data/doc/jsdoc-toolkit/app/frame/Reflection.js +26 -0
- data/doc/jsdoc-toolkit/app/frame/String.js +93 -0
- data/doc/jsdoc-toolkit/app/frame/Testrun.js +129 -0
- data/doc/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
- data/doc/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
- data/doc/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
- data/doc/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
- data/doc/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +294 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +140 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/Parser.js +146 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +644 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +243 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
- data/doc/jsdoc-toolkit/app/lib/JSDOC/Walker.js +507 -0
- data/doc/jsdoc-toolkit/app/main.js +111 -0
- data/doc/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
- data/doc/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
- data/doc/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
- data/doc/jsdoc-toolkit/app/plugins/publishSrcHilite.js +62 -0
- data/doc/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
- data/doc/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
- data/doc/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
- data/doc/jsdoc-toolkit/app/run.js +348 -0
- data/doc/jsdoc-toolkit/app/t/TestDoc.js +144 -0
- data/doc/jsdoc-toolkit/app/t/runner.js +13 -0
- data/doc/jsdoc-toolkit/app/test.js +342 -0
- data/doc/jsdoc-toolkit/app/test/addon.js +24 -0
- data/doc/jsdoc-toolkit/app/test/anon_inner.js +14 -0
- data/doc/jsdoc-toolkit/app/test/augments.js +31 -0
- data/doc/jsdoc-toolkit/app/test/augments2.js +26 -0
- data/doc/jsdoc-toolkit/app/test/borrows.js +46 -0
- data/doc/jsdoc-toolkit/app/test/borrows2.js +23 -0
- data/doc/jsdoc-toolkit/app/test/config.js +22 -0
- data/doc/jsdoc-toolkit/app/test/constructs.js +18 -0
- data/doc/jsdoc-toolkit/app/test/encoding.js +10 -0
- data/doc/jsdoc-toolkit/app/test/encoding_other.js +12 -0
- data/doc/jsdoc-toolkit/app/test/event.js +54 -0
- data/doc/jsdoc-toolkit/app/test/exports.js +14 -0
- data/doc/jsdoc-toolkit/app/test/functions_anon.js +39 -0
- data/doc/jsdoc-toolkit/app/test/functions_nested.js +33 -0
- data/doc/jsdoc-toolkit/app/test/global.js +13 -0
- data/doc/jsdoc-toolkit/app/test/globals.js +25 -0
- data/doc/jsdoc-toolkit/app/test/ignore.js +10 -0
- data/doc/jsdoc-toolkit/app/test/inner.js +16 -0
- data/doc/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
- data/doc/jsdoc-toolkit/app/test/lend.js +33 -0
- data/doc/jsdoc-toolkit/app/test/memberof.js +19 -0
- data/doc/jsdoc-toolkit/app/test/memberof2.js +38 -0
- data/doc/jsdoc-toolkit/app/test/memberof3.js +33 -0
- data/doc/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
- data/doc/jsdoc-toolkit/app/test/module.js +17 -0
- data/doc/jsdoc-toolkit/app/test/multi_methods.js +25 -0
- data/doc/jsdoc-toolkit/app/test/name.js +19 -0
- data/doc/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
- data/doc/jsdoc-toolkit/app/test/nocode.js +13 -0
- data/doc/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
- data/doc/jsdoc-toolkit/app/test/overview.js +20 -0
- data/doc/jsdoc-toolkit/app/test/param_inline.js +37 -0
- data/doc/jsdoc-toolkit/app/test/params_optional.js +8 -0
- data/doc/jsdoc-toolkit/app/test/prototype.js +17 -0
- data/doc/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
- data/doc/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
- data/doc/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
- data/doc/jsdoc-toolkit/app/test/public.js +10 -0
- data/doc/jsdoc-toolkit/app/test/scripts/code.js +5 -0
- data/doc/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
- data/doc/jsdoc-toolkit/app/test/shared.js +42 -0
- data/doc/jsdoc-toolkit/app/test/shared2.js +2 -0
- data/doc/jsdoc-toolkit/app/test/shortcuts.js +22 -0
- data/doc/jsdoc-toolkit/app/test/static_this.js +13 -0
- data/doc/jsdoc-toolkit/app/test/synonyms.js +31 -0
- data/doc/jsdoc-toolkit/app/test/tosource.js +23 -0
- data/doc/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
- data/doc/jsdoc-toolkit/conf/sample.conf +31 -0
- data/doc/jsdoc-toolkit/java/build.xml +36 -0
- data/doc/jsdoc-toolkit/java/build_1.4.xml +36 -0
- data/doc/jsdoc-toolkit/java/classes/js.jar +0 -0
- data/doc/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
- data/doc/jsdoc-toolkit/java/src/JsRun.java +21 -0
- data/doc/jsdoc-toolkit/jsdebug.jar +0 -0
- data/doc/jsdoc-toolkit/jsrun.jar +0 -0
- data/doc/jsdoc-toolkit/jsrun.sh +52 -0
- data/doc/jsdoc-toolkit/out/jsdoc/files.html +218 -0
- data/doc/jsdoc-toolkit/out/jsdoc/index.html +218 -0
- data/doc/jsdoc-toolkit/out/jsdoc/symbols/Patient.html +546 -0
- data/doc/jsdoc-toolkit/out/jsdoc/symbols/_global_.html +463 -0
- data/doc/jsdoc-toolkit/out/jsdoc/symbols/src/tmp_patient.js.html +89 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
- data/doc/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
- data/hquery_patientapi.gemspec +14 -0
- data/lib/hquery-patient-api.rb +4 -0
- data/lib/hquery/engine.rb +4 -0
- data/lib/hquery/generator.rb +18 -0
- data/test/fixtures/patient/barry_berry.json +466 -0
- data/test/test_helper.rb +25 -0
- data/test/unit/patient_api_test.rb +178 -0
- metadata +193 -0
data/test/test_helper.rb
ADDED
@@ -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:
|