yahl7 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +58 -0
- data/ERRATA.md +2 -0
- data/lib/yahl7/v2/alias_field_names.rb +45 -6
- data/lib/yahl7/v2/alias_person_name.rb +2 -0
- data/lib/yahl7/v2/data_type/cnn.rb +8 -0
- data/lib/yahl7/v2/data_type/ft.rb +10 -1
- data/lib/yahl7/v2/data_type/ndl.rb +26 -0
- data/lib/yahl7/v2/data_type/xad.rb +4 -0
- data/lib/yahl7/v2/data_type/xcn.rb +52 -0
- data/lib/yahl7/v2/data_type/xtn.rb +4 -0
- data/lib/yahl7/v2/message/oru.rb +8 -0
- data/lib/yahl7/v2/message.rb +1 -1
- data/lib/yahl7/v2/segment/dg1.rb +1 -1
- data/lib/yahl7/v2/segment/evn.rb +1 -1
- data/lib/yahl7/v2/segment/in1.rb +1 -1
- data/lib/yahl7/v2/segment/obr.rb +3 -3
- data/lib/yahl7/v2/segment/obx.rb +2 -7
- data/lib/yahl7/v2/segment/orc.rb +4 -4
- data/lib/yahl7/v2/segment/pd1.rb +1 -1
- data/lib/yahl7/v2/segment/pv1.rb +5 -5
- data/lib/yahl7/v2/segment.rb +8 -2
- data/lib/yahl7/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51918fd00971add5c38a8b7755cdc818743073aae001707d0950644abb9bae83
|
4
|
+
data.tar.gz: 39e37efdceacaf25896afba0ba836e7e2db148f4f15b833aea78251043292179
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb3b7c2633e691d91f499adfae90aa91fc0e408a272eabf5abe7b551556defece6cc6c5d2205d1792f776efee20cebe959ffcde18edb28638d9567c8b7bd72be
|
7
|
+
data.tar.gz: a28b49feca05c217d0335431eb11a16417a63fe7f166eef146d1d89744f66f14e4f37e1d416b7704bc8be1a7c7f8c4c52e5aa67f86406cae89404396a05ad12c
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,64 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+
## [0.5.0] - 2021-09-02
|
9
|
+
|
10
|
+
This release implements a lot of changes, new features, and bug fixes. These are
|
11
|
+
largely due to testing the library with a larger set of HL7 messages of various
|
12
|
+
versions (2.3 to 2.5).
|
13
|
+
|
14
|
+
This should clean up a number of rough edges, but the gem should not be
|
15
|
+
considered production-ready, yet.
|
16
|
+
|
17
|
+
### Added
|
18
|
+
|
19
|
+
- HL7 data types:
|
20
|
+
- `XCN` for extended composite names
|
21
|
+
- The `CNN` data type now has a `#full_name` method to match `XPN` and `XCN`.
|
22
|
+
- The `NDL` data type now has aliases to the name methods in order to match the
|
23
|
+
API of other name elements.
|
24
|
+
- The segment type now overrides `#to_s`
|
25
|
+
- The `ORU` message type now has an `#observations_and_notes` method, which
|
26
|
+
returns all `OBX` and `NTE` segments in order for that message. This is useful
|
27
|
+
for building a complete report of test results for applicable messages.
|
28
|
+
- Utilize `FT` data type for `OBX.5` for now. This could be various data types,
|
29
|
+
so I will need to figure out a more appropriate way to handle this.
|
30
|
+
|
31
|
+
### Changed
|
32
|
+
|
33
|
+
- Field values are now normalized so that empty values are returned as `nil`
|
34
|
+
whether they are strings or class instances.
|
35
|
+
- The `FT` data type can now handle repeated values.
|
36
|
+
- The `XAD` data type can now handle repeated values.
|
37
|
+
- The `XTN` data type can now handle repeated values.
|
38
|
+
- Mapped the following fields to the `XCN` data type:
|
39
|
+
- `DG1.16`
|
40
|
+
- `EVN.5`
|
41
|
+
- `IN1.30`
|
42
|
+
- `OBR.10`
|
43
|
+
- `OBR.16`
|
44
|
+
- `OBR.28`
|
45
|
+
- `OBX.16`
|
46
|
+
- `ORC.10`
|
47
|
+
- `ORC.11`
|
48
|
+
- `ORC.12`
|
49
|
+
- `ORC.19`
|
50
|
+
- `PD1.4`
|
51
|
+
- `PV1.7`
|
52
|
+
- `PV1.8`
|
53
|
+
- `PV1.9`
|
54
|
+
- `PV1.17`
|
55
|
+
- `PV1.52`
|
56
|
+
|
57
|
+
### Fixed
|
58
|
+
|
59
|
+
- Messages now display body correctly.
|
60
|
+
- The `NDL` data type did not play well with some implementations that do not
|
61
|
+
include all field values.
|
62
|
+
- The `#suffixes` method in `YAHL7::V2::AliasPersonName` now deduplicates the
|
63
|
+
suffix entries (i.e., degree and suffix) so that names appear more natural if
|
64
|
+
the generating system uses the same item in both degree and suffix.
|
65
|
+
|
8
66
|
## [0.4.0] - 2021-09-01
|
9
67
|
|
10
68
|
### Added
|
data/ERRATA.md
CHANGED
@@ -14,3 +14,5 @@ Cannot handle character escape sequence | Initial | N
|
|
14
14
|
Cannot handle multi-byte character escape sequence | Initial | N/A
|
15
15
|
Cannot handle hexadecimal character escape sequence | Initial | N/A
|
16
16
|
Cannot resolve timestamps to partial-second accuracy | Initial | N/A
|
17
|
+
Does not handle repeated fields in all cases | Initial | N/A
|
18
|
+
OBX.5 is always parsed as formatted text | 0.5.0 | N/A
|
@@ -22,17 +22,56 @@ module YAHL7
|
|
22
22
|
base.extend(ClassMethods)
|
23
23
|
end
|
24
24
|
|
25
|
+
def normalize_value(value)
|
26
|
+
value.nil? || value == '' ? nil : value
|
27
|
+
end
|
28
|
+
|
29
|
+
def make_field(klass, value)
|
30
|
+
value = normalize_value(value)
|
31
|
+
return nil if value.nil?
|
32
|
+
|
33
|
+
if klass.respond_to?(:repeated?) && klass.repeated?(value)
|
34
|
+
value.map { |v| new_class_value(klass, v) }
|
35
|
+
else
|
36
|
+
new_class_value(klass, value)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def new_class_value(klass, value)
|
41
|
+
case klass.name
|
42
|
+
when 'YAHL7::V2::DataType::FT' then klass.new(value, parse_options)
|
43
|
+
else klass.new(value)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
25
47
|
# This is the module that actually extends the segment.
|
26
48
|
module ClassMethods
|
49
|
+
# This method is used to define the field name mappings for the data
|
50
|
+
# type / segment.
|
51
|
+
#
|
52
|
+
# It is possible to return a string, in which case you can use an
|
53
|
+
# integer value. If you want to return a specific data type, you must
|
54
|
+
# use a hash instead, in the form of (for example):
|
55
|
+
#
|
56
|
+
# define_field_names({
|
57
|
+
# some_field: 0,
|
58
|
+
# some_other_field: { index: 1, class: YAHL7::V2::DataType::TS }
|
59
|
+
# })
|
60
|
+
#
|
61
|
+
# This defines the method `some_field` which returns a string, while
|
62
|
+
# the other method `some_other_field` returns either a `nil` value or a
|
63
|
+
# `YAHL7::V2::DataType::TS` value.
|
64
|
+
#
|
65
|
+
# It is possible that the field is repeatable. If so, it is up to the
|
66
|
+
# data type to define a `::repeated?` method that receives the raw
|
67
|
+
# value and then it determines if the field was repeated or not. If it
|
68
|
+
# is repeatable and it is determined to be repeated, an array of that
|
69
|
+
# type is returned.
|
27
70
|
def define_field_names(mappings)
|
28
71
|
mappings.each do |name, mapping|
|
29
72
|
case mapping
|
30
|
-
when Integer then define_method(name) { self[mapping] }
|
31
|
-
when Hash
|
32
|
-
define_method(name) do
|
33
|
-
value = self[mapping[:index]]
|
34
|
-
value.nil? || value == '' ? nil : mapping[:class].new(value)
|
35
|
-
end
|
73
|
+
when Integer then define_method(name) { normalize_value(self[mapping]) }
|
74
|
+
when Hash then define_method(name) { make_field(mapping[:class], self[mapping[:index]]) }
|
36
75
|
end
|
37
76
|
end
|
38
77
|
end
|
@@ -23,6 +23,14 @@ module YAHL7
|
|
23
23
|
assigning_authority_universal_id: 9,
|
24
24
|
assigning_authority_universal_id_type: 10
|
25
25
|
})
|
26
|
+
|
27
|
+
def full_name
|
28
|
+
assemble_name_given_first
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.repeated?(value)
|
32
|
+
!value.nil? && value[0].is_a?(Array)
|
33
|
+
end
|
26
34
|
end
|
27
35
|
end
|
28
36
|
end
|
@@ -7,10 +7,19 @@ module YAHL7
|
|
7
7
|
class DataType
|
8
8
|
# This is the HL7 data type for formatted text
|
9
9
|
class FT < YAHL7::V2::DataType
|
10
|
+
def initialize(value, parse_options)
|
11
|
+
@value = value
|
12
|
+
@formatter = YAHL7::V2::Formatter.new(parse_options)
|
13
|
+
end
|
14
|
+
|
10
15
|
def formatted
|
11
16
|
@formatted ||= parse_value
|
12
17
|
end
|
13
18
|
|
19
|
+
def self.repeated?(value)
|
20
|
+
value.is_a?(Array)
|
21
|
+
end
|
22
|
+
|
14
23
|
private
|
15
24
|
|
16
25
|
def parse_value
|
@@ -18,7 +27,7 @@ module YAHL7
|
|
18
27
|
end
|
19
28
|
|
20
29
|
def parse_body(body)
|
21
|
-
|
30
|
+
@formatter.format(body)
|
22
31
|
end
|
23
32
|
end
|
24
33
|
end
|
@@ -24,6 +24,32 @@ module YAHL7
|
|
24
24
|
building: 9,
|
25
25
|
floor: 10
|
26
26
|
})
|
27
|
+
|
28
|
+
def initialize(value)
|
29
|
+
@value = if value.nil?
|
30
|
+
[]
|
31
|
+
elsif value.is_a?(String) || value[0].is_a?(String)
|
32
|
+
[value]
|
33
|
+
else
|
34
|
+
value
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def full_name
|
39
|
+
name&.full_name
|
40
|
+
end
|
41
|
+
|
42
|
+
def bare_name_given_first
|
43
|
+
name&.bare_name_given_first
|
44
|
+
end
|
45
|
+
|
46
|
+
def bare_name_family_first
|
47
|
+
name&.bare_name_family_first
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.repeated?(value)
|
51
|
+
!value.nil? && value[0].is_a?(Array) && value[0][0].is_a?(Array)
|
52
|
+
end
|
27
53
|
end
|
28
54
|
end
|
29
55
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
module YAHL7
|
6
|
+
module V2
|
7
|
+
class DataType
|
8
|
+
# This is the HL7 data type for an extended composite name and ID number.
|
9
|
+
class XCN < YAHL7::V2::DataType
|
10
|
+
include YAHL7::V2::AliasPersonName
|
11
|
+
include YAHL7::V2::AliasFieldNames
|
12
|
+
|
13
|
+
define_field_names({
|
14
|
+
id_number: 0,
|
15
|
+
family_name: 1,
|
16
|
+
given_name: 2,
|
17
|
+
middle_name: 3,
|
18
|
+
suffix: 4,
|
19
|
+
prefix: 5,
|
20
|
+
degree: 6,
|
21
|
+
source_table: 7,
|
22
|
+
assigning_authority: 8,
|
23
|
+
name_type_code: 9,
|
24
|
+
identifier_check_digit: 10,
|
25
|
+
check_digit_scheme: 11,
|
26
|
+
identifier_type_code: 12,
|
27
|
+
assigning_facility: 13,
|
28
|
+
name_representation_code: 14,
|
29
|
+
name_context: 15,
|
30
|
+
name_validity_range: 16,
|
31
|
+
name_assembly_order: 17,
|
32
|
+
effective_date: 18,
|
33
|
+
expiration_date: { index: 19, class: YAHL7::V2::DataType::TS },
|
34
|
+
professional_suffix: { index: 20, class: YAHL7::V2::DataType::TS },
|
35
|
+
assigning_jurisdiction: 21,
|
36
|
+
assigning_agency_or_department: 22
|
37
|
+
})
|
38
|
+
|
39
|
+
def full_name
|
40
|
+
case name_assembly_order&.downcase
|
41
|
+
when 'f' then assemble_name_family_first
|
42
|
+
else assemble_name_given_first
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.repeated?(value)
|
47
|
+
!value.nil? && value[0].is_a?(Array)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/yahl7/v2/message/oru.rb
CHANGED
@@ -5,6 +5,14 @@ module YAHL7
|
|
5
5
|
class Message
|
6
6
|
# ORU messages contain unsolicited observation results about a patient.
|
7
7
|
class ORU < YAHL7::V2::Message
|
8
|
+
OBSERVATION_AND_NOTE_TYPES = %w[NTE OBX].freeze
|
9
|
+
|
10
|
+
# This method is used to return all NTE and OBX segments in their
|
11
|
+
# original order. This can be useful for building a report of test
|
12
|
+
# results in applicable messages.
|
13
|
+
def observations_and_notes
|
14
|
+
segments.filter { |s| OBSERVATION_AND_NOTE_TYPES.include?(s.type) }
|
15
|
+
end
|
8
16
|
end
|
9
17
|
end
|
10
18
|
end
|
data/lib/yahl7/v2/message.rb
CHANGED
data/lib/yahl7/v2/segment/dg1.rb
CHANGED
@@ -23,7 +23,7 @@ module YAHL7
|
|
23
23
|
outlier_cost: 13,
|
24
24
|
grouper_version_and_type: 14,
|
25
25
|
diagnostic_priority: 15,
|
26
|
-
diagnosing_clinician: 16,
|
26
|
+
diagnosing_clinician: { index: 16, class: YAHL7::V2::DataType::XCN },
|
27
27
|
diagnosis_classification: 17,
|
28
28
|
confidential_indicator: 18,
|
29
29
|
attestation_datetime: { index: 19, class: YAHL7::V2::DataType::TS },
|
data/lib/yahl7/v2/segment/evn.rb
CHANGED
@@ -13,7 +13,7 @@ module YAHL7
|
|
13
13
|
recorded_datetime: { index: 2, class: YAHL7::V2::DataType::TS },
|
14
14
|
planned_event_datetime: { index: 3, class: YAHL7::V2::DataType::TS },
|
15
15
|
event_reason_code: 4,
|
16
|
-
operator_id: 5,
|
16
|
+
operator_id: { index: 5, class: YAHL7::V2::DataType::XCN },
|
17
17
|
event_occurred: { index: 6, class: YAHL7::V2::DataType::TS },
|
18
18
|
event_facility: 7
|
19
19
|
})
|
data/lib/yahl7/v2/segment/in1.rb
CHANGED
@@ -37,7 +37,7 @@ module YAHL7
|
|
37
37
|
release_information_code: 27,
|
38
38
|
preadmit_certification: 28,
|
39
39
|
verification_datetime: 29,
|
40
|
-
verification_by: 30,
|
40
|
+
verification_by: { index: 30, class: YAHL7::V2::DataType::XCN },
|
41
41
|
type_of_agreement_code: 31,
|
42
42
|
billing_status: 32,
|
43
43
|
lifetime_reserve_days: 33,
|
data/lib/yahl7/v2/segment/obr.rb
CHANGED
@@ -17,13 +17,13 @@ module YAHL7
|
|
17
17
|
observation_datetime: { index: 7, class: YAHL7::V2::DataType::TS },
|
18
18
|
observation_end_datetime: { index: 8, class: YAHL7::V2::DataType::TS },
|
19
19
|
collection_volume: 9,
|
20
|
-
collector_identifier: 10,
|
20
|
+
collector_identifier: { index: 10, class: YAHL7::V2::DataType::XCN },
|
21
21
|
specimen_action_code: 11,
|
22
22
|
danger_code: 12,
|
23
23
|
relevant_clinical_information: 13,
|
24
24
|
specimen_received_datetime: { index: 14, class: YAHL7::V2::DataType::TS },
|
25
25
|
specimen_source: 15,
|
26
|
-
ordering_provider: 16,
|
26
|
+
ordering_provider: { index: 16, class: YAHL7::V2::DataType::XCN },
|
27
27
|
order_callback_phone_number: { index: 17, class: YAHL7::V2::DataType::XTN },
|
28
28
|
placer_field1: 18,
|
29
29
|
placer_field2: 19,
|
@@ -35,7 +35,7 @@ module YAHL7
|
|
35
35
|
result_status: 25,
|
36
36
|
parent_result: 26,
|
37
37
|
quantity_timing: { index: 27, class: YAHL7::V2::DataType::TQ },
|
38
|
-
result_copies_to: 28,
|
38
|
+
result_copies_to: { index: 28, class: YAHL7::V2::DataType::XCN },
|
39
39
|
parent: 29,
|
40
40
|
transportation_mode: 30,
|
41
41
|
reason_for_study: 31,
|
data/lib/yahl7/v2/segment/obx.rb
CHANGED
@@ -12,8 +12,7 @@ module YAHL7
|
|
12
12
|
value_type: 2,
|
13
13
|
observation_identifier: 3,
|
14
14
|
observation_sub_id: 4,
|
15
|
-
|
16
|
-
# somewhat complex
|
15
|
+
observation_value: { index: 5, class: YAHL7::V2::DataType::FT },
|
17
16
|
units: 6,
|
18
17
|
reference_range: 7,
|
19
18
|
abnormal_flags: 8,
|
@@ -24,15 +23,11 @@ module YAHL7
|
|
24
23
|
user_defined_access_checks: 13,
|
25
24
|
observation_datetime: { index: 14, class: YAHL7::V2::DataType::TS },
|
26
25
|
producer_id: 15,
|
27
|
-
responsible_observer: 16,
|
26
|
+
responsible_observer: { index: 16, class: YAHL7::V2::DataType::XCN },
|
28
27
|
observation_method: 17,
|
29
28
|
equipment_instance_identifier: 18,
|
30
29
|
analysis_datetime: { index: 19, class: YAHL7::V2::DataType::TS }
|
31
30
|
})
|
32
|
-
|
33
|
-
def observation_value
|
34
|
-
self[5]
|
35
|
-
end
|
36
31
|
end
|
37
32
|
end
|
38
33
|
end
|
data/lib/yahl7/v2/segment/orc.rb
CHANGED
@@ -17,16 +17,16 @@ module YAHL7
|
|
17
17
|
quantity_timing: { index: 7, class: YAHL7::V2::DataType::TQ },
|
18
18
|
parent_order: 8,
|
19
19
|
transaction_datetime: 9,
|
20
|
-
entered_by: 10,
|
21
|
-
verified_by: 11,
|
22
|
-
ordering_provider: 12,
|
20
|
+
entered_by: { index: 10, class: YAHL7::V2::DataType::XCN },
|
21
|
+
verified_by: { index: 11, class: YAHL7::V2::DataType::XCN },
|
22
|
+
ordering_provider: { index: 12, class: YAHL7::V2::DataType::XCN },
|
23
23
|
enterer_location: 13,
|
24
24
|
callback_phone_number: { index: 14, class: YAHL7::V2::DataType::XTN },
|
25
25
|
order_effective_datetime: { index: 15, class: YAHL7::V2::DataType::TS },
|
26
26
|
order_control_code_reason: 16,
|
27
27
|
entering_organization: 17,
|
28
28
|
entering_device: 18,
|
29
|
-
action_by: 19,
|
29
|
+
action_by: { index: 19, class: YAHL7::V2::DataType::XCN },
|
30
30
|
advanced_beneficiary_notice_code: 20,
|
31
31
|
ordering_facility_name: 21,
|
32
32
|
ordering_facility_address: { index: 22, class: YAHL7::V2::DataType::XAD },
|
data/lib/yahl7/v2/segment/pd1.rb
CHANGED
@@ -11,7 +11,7 @@ module YAHL7
|
|
11
11
|
living_dependency: 1,
|
12
12
|
living_arrangement: 2,
|
13
13
|
patient_primary_facility: 3,
|
14
|
-
patient_primary_care_provider: 4,
|
14
|
+
patient_primary_care_provider: { index: 4, class: YAHL7::V2::DataType::XCN },
|
15
15
|
student_indicator: 5,
|
16
16
|
handicap: 6,
|
17
17
|
living_will_code: 7,
|
data/lib/yahl7/v2/segment/pv1.rb
CHANGED
@@ -14,9 +14,9 @@ module YAHL7
|
|
14
14
|
admission_type: 4,
|
15
15
|
preadmit_number: 5,
|
16
16
|
prior_patient_location: 6,
|
17
|
-
attending_doctor: 7,
|
18
|
-
referring_doctor: 8,
|
19
|
-
consulting_doctor: 9,
|
17
|
+
attending_doctor: { index: 7, class: YAHL7::V2::DataType::XCN },
|
18
|
+
referring_doctor: { index: 8, class: YAHL7::V2::DataType::XCN },
|
19
|
+
consulting_doctor: { index: 9, class: YAHL7::V2::DataType::XCN },
|
20
20
|
hospital_service: 10,
|
21
21
|
temporary_location: 11,
|
22
22
|
preadmit_test_indicator: 12,
|
@@ -24,7 +24,7 @@ module YAHL7
|
|
24
24
|
admit_source: 14,
|
25
25
|
ambulatory_status: 15,
|
26
26
|
vip_indicator: 16,
|
27
|
-
admitting_doctor: 17,
|
27
|
+
admitting_doctor: { index: 17, class: YAHL7::V2::DataType::XCN },
|
28
28
|
patient_type: 18,
|
29
29
|
visit_number: 19,
|
30
30
|
financial_class: 20,
|
@@ -59,7 +59,7 @@ module YAHL7
|
|
59
59
|
total_payouts: 49,
|
60
60
|
alternate_visit_id: 50,
|
61
61
|
visit_indicator: 51,
|
62
|
-
other_healthcare_provider: 52
|
62
|
+
other_healthcare_provider: { index: 52, class: YAHL7::V2::DataType::XCN }
|
63
63
|
})
|
64
64
|
end
|
65
65
|
end
|
data/lib/yahl7/v2/segment.rb
CHANGED
@@ -16,16 +16,22 @@ module YAHL7
|
|
16
16
|
# Subsequent data access will be cached, however, so the performance hit of
|
17
17
|
# subsequent calls should be negligable.
|
18
18
|
class Segment
|
19
|
-
attr_accessor :parts, :field_parser
|
19
|
+
attr_accessor :body, :parts, :field_parser, :parse_options
|
20
20
|
|
21
21
|
def initialize(body, parse_options)
|
22
|
-
@
|
22
|
+
@body = body
|
23
|
+
@parts = @body.split(parse_options.repetition_sep)
|
23
24
|
@parsed = Array.new(@parts.count)
|
24
25
|
@field_parser = FieldParser.new(parse_options)
|
26
|
+
@parse_options = parse_options
|
25
27
|
|
26
28
|
return unless defined?(FIELD_MAPPING)
|
27
29
|
end
|
28
30
|
|
31
|
+
def to_s
|
32
|
+
@body
|
33
|
+
end
|
34
|
+
|
29
35
|
# This method allows users to use an index to get a field out of a segment
|
30
36
|
# at a given position. This allows data to be fetched from segments like
|
31
37
|
# arrays as shown below:
|
data/lib/yahl7/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yahl7
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mylan Connolly
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A simple HL7 parser that focuses on being robust and easy to use
|
14
14
|
email:
|
@@ -46,6 +46,7 @@ files:
|
|
46
46
|
- lib/yahl7/v2/data_type/tq.rb
|
47
47
|
- lib/yahl7/v2/data_type/ts.rb
|
48
48
|
- lib/yahl7/v2/data_type/xad.rb
|
49
|
+
- lib/yahl7/v2/data_type/xcn.rb
|
49
50
|
- lib/yahl7/v2/data_type/xpn.rb
|
50
51
|
- lib/yahl7/v2/data_type/xtn.rb
|
51
52
|
- lib/yahl7/v2/date_time.rb
|