Module: SimpleXml::Utilities
- Includes:
- HQMF::Conversion::Utilities
- Included in:
- Coded, DataCriteria, Document, PopulationCriteria, Precondition, Range, Reference, SubTree, SubsetOperator, TemporalReference, TypedReference, Value
- Defined in:
- lib/model/utilities.rb
Constant Summary collapse
- MEASURE_ATTRIBUTES_MAP =
{ copyright: {"id"=>"COPYRIGHT", "code"=>"COPY", "name"=>"Copyright"}, scoring: {"id"=>"MEASURE_SCORING", "code"=>"MSRSCORE", "name"=>"Measure Scoring"}, types: {"id"=>"MEASURE_TYPE", "code"=>"MSRTYPE", "name"=>"Measure Type"}, stratification: {"id"=>"STRATIFICATION", "code"=>"STRAT", "name"=>"Stratification"}, riskAdjustment: {"id"=>"RISK_ADJUSTMENT", "code"=>"MSRADJ", "name"=>"Risk Adjustment"}, aggregation: {"id"=>"RATE_AGGREGATION", "code"=>"MSRAGG", "name"=>"Rate Aggregation"}, rationale: {"id"=>"RATIONALE", "code"=>"RAT", "name"=>"Rationale"}, recommendations: {"id"=>"CLINICAL_RECOMMENDATION_STATEMENT", "code"=>"CRS", "name"=>"Clinical Recommendation Statement"}, improvementNotations: {"id"=>"IMPROVEMENT_NOTATION", "code"=>"IDUR", "name"=>"Improvement Notation"}, nqfid: {"id"=>"NQF_ID_NUMBER", "code"=>"OTH", "name"=>"NQF ID Number"}, disclaimer: {"id"=>"DISCLAIMER", "code"=>"DISC", "name"=>"Disclaimer"}, emeasurei: {"id"=>"EMEASURE_IDENTIFIER", "code"=>"OTH", "name"=>"eMeasure Identifier"}, references: {"id"=>"REFERENCE", "code"=>"REF", "name"=>"Reference"}, definitions: {"id"=>"DEFINITION", "code"=>"DEF", "name"=>"Definition"}, guidance: {"id"=>"GUIDANCE", "code"=>"GUIDE", "name"=>"Guidance"}, transmissionFormat: {"id"=>"TRANSMISSION_FORMAT", "code"=>"OTH", "name"=>"Transmission Format"}, initialPatientPopDescription: {"id"=>"INITIAL_PATIENT_POPULATION", "code"=>"IPP", "name"=>"Initial Patient Population"}, denominatorDescription: {"id"=>"DENOMINATOR", "code"=>"DENOM", "name"=>"Denominator"}, denominatorExclusionsDescription: {"id"=>"DENOMINATOR_EXCLUSIONS", "code"=>"OTH", "name"=>"Denominator Exclusions"}, numeratorDescription: {"id"=>"NUMERATOR", "code"=>"NUMER", "name"=>"Numerator"}, numeratorExclusionsDescription: {"id"=>"NUMERATOR_EXCLUSIONS", "code"=>"NUMEX", "name"=>"Numerator Exclusions"}, denominatorExceptionsDescription: {"id"=>"DENOMINATOR_EXCEPTIONS", "code"=>"DENEXCEP", "name"=>"Denominator Exceptions"}, measurePopulationDescription: {"id"=>"MEASURE_POPULATION", "code"=>"MSRPOPL", "name"=>"Measure Population"}, measurePopulationExlusionsDescription: {"id"=>"MEASURE_POPULATION_EXCLUSIONS", "code"=>"MSRPOPLEX", "name"=>"Measure Population Exclusions"}, measureObservationsDescription: {"id"=>"MEASURE_OBSERVATIONS", "code"=>"OTH", "name"=>"Measure Observations"}, supplementalData: {"id"=>"SUPPLEMENTAL_DATA_ELEMENTS", "code"=>"OTH", "name"=>"Supplemental Data Elements"} }
Class Method Summary collapse
-
.attr_val(node, xpath) ⇒ Object
Utility function to handle optional attributes.
- .build_value(comparison, quantity, unit, type = nil) ⇒ Object
Instance Method Summary collapse
-
#attr_val(xpath) ⇒ Object
Utility function to handle optional attributes.
- #children_of(node) ⇒ Object
- #comments_on(node) ⇒ Object
- #create_age_timing(birthdate_hqmf_id, right, operator, quantity, unit) ⇒ Object
- #create_birthdate_criteria ⇒ Object
Class Method Details
.attr_val(node, xpath) ⇒ Object
Utility function to handle optional attributes
16 17 18 19 20 21 22 23 |
# File 'lib/model/utilities.rb', line 16 def self.attr_val(node, xpath) attr = node.at_xpath(xpath) if attr attr.value else nil end end |
.build_value(comparison, quantity, unit, type = nil) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/model/utilities.rb', line 34 def self.build_value(comparison, quantity, unit, type=nil) return nil if !comparison || !quantity unit = nil if unit && unit.strip.empty? if comparison.downcase == 'equal to' && type != 'IVL_TS' Value.new(quantity, unit, true) else Range.new(comparison, quantity, unit, type) end end |
Instance Method Details
#attr_val(xpath) ⇒ Object
Utility function to handle optional attributes
9 10 11 |
# File 'lib/model/utilities.rb', line 9 def attr_val(xpath) Utilities::attr_val(@entry, xpath) end |
#children_of(node) ⇒ Object
25 26 27 |
# File 'lib/model/utilities.rb', line 25 def children_of(node) node.xpath('*[not(self::text|self::comment)]') end |
#comments_on(node) ⇒ Object
29 30 31 32 |
# File 'lib/model/utilities.rb', line 29 def comments_on(node) # find comments and remove comments that have a value of 'comment' since those are bad MAT artifacts node.xpath('comment').reject {|c| c.children.empty?}.map {|c| c.children[0].to_s} end |
#create_age_timing(birthdate_hqmf_id, right, operator, quantity, unit) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/model/utilities.rb', line 49 def create_age_timing(birthdate_hqmf_id, right, operator, quantity, unit) age_element = " <relationalOp displayName='Starts Before Start Of' type='SBS' operatorType='#{operator}' quantity='#{quantity}' unit='#{unit}'> <elementRef displayName='birthdate : Patient Characteristic Birthdate' id='#{birthdate_hqmf_id}' type='qdm'/> #{right.to_s} </relationalOp> " Document.parse(age_element).child end |
#create_birthdate_criteria ⇒ Object
44 45 46 47 |
# File 'lib/model/utilities.rb', line 44 def create_birthdate_criteria default_birthdate = '<qdm datatype="Patient Characteristic Birthdate" id="birth_date_hqmf_id" name="birthdate" oid="2.16.840.1.113883.3.117.1.7.1.70" suppDataElement="false" taxonomy="User Defined QDM" uuid="birth_date_hqmf_id" version="1.0"/>' DataCriteria.new(Document.parse(default_birthdate).child) end |