# encoding: UTF-8 require 'spec_helper' describe HL7::Message::Segment::OBX do context 'general' do before :all do @base = "OBX|1|NM|30341-2^Erythrocyte sedimentation rate^LN^815117^ESR^99USI^^^Erythrocyte sedimentation rate||10|mm/h^millimeter per hour^UCUM|0 to 17|N|0.1||F|||20110331140551-0800||Observer|||20110331150551-0800|^A Site|||Century Hospital^^^^^NIST-AA-1&2.16.840.1.113883.3.72.5.30.1&ISO^XX^^^987|2070 Test Park^^Los Angeles^CA^90067^USA^B^^06037|2343242^Knowsalot^Phil^J.^III^Dr.^^^NIST-AA-1&2.16.840.1.113883.3.72.5.30.1&ISO^L^^^DN" end it 'allows access to an OBX segment' do obx = HL7::Message::Segment::OBX.new @base expect(obx.set_id).to eq "1" expect(obx.value_type).to eq "NM" expect(obx.observation_id).to eq "30341-2^Erythrocyte sedimentation rate^LN^815117^ESR^99USI^^^Erythrocyte sedimentation rate" expect(obx.observation_sub_id).to eq "" expect(obx.observation_value).to eq "10" expect(obx.units).to eq "mm/h^millimeter per hour^UCUM" expect(obx.references_range).to eq "0 to 17" expect(obx.abnormal_flags).to eq "N" expect(obx.probability).to eq "0.1" expect(obx.nature_of_abnormal_test).to eq "" expect(obx.observation_result_status).to eq "F" expect(obx.effective_date_of_reference_range).to eq "" expect(obx.user_defined_access_checks).to eq "" expect(obx.observation_date).to eq "20110331140551-0800" expect(obx.producer_id).to eq "" expect(obx.responsible_observer).to eq "Observer" expect(obx.observation_site).to eq '^A Site' expect(obx.observation_method).to eq "" expect(obx.equipment_instance_id).to eq "" expect(obx.analysis_date).to eq "20110331150551-0800" expect(obx.performing_organization_name).to eq "Century Hospital^^^^^NIST-AA-1&2.16.840.1.113883.3.72.5.30.1&ISO^XX^^^987" expect(obx.performing_organization_address).to eq "2070 Test Park^^Los Angeles^CA^90067^USA^B^^06037" expect(obx.performing_organization_medical_director).to eq "2343242^Knowsalot^Phil^J.^III^Dr.^^^NIST-AA-1&2.16.840.1.113883.3.72.5.30.1&ISO^L^^^DN" end it 'allows creation of an OBX segment' do expect do obx = HL7::Message::Segment::OBX.new obx.value_type = "TESTIES" obx.observation_id = "HR" obx.observation_sub_id = "2" obx.observation_value = "SOMETHING HAPPENned" end.not_to raise_error end describe "#correction?" do let(:obx) { HL7::Message::Segment::OBX.new data } subject { obx.correction? } context "when is a correction" do let(:data) { 'OBX|1|ST|123456^AA OBSERVATION^L^4567890^FIRST OBSERVATION^LN||42|ug/dL^Micrograms per Deciliter^UCUM|<10 ug/dL|H|||C||||OMG' } it { is_expected.to be true } end context "when is not a correction" do let(:data) { 'OBX|1|ST|123456^AA OBSERVATION^L^4567890^FIRST OBSERVATION^LN||42|ug/dL^Micrograms per Deciliter^UCUM|<10 ug/dL|H|||F||||OMG' } it { is_expected.to be false } end end end end