Class: QdmPatient
Instance Method Summary
collapse
#care_partner_entity?, #organization_entity?, #patient_entity?, #practitioner_entity?
#birthdate, #ethnic_group, #expiration, #gender, #given_name, #mrn, #patient, #payer, #provider, #provider_ccn, #provider_npi, #provider_street, #provider_tin, #provider_type_code, #race
Constructor Details
#initialize(patient, include_style) ⇒ QdmPatient
Returns a new instance of QdmPatient.
8
9
10
11
12
13
14
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 8
def initialize(patient, include_style)
@include_style = include_style
@patient = patient
@qdmPatient = patient.qdmPatient
@patient_addresses = patient['addresses']
@patient_telecoms = patient['telecoms']
end
|
Instance Method Details
#code_code_system_string ⇒ Object
89
90
91
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 89
def code_code_system_string
code_for_element(self)
end
|
#code_description(element = self) ⇒ Object
101
102
103
104
105
106
107
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 101
def code_description(element = self)
has_descriptions = @patient.respond_to?(:code_description_hash) && !@patient.code_description_hash.empty?
return " - #{@patient.code_description_hash["#{element['code']}:#{element['system']}".tr('.', '_')]}" if has_descriptions
""
end
|
#code_for_element(element) ⇒ Object
93
94
95
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 93
def code_for_element(element)
"#{element['code']} (#{HQMF::Util::CodeSystemHelper.code_system_for(element['system'])})#{code_description(element)}"
end
|
#code_system_name ⇒ Object
#data_elements ⇒ Object
48
49
50
51
52
53
54
55
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 48
def data_elements
de_hash = {}
@qdmPatient.dataElements.each do |data_element|
data_element['methodCode'] = data_element['method'] if data_element['method']
de_hash[data_element._type] ? de_hash[data_element._type][:element_list] << data_element : de_hash[data_element._type] = { title: data_element._type, element_list: [data_element] }
end
JSON.parse(de_hash.values.to_json)
end
|
#demographic_code_description(code) ⇒ Object
109
110
111
112
113
114
115
116
117
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 109
def demographic_code_description(code)
has_descriptions = code && @patient.respond_to?(:code_description_hash) && !@patient.code_description_hash.empty?
if has_descriptions
key = @patient.code_description_hash.keys.detect { |k| k.starts_with?("#{send(code)}:") }
return " - #{@patient.code_description_hash[key]}"
end
""
end
|
#diagnosis_rank_string ⇒ Object
130
131
132
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 130
def diagnosis_rank_string
" (rank: #{self['rank']})" if self['rank']
end
|
#end_time? ⇒ Boolean
134
135
136
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 134
def end_time?
self['high'] && DateTime.parse(self['high']).year < 3000
end
|
#entity_string ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 62
def entity_string
if care_partner_entity?
"</br> Care Partner: #{identifier_for_element(self['identifier'])}
</br> Care Partner Relationship: #{code_for_element(self['relationship'])}"
elsif organization_entity?
"</br> Organization: #{identifier_for_element(self['identifier'])}
</br> Organization Type: #{code_for_element(self['type'])}"
elsif patient_entity?
"</br> Patient: #{identifier_for_element(self['identifier'])}"
elsif practitioner_entity?
"</br> Practitioner: #{identifier_for_element(self['identifier'])}
</br> Practitioner Role: #{code_for_element(self['role'])},
</br> Practitioner Specialty: #{code_for_element(self['specialty'])},
</br> Practitioner Qualification: #{code_for_element(self['qualification'])}"
else
"</br> Entity: #{identifier_for_element(self['identifier'])}"
end
end
|
#identifier_for_element(identifier) ⇒ Object
85
86
87
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 85
def identifier_for_element(identifier)
"#{identifier['value']} (#{identifier['namingSystem']})"
end
|
#identifier_string ⇒ Object
81
82
83
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 81
def identifier_string
identifier_for_element(self)
end
|
#include_style? ⇒ Boolean
44
45
46
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 44
def include_style?
@include_style
end
|
#nested_code_string ⇒ Object
126
127
128
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 126
def nested_code_string
code_for_element(self['code'])
end
|
#patient_addresses ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 16
def patient_addresses
@patient_addresses ||= [CQM::Address.new(
use: 'HP',
street: ['202 Burlington Rd.'],
city: 'Bedford',
state: 'MA',
zip: '01730',
country: 'US'
)]
address_str = ""
@patient_addresses.each do |address|
address_str += "<address>"
address['street'].each { |street| address_str += "#{street}<br>" }
address_str += "#{address['city']}, #{address['state']} #{address['zip']}<br> #{address['country']} </address>"
end
address_str
end
|
#patient_telecoms ⇒ Object
35
36
37
38
39
40
41
42
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 35
def patient_telecoms
@patient_telecoms ||= [CQM::Telecom.new(
use: 'HP',
value: '555-555-2003'
)]
@patient_telecoms.map { |telecom| "(#{telecom['use']}) #{telecom['value']}" }.join("<br>")
end
|
#result_string ⇒ Object
119
120
121
122
123
124
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 119
def result_string
return unit_string if self['value']
return code_code_system_string if self['code']
self['result']
end
|
#unit_string ⇒ Object
57
58
59
60
|
# File 'lib/html-export/qdm-patient/qdm_patient.rb', line 57
def unit_string
return "#{self['value']} " if !self['unit'] || self['unit'] == '1'
"#{self['value']} #{self['unit']}"
end
|