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.
-
#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, 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 ⇒ 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, 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 |
# File 'lib/hqmf-model/document.rb', line 27 def initialize(id, hqmf_id, hqmf_set_id, hqmf_version_number, 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 @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 |
#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
51 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 |
# File 'lib/hqmf-model/document.rb', line 51 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"] 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, title, description, population_criterias, data_criterias, source_data_criterias, attributes, measure_period,populations) end |
Instance Method Details
#all_code_set_oids ⇒ Object
130 131 132 |
# File 'lib/hqmf-model/document.rb', line 130 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
126 127 128 |
# File 'lib/hqmf-model/document.rb', line 126 def all_data_criteria @data_criteria end |
#all_population_criteria ⇒ Array
Get all the population criteria defined by the measure
113 114 115 |
# File 'lib/hqmf-model/document.rb', line 113 def all_population_criteria @population_criteria end |
#data_criteria(id) ⇒ HQMF::DataCriteria
Get a specific data criteria by id.
166 167 168 |
# File 'lib/hqmf-model/document.rb', line 166 def data_criteria(id) find(@data_criteria, :id, id) end |
#population_criteria(id) ⇒ HQMF::PopulationCriteria
Get a specific population criteria by id.
120 121 122 |
# File 'lib/hqmf-model/document.rb', line 120 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.
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/hqmf-model/document.rb', line 143 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 ⇒ Array
Get the source data criteria that are specific occurrences
136 137 138 139 |
# File 'lib/hqmf-model/document.rb', line 136 def specific_occurrence_source_data_criteria return [] if @source_data_criteria.nil? @source_data_criteria.select {|dc| !dc.specific_occurrence.nil?} end |
#to_json ⇒ Object
82 83 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 |
# File 'lib/hqmf-model/document.rb', line 82 def to_json json = build_hash(self, [:id, :hqmf_id, :hqmf_set_id, :hqmf_version_number, :title, :description]) 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 |