Class: HQMF::Document
- Inherits:
-
Object
- Object
- HQMF::Document
- Includes:
- Conversion::Utilities
- Defined in:
- lib/hqmf-model/document.rb
Overview
Class representing an HQMF document
Constant Summary collapse
- MEASURE_PERIOD_ID =
"MeasurePeriod"
- STRATIFIED_POPULATION_TEMPLATE_ID =
'2.16.840.1.113883.3.100.1.2'
- STRATIFIED_POPULATION_TEMPLATE_TITLE =
'Stratified'
Instance Attribute Summary collapse
-
#attributes ⇒ Object
readonly
Returns the value of attribute attributes.
-
#cms_id ⇒ Object
readonly
Returns the value of attribute cms_id.
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#hqmf_id ⇒ Object
readonly
Returns the value of attribute hqmf_id.
-
#hqmf_set_id ⇒ Object
readonly
Returns the value of attribute hqmf_set_id.
-
#hqmf_version_number ⇒ Object
readonly
Returns the value of attribute hqmf_version_number.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#measure_period ⇒ Object
readonly
Returns the value of attribute measure_period.
-
#populations ⇒ Object
readonly
Returns the value of attribute populations.
-
#source_data_criteria ⇒ Object
readonly
Returns the value of attribute source_data_criteria.
-
#title ⇒ Object
readonly
Returns the value of attribute title.
Class Method Summary collapse
-
.from_json(json) ⇒ Object
Create a new HQMF::Document from a JSON hash keyed with symbols.
Instance Method Summary collapse
- #all_code_set_oids ⇒ Object
-
#all_data_criteria ⇒ Array
Get all the data criteria defined by the measure.
-
#all_population_criteria ⇒ Array
Get all the population criteria defined by the measure.
-
#data_criteria(id) ⇒ HQMF::DataCriteria
Get a specific data criteria by id.
-
#initialize(id, hqmf_id, hqmf_set_id, hqmf_version_number, cms_id, title, description, population_criteria, data_criteria, source_data_criteria, attributes, measure_period, populations = nil) ⇒ Document
constructor
Create a new HQMF::Document which can be converted to JavaScript.
-
#population_criteria(id) ⇒ HQMF::PopulationCriteria
Get a specific population criteria by id.
-
#referenced_data_criteria ⇒ Array
An array of HQMF::DataCriteria ids that are actually used in the measure.
-
#specific_occurrence_source_data_criteria(force_sources = nil) ⇒ Array
Get the source data criteria that are specific occurrences.
- #to_json ⇒ Object
Methods included from Conversion::Utilities
#build_hash, #check_equality, #json_array, #openstruct_to_json
Constructor Details
#initialize(id, hqmf_id, hqmf_set_id, hqmf_version_number, cms_id, title, description, population_criteria, data_criteria, source_data_criteria, attributes, measure_period, populations = nil) ⇒ Document
Create a new HQMF::Document which can be converted to JavaScript
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/hqmf-model/document.rb', line 27 def initialize(id, hqmf_id, hqmf_set_id, hqmf_version_number, cms_id, title, description, population_criteria, data_criteria, source_data_criteria, attributes, measure_period, populations=nil) @id = id @hqmf_id = hqmf_id @hqmf_set_id = hqmf_set_id @hqmf_version_number = hqmf_version_number @cms_id = cms_id @title = title @description = description @population_criteria = population_criteria @data_criteria = data_criteria @source_data_criteria = source_data_criteria @attributes = attributes @populations = populations || [ { HQMF::PopulationCriteria::IPP => HQMF::PopulationCriteria::IPP, HQMF::PopulationCriteria::DENOM => HQMF::PopulationCriteria::DENOM, HQMF::PopulationCriteria::NUMER => HQMF::PopulationCriteria::NUMER, HQMF::PopulationCriteria::DENEXCEP => HQMF::PopulationCriteria::DENEXCEP, HQMF::PopulationCriteria::DENEX => HQMF::PopulationCriteria::DENEX } ] @measure_period = measure_period end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
Returns the value of attribute attributes.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def attributes @attributes end |
#cms_id ⇒ Object (readonly)
Returns the value of attribute cms_id.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def cms_id @cms_id end |
#description ⇒ Object (readonly)
Returns the value of attribute description.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def description @description end |
#hqmf_id ⇒ Object (readonly)
Returns the value of attribute hqmf_id.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def hqmf_id @hqmf_id end |
#hqmf_set_id ⇒ Object (readonly)
Returns the value of attribute hqmf_set_id.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def hqmf_set_id @hqmf_set_id end |
#hqmf_version_number ⇒ Object (readonly)
Returns the value of attribute hqmf_version_number.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def hqmf_version_number @hqmf_version_number end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def id @id end |
#measure_period ⇒ Object (readonly)
Returns the value of attribute measure_period.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def measure_period @measure_period end |
#populations ⇒ Object (readonly)
Returns the value of attribute populations.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def populations @populations end |
#source_data_criteria ⇒ Object (readonly)
Returns the value of attribute source_data_criteria.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def source_data_criteria @source_data_criteria end |
#title ⇒ Object (readonly)
Returns the value of attribute title.
12 13 14 |
# File 'lib/hqmf-model/document.rb', line 12 def title @title end |
Class Method Details
.from_json(json) ⇒ Object
Create a new HQMF::Document from a JSON hash keyed with symbols
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/hqmf-model/document.rb', line 52 def self.from_json(json) id = json["id"] hqmf_id = json["hqmf_id"] hqmf_set_id = json["hqmf_set_id"] hqmf_version_number = json["hqmf_version_number"] title = json["title"] description = json["description"] cms_id = json["cms_id"] population_criterias = [] json["population_criteria"].each do |key, population_criteria| population_criterias << HQMF::PopulationCriteria.from_json(key.to_s, population_criteria) end if json['population_criteria'] data_criterias = [] json["data_criteria"].each do |key, data_criteria| data_criterias << HQMF::DataCriteria.from_json(key.to_s, data_criteria) end source_data_criterias = [] json["source_data_criteria"].each do |key, data_criteria| source_data_criterias << HQMF::DataCriteria.from_json(key.to_s, data_criteria) end populations = json["populations"] if json["populations"] attributes = json["attributes"].map {|attribute| HQMF::Attribute.from_json(attribute)} if json["attributes"] measure_period = HQMF::Range.from_json(json["measure_period"]) if json["measure_period"] HQMF::Document.new(id, hqmf_id, hqmf_set_id, hqmf_version_number, cms_id, title, description, population_criterias, data_criterias, source_data_criterias, attributes, measure_period,populations) end |
Instance Method Details
#all_code_set_oids ⇒ Object
132 133 134 |
# File 'lib/hqmf-model/document.rb', line 132 def all_code_set_oids (@data_criteria.map {|d| d.all_code_set_oids }).flatten.compact.uniq end |
#all_data_criteria ⇒ Array
Get all the data criteria defined by the measure
128 129 130 |
# File 'lib/hqmf-model/document.rb', line 128 def all_data_criteria @data_criteria end |
#all_population_criteria ⇒ Array
Get all the population criteria defined by the measure
115 116 117 |
# File 'lib/hqmf-model/document.rb', line 115 def all_population_criteria @population_criteria end |
#data_criteria(id) ⇒ HQMF::DataCriteria
Get a specific data criteria by id.
175 176 177 |
# File 'lib/hqmf-model/document.rb', line 175 def data_criteria(id) find(@data_criteria, :id, id) end |
#population_criteria(id) ⇒ HQMF::PopulationCriteria
Get a specific population criteria by id.
122 123 124 |
# File 'lib/hqmf-model/document.rb', line 122 def population_criteria(id) find(@population_criteria, :id, id) end |
#referenced_data_criteria ⇒ Array
Returns an array of HQMF::DataCriteria ids that are actually used in the measure.
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/hqmf-model/document.rb', line 152 def referenced_data_criteria data_criteria_ids = [] @population_criteria.each do |population| data_criteria_ids.concat(population.referenced_data_criteria) end references = [] data_criteria_ids.each do |id| dc = data_criteria(id) references << id from_dc = dc.referenced_data_criteria(self) references.concat(from_dc) end used_dc = [] references.uniq.each do |id| used_dc << data_criteria(id) end used_dc end |
#specific_occurrence_source_data_criteria(force_sources = nil) ⇒ Array
Get the source data criteria that are specific occurrences
138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/hqmf-model/document.rb', line 138 def specific_occurrence_source_data_criteria(force_sources=nil) return [] if @source_data_criteria.nil? matching = @source_data_criteria.select {|dc| !dc.specific_occurrence.nil?} if force_sources existing = matching.map(&:id) matching.concat @source_data_criteria.select {|dc| !existing.include?(dc.id) && force_sources.include?(dc.id)} end matching end |
#to_json ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/hqmf-model/document.rb', line 84 def to_json json = build_hash(self, [:id, :hqmf_id, :hqmf_set_id, :hqmf_version_number, :title, :description, :cms_id]) json[:population_criteria] = {} @population_criteria.each do |population| json[:population_criteria].merge! population.to_json end json[:data_criteria] = {} @data_criteria.each do |data| json[:data_criteria].merge! data.to_json end json[:source_data_criteria] = {} @source_data_criteria.each do |data| json[:source_data_criteria].merge! data.to_json end x = nil json[:attributes] = x if x = json_array(@attributes) json[:populations] = @populations json[:measure_period] = @measure_period.to_json json end |