medivo 0.2.5 → 0.2.6
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.
- 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
|