medivo 0.2.5 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/app/models/medivo/order.rb +38 -11
- data/lib/medivo/version.rb +1 -1
- data/spec/dummy/log/test.log +45 -0
- data/spec/fixtures/hl7/lc_hga1c_abnormal.hl7 +17 -0
- data/spec/fixtures/hl7/lc_hga1c_normal.hl7 +17 -0
- data/spec/fixtures/xml/{valid_uhc_order.xml → lc_hga1c_order_create.xml} +0 -0
- data/spec/fixtures/xml/lc_hga1c_order_find.xml +33 -0
- data/spec/fixtures/xml/lc_hga1c_order_with_normal_results.xml +155 -0
- data/spec/models/orders_spec.rb +32 -2
- data/spec/support/helper.rb +10 -0
- metadata +29 -21
data/app/models/medivo/order.rb
CHANGED
@@ -70,38 +70,65 @@ module Medivo
|
|
70
70
|
find_with_requisition(requsition_id).pdf_requisition
|
71
71
|
end
|
72
72
|
|
73
|
-
|
73
|
+
##
|
74
|
+
# find order and the results as well
|
74
75
|
def self.find_with_results(requsition_id)
|
75
76
|
find(requsition_id, :params=>{:include=>:reconciled_results})
|
76
77
|
end
|
77
78
|
|
78
|
-
|
79
|
+
##
|
80
|
+
# NOTE: must use #find_with_results to get the order before you call this method
|
79
81
|
def results
|
80
82
|
Array.wrap(try(:reconciled_results).try(:result))
|
81
83
|
end
|
82
84
|
|
83
|
-
|
85
|
+
##
|
86
|
+
# get the result for a particular test result code
|
87
|
+
#
|
88
|
+
# @param result_lab_code
|
89
|
+
#
|
90
|
+
# NOTE: must use #find_with_results to get the order before you call this method
|
91
|
+
def result_for_test(result_lab_code)
|
92
|
+
results.find{|r| r.result_lab_code == result_lab_code}
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
# NOTE: must use #find_with_results to get the order before you call this method
|
84
97
|
def results_summary
|
85
98
|
try(:reconciled_results).try(:results_summary)
|
86
99
|
end
|
87
100
|
|
101
|
+
#
|
102
|
+
# NOTE: must use #find_with_results to get the order before you call this method
|
103
|
+
def result_date
|
104
|
+
results_summary.try(:collection_date)
|
105
|
+
end
|
106
|
+
|
107
|
+
#
|
108
|
+
# NOTE: must use #find_with_results to get the order before you call this method
|
88
109
|
def pdf_result
|
89
110
|
Base64::decode64(try(:reconciled_results).try(:results_pdf))
|
90
111
|
end
|
91
112
|
|
113
|
+
##
|
114
|
+
# gets the order, and returns the pdf
|
92
115
|
def self.pdf_result(requsition_id)
|
93
116
|
find_with_results(requsition_id).pdf_result
|
94
117
|
end
|
95
118
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
119
|
+
##
|
120
|
+
# @param lab_prefix [ qd, lc ]
|
121
|
+
# @param test_name name of test like 'hga1c' or 'hepc'
|
122
|
+
# @param type [ normal, false_positive, positive, abnormal ]
|
123
|
+
#
|
124
|
+
def simulate_result(lab_prefix, test_name, type='normal')
|
125
|
+
unless %w(normal false_positive positive abnormal).include?(type) and
|
126
|
+
%w(qd lc).include?(lab_prefix)
|
127
|
+
raise "Incorrect Result Type"
|
103
128
|
end
|
104
|
-
|
129
|
+
hl7_file = Rails.root.join("lib/hl7/#{lab_prefix}_#{test_name}_#{type}.hl7").to_s
|
130
|
+
hl7 = Base64.encode64(File.read(hl7_file))
|
131
|
+
body = "<mock><simulate>result</simulate><result><hl7>#{hl7}</hl7></result></mock>"
|
105
132
|
post(:mock_order, {}, body)
|
106
133
|
end
|
107
134
|
|
data/lib/medivo/version.rb
CHANGED
data/spec/dummy/log/test.log
CHANGED
@@ -1807,3 +1807,48 @@ Started GET "/medivo/labs/appointment_data?date=11%2F01%2F2011&lab_code=20060" f
|
|
1807
1807
|
Processing by Medivo::LabsController#appointment_data as HTML
|
1808
1808
|
Parameters: {"date"=>"11/01/2011", "lab_code"=>"20060"}
|
1809
1809
|
Completed 200 OK in 1ms (Views: 0.3ms)
|
1810
|
+
Processing by OrdersController#download_requisition as HTML
|
1811
|
+
Rendered text template (0.0ms)
|
1812
|
+
Sent data unitedhealthcare_requisition.pdf (80.8ms)
|
1813
|
+
Completed 200 OK in 919ms (Views: 80.0ms)
|
1814
|
+
Processing by OrdersController#download_result as HTML
|
1815
|
+
Sent data unitedhealthcare_result.pdf (2.3ms)
|
1816
|
+
Completed 200 OK in 693ms (Views: 1.4ms)
|
1817
|
+
|
1818
|
+
|
1819
|
+
Started GET "/medivo/labs/lab_data?zip_code=90210" for 127.0.0.1 at 2011-11-12 15:03:45 -0500
|
1820
|
+
Processing by Medivo::LabsController#lab_data as HTML
|
1821
|
+
Parameters: {"zip_code"=>"90210"}
|
1822
|
+
Completed 200 OK in 378ms (Views: 2.0ms)
|
1823
|
+
|
1824
|
+
|
1825
|
+
Started GET "/labs/lab_search?zip_code=90210" for 127.0.0.1 at 2011-11-12 15:03:48 -0500
|
1826
|
+
Processing by LabsController#lab_search as HTML
|
1827
|
+
Parameters: {"zip_code"=>"90210"}
|
1828
|
+
Completed 200 OK in 241ms (Views: 45.1ms)
|
1829
|
+
|
1830
|
+
|
1831
|
+
Started GET "/assets/application.css" for 127.0.0.1 at 2011-11-12 15:03:48 -0500
|
1832
|
+
Served asset /application.css - 200 OK (4ms)
|
1833
|
+
|
1834
|
+
|
1835
|
+
Started GET "/assets/application.js" for 127.0.0.1 at 2011-11-12 15:03:48 -0500
|
1836
|
+
Served asset /application.js - 200 OK (21ms)
|
1837
|
+
|
1838
|
+
|
1839
|
+
Started GET "/assets/medivo/markerA.png" for 127.0.0.1 at 2011-11-12 15:03:48 -0500
|
1840
|
+
Served asset /medivo/markerA.png - 200 OK (2ms)
|
1841
|
+
|
1842
|
+
|
1843
|
+
Started GET "/assets/medivo/markerB.png" for 127.0.0.1 at 2011-11-12 15:03:48 -0500
|
1844
|
+
Served asset /medivo/markerB.png - 200 OK (2ms)
|
1845
|
+
|
1846
|
+
|
1847
|
+
Started GET "/assets/medivo/arrow.png" for 127.0.0.1 at 2011-11-12 15:03:49 -0500
|
1848
|
+
Served asset /medivo/arrow.png - 200 OK (2ms)
|
1849
|
+
|
1850
|
+
|
1851
|
+
Started GET "/medivo/labs/appointment_data?date=11%2F01%2F2011&lab_code=20060" for 127.0.0.1 at 2011-11-12 15:03:49 -0500
|
1852
|
+
Processing by Medivo::LabsController#appointment_data as HTML
|
1853
|
+
Parameters: {"date"=>"11/01/2011", "lab_code"=>"20060"}
|
1854
|
+
Completed 200 OK in 1ms (Views: 0.4ms)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
MSH|^~\&|1100|BN|PWN|BN003015|200906300924||ORU|0129|P|2.3
|
2
|
+
PID|1|52285|18071958310|52285|JOHN^DOE||19530627|F|||123 PALM OAK DR.^^APOPKA^FL^32744||(407)444-5555|||||09229470^^^03^^F^Y
|
3
|
+
ORC|RE|M158299698^LAB|18071958310^LAB||||||200906290000|||D14854^LAPORTA^D^^^^^U
|
4
|
+
OBR|1|M158299698^LAB|18071958310^LAB|001453^Hemoglobin A1c^L|||200906291126|||||||200906291832||||M158299698||M158299698||200906300924|||F
|
5
|
+
OBX|1|NM|001463^Hemoglobin A1c^L||8.3|%|<7.0|H||N|F|20080506||200906300245|TA
|
6
|
+
NTE|1|L| Diabetic Adult <7.0
|
7
|
+
NTE|2|L| Healthy Adult 4.8 - 5.9
|
8
|
+
NTE|3|L| (DCCT/NGSP)
|
9
|
+
NTE|4|L| American Diabetes Association's Summary of Glycemic
|
10
|
+
NTE|5|L| Recommendations for Adults with Diabetes:
|
11
|
+
NTE|6|L| Hemoglobin A1c <7.0%. More stringent glycemic goals
|
12
|
+
NTE|7|L| (A1c <6.0%) may further reduce complications at the
|
13
|
+
NTE|8|L| cost of increased risk of hypoglycemia.
|
14
|
+
ORC|RE|1593837^LAB|14537406580^LAB||||||201105260000|||1588628770^BARSON^D^^^^^N
|
15
|
+
OBR|2|1593837^LAB|14537406580^LAB|120295^LDL Cholesterol (Direct)^L|||201105250957|||||||201105260204||||1593837||1593837||201106021708|||F
|
16
|
+
OBX|1|NM|120297^LDL Chol. (Direct)^L||145|mg/dL|0-99|H||N|F|20020107||201105271606|TA
|
17
|
+
ZPS|1|TA|LabCorp Tampa|5610 W LaSalle Street^^Tampa^FL^336071770|8008775227||MD^Farrier^Sean^^^^MD
|
@@ -0,0 +1,17 @@
|
|
1
|
+
MSH|^~\&|1100|BN|PWN|BN003015|200906300924||ORU|0129|P|2.3
|
2
|
+
PID|1|52285|18071958310|52285|JOHN^DOE||19530627|F|||123 PALM OAK DR.^^APOPKA^FL^32744||(407)444-5555|||||09229470^^^03^^F^Y
|
3
|
+
ORC|RE|M158299698^LAB|18071958310^LAB||||||200906290000|||D14854^LAPORTA^D^^^^^U
|
4
|
+
OBR|1|M158299698^LAB|18071958310^LAB|001453^Hemoglobin A1c^L|||200906291126|||||||200906291832||||M158299698||M158299698||200906300924|||F
|
5
|
+
OBX|1|NM|001463^Hemoglobin A1c^L||5.6|%|<7.0|||N|F|20080506||200906300245|TA
|
6
|
+
NTE|1|L| Diabetic Adult <7.0
|
7
|
+
NTE|2|L| Healthy Adult 4.8 - 5.9
|
8
|
+
NTE|3|L| (DCCT/NGSP)
|
9
|
+
NTE|4|L| American Diabetes Association's Summary of Glycemic
|
10
|
+
NTE|5|L| Recommendations for Adults with Diabetes:
|
11
|
+
NTE|6|L| Hemoglobin A1c <7.0%. More stringent glycemic goals
|
12
|
+
NTE|7|L| (A1c <6.0%) may further reduce complications at the
|
13
|
+
NTE|8|L| cost of increased risk of hypoglycemia.
|
14
|
+
ORC|RE|1593837^LAB|14537406580^LAB||||||201105260000|||1588628770^BARSON^D^^^^^N
|
15
|
+
OBR|2|1593837^LAB|14537406580^LAB|120295^LDL Cholesterol (Direct)^L|||201105250957|||||||201105260204||||1593837||1593837||201106021708|||F
|
16
|
+
OBX|1|NM|120297^LDL Chol. (Direct)^L||90|mg/dL|0-99|||N|F|20020107||201105271606|TA
|
17
|
+
ZPS|1|TA|LabCorp Tampa|5610 W LaSalle Street^^Tampa^FL^336071770|8008775227||MD^Farrier^Sean^^^^MD
|
File without changes
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<customer>
|
3
|
+
<id>175605</id>
|
4
|
+
<requisition-number>175605</requisition-number>
|
5
|
+
<account-number>05021390</account-number>
|
6
|
+
<confirmation-code>xHEhtKzAEw</confirmation-code>
|
7
|
+
<first-name>dan</first-name>
|
8
|
+
<last-name>dude</last-name>
|
9
|
+
<gender>Male</gender>
|
10
|
+
<dob>19801201</dob>
|
11
|
+
<state>CA</state>
|
12
|
+
<test-types>001453,120295</test-types>
|
13
|
+
<test-groups nil="true"></test-groups>
|
14
|
+
<reconciled-test-types>001453,120295</reconciled-test-types>
|
15
|
+
<home-phone>4155551212</home-phone>
|
16
|
+
<work-phone nil="true"></work-phone>
|
17
|
+
<mobile-phone nil="true"></mobile-phone>
|
18
|
+
<city>dudeville</city>
|
19
|
+
<zip>90210</zip>
|
20
|
+
<address>my house</address>
|
21
|
+
<email>dude@dude.com</email>
|
22
|
+
<draw-location>PSC</draw-location>
|
23
|
+
<psc>LABCORP, BEVERLY HILLS, 465 N ROXBURY DR STE 715</psc>
|
24
|
+
<reference nil="true"></reference>
|
25
|
+
<grouping nil="true"></grouping>
|
26
|
+
<physicians-name>Cho, Jai</physicians-name>
|
27
|
+
<physicians-upin>80000239</physicians-upin>
|
28
|
+
<physicians-npi>1316979784</physicians-npi>
|
29
|
+
<physicians-license>VA 0101-034434</physicians-license>
|
30
|
+
<status>approved</status>
|
31
|
+
<timestamp>20111112185212</timestamp>
|
32
|
+
<take-tests-same-day type="boolean">true</take-tests-same-day>
|
33
|
+
</customer>
|
@@ -0,0 +1,155 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<customer>
|
3
|
+
<id>175605</id>
|
4
|
+
<requisition-number>175605</requisition-number>
|
5
|
+
<account-number>05021390</account-number>
|
6
|
+
<confirmation-code>xHEhtKzAEw</confirmation-code>
|
7
|
+
<first-name>dan</first-name>
|
8
|
+
<last-name>dude</last-name>
|
9
|
+
<gender>Male</gender>
|
10
|
+
<dob>19801201</dob>
|
11
|
+
<state>CA</state>
|
12
|
+
<test-types>001453,120295</test-types>
|
13
|
+
<test-groups nil="true"></test-groups>
|
14
|
+
<reconciled-test-types>001453,120295</reconciled-test-types>
|
15
|
+
<home-phone>4155551212</home-phone>
|
16
|
+
<work-phone nil="true"></work-phone>
|
17
|
+
<mobile-phone nil="true"></mobile-phone>
|
18
|
+
<city>dudeville</city>
|
19
|
+
<zip>90210</zip>
|
20
|
+
<address>my house</address>
|
21
|
+
<email>dude@dude.com</email>
|
22
|
+
<draw-location>PSC</draw-location>
|
23
|
+
<psc>LABCORP, BEVERLY HILLS, 465 N ROXBURY DR STE 715</psc>
|
24
|
+
<reference nil="true"></reference>
|
25
|
+
<grouping nil="true"></grouping>
|
26
|
+
<physicians-name>Cho, Jai</physicians-name>
|
27
|
+
<physicians-upin>80000239</physicians-upin>
|
28
|
+
<physicians-npi>1316979784</physicians-npi>
|
29
|
+
<physicians-license>VA 0101-034434</physicians-license>
|
30
|
+
<status>approved</status>
|
31
|
+
<timestamp>20111112185212</timestamp>
|
32
|
+
<reconciled-results>
|
33
|
+
<results-summary>
|
34
|
+
<clinical-info nil="true"></clinical-info>
|
35
|
+
<collection-date type="datetime">2011-05-25T16:57:00Z</collection-date>
|
36
|
+
<fasting type="boolean">true</fasting>
|
37
|
+
<lab-patient-id>14537406580</lab-patient-id>
|
38
|
+
<receipt-date type="datetime">2011-05-26T09:04:00Z</receipt-date>
|
39
|
+
<reported-date type="datetime">2011-06-03T00:08:00Z</reported-date>
|
40
|
+
</results-summary>
|
41
|
+
<results-pdf>
|
42
|
+
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b2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjEKL0Jhc2VGb250IC9Db3VyaWVyCi9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjIKL0Jhc2VGb250IC9Db3VyaWVyLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCnhyZWYKMCAxMAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTkgMDAwMDAgbiAKMDAwMDAwMDA4MyAwMDAwMCBuIAowMDAwMDAwMTIwIDAwMDAwIG4gCjAwMDAwMDAyNzQgMDAwMDAgbiAKMDAwMDAwMDMwMyAwMDAwMCBuIAowMDAwMDAwNDI0IDAwMDAwIG4gCjAwMDAwMDA0ODcgMDAwMDAgbiAKMDAwMDAwMTc5NSAwMDAwMCBuIAowMDAwMDAxOTAwIDAwMDAwIG4gCgp0cmFpbGVyCiAgPDwgL1NpemUgMTAKICAgICAvUm9vdCAxIDAgUgogL0luZm8gNSAwIFIKICA+PgpzdGFydHhyZWYKMjAxMAolJUVPRgo=
|
43
|
+
</results-pdf>
|
44
|
+
<result type="array">
|
45
|
+
<result>
|
46
|
+
<customer-id type="integer">175605</customer-id>
|
47
|
+
<fasting type="boolean">true</fasting>
|
48
|
+
<hl7message-nte-id nil="true"></hl7message-nte-id>
|
49
|
+
<id type="integer">19060</id>
|
50
|
+
<lab-abnormal-flag>N</lab-abnormal-flag>
|
51
|
+
<lab-facility-director-id type="integer">20</lab-facility-director-id>
|
52
|
+
<lab-facility-id type="integer">69</lab-facility-id>
|
53
|
+
<lab-id type="integer">129</lab-id>
|
54
|
+
<lab-reference-range>1-100</lab-reference-range>
|
55
|
+
<observation-date type="datetime">2011-11-11T11:22:00Z</observation-date>
|
56
|
+
<obx-sequence-number type="integer">1</obx-sequence-number>
|
57
|
+
<order-lab-code>001453</order-lab-code>
|
58
|
+
<order-lab-name>Hemoglobin (Hgb) A1c</order-lab-name>
|
59
|
+
<parent-lab-code nil="true"></parent-lab-code>
|
60
|
+
<result-lab-code>001453</result-lab-code>
|
61
|
+
<result-lab-name>Hemoglobin (Hgb) A1c</result-lab-name>
|
62
|
+
<result-status>F</result-status>
|
63
|
+
<tnp-reason nil="true"></tnp-reason>
|
64
|
+
<units-of-measurement>mg/Ml</units-of-measurement>
|
65
|
+
<value>99.9</value>
|
66
|
+
<value-type>NM</value-type>
|
67
|
+
<notes nil="true"></notes>
|
68
|
+
<lab-facility>01: LabCorp Burlington, 1447 York Court, Burlington NC, phone: 972-566-7500</lab-facility>
|
69
|
+
<lab-facility-director>MD Hancock William F</lab-facility-director>
|
70
|
+
</result>
|
71
|
+
<result>
|
72
|
+
<customer-id type="integer">175605</customer-id>
|
73
|
+
<fasting type="boolean">true</fasting>
|
74
|
+
<hl7message-nte-id nil="true"></hl7message-nte-id>
|
75
|
+
<id type="integer">19061</id>
|
76
|
+
<lab-abnormal-flag>N</lab-abnormal-flag>
|
77
|
+
<lab-facility-director-id type="integer">20</lab-facility-director-id>
|
78
|
+
<lab-facility-id type="integer">69</lab-facility-id>
|
79
|
+
<lab-id type="integer">129</lab-id>
|
80
|
+
<lab-reference-range>1-100</lab-reference-range>
|
81
|
+
<observation-date type="datetime">2011-11-11T11:22:00Z</observation-date>
|
82
|
+
<obx-sequence-number type="integer">1</obx-sequence-number>
|
83
|
+
<order-lab-code>120295</order-lab-code>
|
84
|
+
<order-lab-name>LDL Cholesterol (Direct)</order-lab-name>
|
85
|
+
<parent-lab-code nil="true"></parent-lab-code>
|
86
|
+
<result-lab-code>120295</result-lab-code>
|
87
|
+
<result-lab-name>LDL Cholesterol (Direct)</result-lab-name>
|
88
|
+
<result-status>F</result-status>
|
89
|
+
<tnp-reason nil="true"></tnp-reason>
|
90
|
+
<units-of-measurement>mg/Ml</units-of-measurement>
|
91
|
+
<value>99.9</value>
|
92
|
+
<value-type>NM</value-type>
|
93
|
+
<notes nil="true"></notes>
|
94
|
+
<lab-facility>01: LabCorp Burlington, 1447 York Court, Burlington NC, phone: 972-566-7500</lab-facility>
|
95
|
+
<lab-facility-director>MD Hancock William F</lab-facility-director>
|
96
|
+
</result>
|
97
|
+
<result>
|
98
|
+
<customer-id type="integer">175605</customer-id>
|
99
|
+
<fasting type="boolean">true</fasting>
|
100
|
+
<hl7message-nte-id type="integer">1242</hl7message-nte-id>
|
101
|
+
<id type="integer">19062</id>
|
102
|
+
<lab-abnormal-flag>N</lab-abnormal-flag>
|
103
|
+
<lab-facility-director-id type="integer">25</lab-facility-director-id>
|
104
|
+
<lab-facility-id type="integer">52</lab-facility-id>
|
105
|
+
<lab-id type="integer">129</lab-id>
|
106
|
+
<lab-reference-range><7.0</lab-reference-range>
|
107
|
+
<observation-date type="datetime">2009-06-30T09:45:00Z</observation-date>
|
108
|
+
<obx-sequence-number type="integer">1</obx-sequence-number>
|
109
|
+
<order-lab-code>001453</order-lab-code>
|
110
|
+
<order-lab-name>Hemoglobin A1c</order-lab-name>
|
111
|
+
<parent-lab-code nil="true"></parent-lab-code>
|
112
|
+
<result-lab-code>001463</result-lab-code>
|
113
|
+
<result-lab-name>Hemoglobin A1c</result-lab-name>
|
114
|
+
<result-status>F</result-status>
|
115
|
+
<tnp-reason nil="true"></tnp-reason>
|
116
|
+
<units-of-measurement>%</units-of-measurement>
|
117
|
+
<value>5.6</value>
|
118
|
+
<value-type>NM</value-type>
|
119
|
+
<notes>Diabetic Adult <7.0 Healthy Adult 4.8 - 5.9 (DCCT/NGSP) American Diabetes Association's Summary of
|
120
|
+
Glycemic Recommendations for Adults with Diabetes: Hemoglobin A1c <7.0%. More stringent glycemic goals (A1c
|
121
|
+
<6.0%) may further reduce complications at the cost of increased risk of hypoglycemia.
|
122
|
+
</notes>
|
123
|
+
<lab-facility>TA: LabCorp Tampa, 5610 W LaSalle Street, Tampa FL, phone: 800-877-5227</lab-facility>
|
124
|
+
<lab-facility-director>MD Sean Farrier</lab-facility-director>
|
125
|
+
</result>
|
126
|
+
<result>
|
127
|
+
<customer-id type="integer">175605</customer-id>
|
128
|
+
<fasting type="boolean">true</fasting>
|
129
|
+
<hl7message-nte-id nil="true"></hl7message-nte-id>
|
130
|
+
<id type="integer">19063</id>
|
131
|
+
<lab-abnormal-flag>N</lab-abnormal-flag>
|
132
|
+
<lab-facility-director-id type="integer">25</lab-facility-director-id>
|
133
|
+
<lab-facility-id type="integer">52</lab-facility-id>
|
134
|
+
<lab-id type="integer">129</lab-id>
|
135
|
+
<lab-reference-range>0-99</lab-reference-range>
|
136
|
+
<observation-date type="datetime">2011-05-27T23:06:00Z</observation-date>
|
137
|
+
<obx-sequence-number type="integer">1</obx-sequence-number>
|
138
|
+
<order-lab-code>120295</order-lab-code>
|
139
|
+
<order-lab-name>LDL Cholesterol (Direct)</order-lab-name>
|
140
|
+
<parent-lab-code nil="true"></parent-lab-code>
|
141
|
+
<result-lab-code>120297</result-lab-code>
|
142
|
+
<result-lab-name>LDL Chol. (Direct)</result-lab-name>
|
143
|
+
<result-status>F</result-status>
|
144
|
+
<tnp-reason nil="true"></tnp-reason>
|
145
|
+
<units-of-measurement>mg/dL</units-of-measurement>
|
146
|
+
<value>90</value>
|
147
|
+
<value-type>NM</value-type>
|
148
|
+
<notes nil="true"></notes>
|
149
|
+
<lab-facility>TA: LabCorp Tampa, 5610 W LaSalle Street, Tampa FL, phone: 800-877-5227</lab-facility>
|
150
|
+
<lab-facility-director>MD Sean Farrier</lab-facility-director>
|
151
|
+
</result>
|
152
|
+
</result>
|
153
|
+
</reconciled-results>
|
154
|
+
<take-tests-same-day type="boolean">true</take-tests-same-day>
|
155
|
+
</customer>
|
data/spec/models/orders_spec.rb
CHANGED
@@ -215,6 +215,15 @@ describe Medivo::Order do
|
|
215
215
|
text = pdf_stream_to_text(pdf)
|
216
216
|
text.should match /COLLECTED:2011-09-06 RECEIVED:2011-09-06 REPORTED:2011-09-06/
|
217
217
|
end
|
218
|
+
|
219
|
+
it "#result_date returns a date" do
|
220
|
+
order.result_date.should == Time.parse('2011-09-06 07:00 UTC')
|
221
|
+
end
|
222
|
+
|
223
|
+
it "#result_for_test returns result" do
|
224
|
+
result = order.result_for_test("144035")
|
225
|
+
result.value.should == '12.6'
|
226
|
+
end
|
218
227
|
end
|
219
228
|
end
|
220
229
|
|
@@ -263,9 +272,8 @@ describe "creating orders" do
|
|
263
272
|
:dob => "19801201"
|
264
273
|
)
|
265
274
|
|
266
|
-
|
267
275
|
mock.proxy(order).to_xml({}) do |value|
|
268
|
-
value.strip_space.should == File.read("#{ENGINE_PATH}/spec/fixtures/xml/
|
276
|
+
value.strip_space.should == File.read("#{ENGINE_PATH}/spec/fixtures/xml/lc_hga1c_order_create.xml").strip_space
|
269
277
|
value
|
270
278
|
end
|
271
279
|
|
@@ -274,6 +282,28 @@ describe "creating orders" do
|
|
274
282
|
order.save
|
275
283
|
order.errors.messages.should be_empty
|
276
284
|
end
|
285
|
+
|
286
|
+
#it "simulate_results" do
|
287
|
+
# @requisition_id = '175605'
|
288
|
+
# # find order
|
289
|
+
# stub_order(@requisition_id, medivo_xml_fixture_path("lc_hga1c_order_find.xml"))
|
290
|
+
# Medivo::Order.find(@requisition_id)
|
291
|
+
#
|
292
|
+
# stub_order_result(@requisition_id, medivo_hl7_fixture_path("lc_order_hga1c_normal_with_results.xml"))
|
293
|
+
# p order.simulate_result('lc', 'hga1c', 'normal')
|
294
|
+
#end
|
295
|
+
#
|
296
|
+
#it "get results" do
|
297
|
+
# @requisition_id = 175605
|
298
|
+
# order = Medivo::Order.new(:requisition_number=>@requisition_id)
|
299
|
+
# stub_order_results(@requisition_id, medivo_xml_fixture_path("lc_order_hga1c_normal_with_results.xml"))
|
300
|
+
#
|
301
|
+
# order = Medivo::Order.find_with_results('175605')
|
302
|
+
# p order.to_xml
|
303
|
+
# #p order.results_summary
|
304
|
+
# #p order.results.collect{|r| [r.result_lab_code, r.value ]}
|
305
|
+
# #p order.result_for_test("001463").value
|
306
|
+
#end
|
277
307
|
end
|
278
308
|
|
279
309
|
|
data/spec/support/helper.rb
CHANGED
@@ -51,6 +51,16 @@ module Medivo::Spec
|
|
51
51
|
"#{FIXTURE_PATH}/xml/#{file_name}"
|
52
52
|
end
|
53
53
|
|
54
|
+
##
|
55
|
+
# requisition_id Number id of the Medivo::Order you are stubbing
|
56
|
+
# file_path String points to the path to xml file with order info which contains
|
57
|
+
# requisition that includes requisition pdf
|
58
|
+
def stub_order(requisition_id, file_path)
|
59
|
+
stub_request(:get,
|
60
|
+
"test:test@test.medivo.com/customers/#{requisition_id}.xml").
|
61
|
+
to_return(:body => File.read(file_path))
|
62
|
+
end
|
63
|
+
|
54
64
|
##
|
55
65
|
# requisition_id Number id of the Medivo::Order you are stubbing
|
56
66
|
# file_path String points to the path to xml file with order info which contains
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: medivo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ default_executable:
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &2169329100 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2169329100
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: jquery-rails
|
28
|
-
requirement: &
|
28
|
+
requirement: &2169328680 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2169328680
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: coffee-script
|
39
|
-
requirement: &
|
39
|
+
requirement: &2169324880 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2169324880
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: haml-rails
|
50
|
-
requirement: &
|
50
|
+
requirement: &2169324460 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2169324460
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: geocoder
|
61
|
-
requirement: &
|
61
|
+
requirement: &2169324040 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2169324040
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rest-client
|
72
|
-
requirement: &
|
72
|
+
requirement: &2169323620 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *2169323620
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: pdfkit
|
83
|
-
requirement: &
|
83
|
+
requirement: &2169323200 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *2169323200
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: prawn
|
94
|
-
requirement: &
|
94
|
+
requirement: &2169322780 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,7 +99,7 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *2169322780
|
103
103
|
description: Use the medivo platform to find lab locations, make labcorp appointments,
|
104
104
|
place lab orders
|
105
105
|
email:
|
@@ -265,15 +265,19 @@ files:
|
|
265
265
|
- spec/dummy/tmp/cache/assets/E32/FC0/sprockets%2Fe55fb2eef11567fe04fdaf7e73af5ba4
|
266
266
|
- spec/dummy/tmp/cache/assets/E59/D50/sprockets%2Fbe1cc4d9b0efb617e58baa16dd1dee58
|
267
267
|
- spec/dummy/tmp/image_path_fb5f3a59200b_1320622886.pdf
|
268
|
+
- spec/fixtures/hl7/lc_hga1c_abnormal.hl7
|
269
|
+
- spec/fixtures/hl7/lc_hga1c_normal.hl7
|
268
270
|
- spec/fixtures/images/southeast.jpg
|
269
271
|
- spec/fixtures/pdfs/hepc_negative_results.pdf
|
270
272
|
- spec/fixtures/pdfs/hepc_result_faq.pdf
|
271
273
|
- spec/fixtures/pdfs/uhc_requisition_cover_letter.pdf
|
272
274
|
- spec/fixtures/pdfs/uhc_result_cover_letter.pdf
|
275
|
+
- spec/fixtures/xml/lc_hga1c_order_create.xml
|
276
|
+
- spec/fixtures/xml/lc_hga1c_order_find.xml
|
277
|
+
- spec/fixtures/xml/lc_hga1c_order_with_normal_results.xml
|
273
278
|
- spec/fixtures/xml/lc_order_with_normal_results.xml
|
274
279
|
- spec/fixtures/xml/lc_order_with_positive_results.xml
|
275
280
|
- spec/fixtures/xml/lc_order_with_requisition.xml
|
276
|
-
- spec/fixtures/xml/valid_uhc_order.xml
|
277
281
|
- spec/lib/fdf_generator_spec.rb
|
278
282
|
- spec/lib/pdf_generator_spec.rb
|
279
283
|
- spec/lib/pdf_group_spec.rb
|
@@ -302,7 +306,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
302
306
|
version: '0'
|
303
307
|
segments:
|
304
308
|
- 0
|
305
|
-
hash:
|
309
|
+
hash: 884917463551088457
|
306
310
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
307
311
|
none: false
|
308
312
|
requirements:
|
@@ -311,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
311
315
|
version: '0'
|
312
316
|
segments:
|
313
317
|
- 0
|
314
|
-
hash:
|
318
|
+
hash: 884917463551088457
|
315
319
|
requirements: []
|
316
320
|
rubyforge_project:
|
317
321
|
rubygems_version: 1.6.2
|
@@ -416,15 +420,19 @@ test_files:
|
|
416
420
|
- spec/dummy/tmp/cache/assets/E32/FC0/sprockets%2Fe55fb2eef11567fe04fdaf7e73af5ba4
|
417
421
|
- spec/dummy/tmp/cache/assets/E59/D50/sprockets%2Fbe1cc4d9b0efb617e58baa16dd1dee58
|
418
422
|
- spec/dummy/tmp/image_path_fb5f3a59200b_1320622886.pdf
|
423
|
+
- spec/fixtures/hl7/lc_hga1c_abnormal.hl7
|
424
|
+
- spec/fixtures/hl7/lc_hga1c_normal.hl7
|
419
425
|
- spec/fixtures/images/southeast.jpg
|
420
426
|
- spec/fixtures/pdfs/hepc_negative_results.pdf
|
421
427
|
- spec/fixtures/pdfs/hepc_result_faq.pdf
|
422
428
|
- spec/fixtures/pdfs/uhc_requisition_cover_letter.pdf
|
423
429
|
- spec/fixtures/pdfs/uhc_result_cover_letter.pdf
|
430
|
+
- spec/fixtures/xml/lc_hga1c_order_create.xml
|
431
|
+
- spec/fixtures/xml/lc_hga1c_order_find.xml
|
432
|
+
- spec/fixtures/xml/lc_hga1c_order_with_normal_results.xml
|
424
433
|
- spec/fixtures/xml/lc_order_with_normal_results.xml
|
425
434
|
- spec/fixtures/xml/lc_order_with_positive_results.xml
|
426
435
|
- spec/fixtures/xml/lc_order_with_requisition.xml
|
427
|
-
- spec/fixtures/xml/valid_uhc_order.xml
|
428
436
|
- spec/lib/fdf_generator_spec.rb
|
429
437
|
- spec/lib/pdf_generator_spec.rb
|
430
438
|
- spec/lib/pdf_group_spec.rb
|