Class: FHIR::QuantitiesUcum

Inherits:
Rubrics
  • Object
show all
Defined in:
lib/rubrics/quantities_ucum.rb

Constant Summary collapse

IGNORE =
[
  'TestScript','Task','StructureDefinition','SearchParameter','Questionnaire','QuestionnaireResponse','Parameters','OperationDefinition',
  'Group','ExplanationOfBenefit','Contract','Conformance','Claim','ActivityDefinition'
]
CHECK =
[
  'VisionPrescription','SupplyDelivery','Substance','Specimen','Sequence','Observation','NutritionRequest',
  'MedicationStatement','MedicationOrder','MedicationDispense','MedicationAdministration','Medication','Immunization','CarePlan'
]

Class Method Summary collapse

Methods inherited from Rubrics

apply, response, rubric

Class Method Details

.check_fields(fhir_model) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rubrics/quantities_ucum.rb', line 32

def self.check_fields(fhir_model)
  results = {
    :eligible_fields => 0,
    :validated_fields => 0
  }
  # check each codeable field
  fhir_model.class::METADATA.each do |key, meta|
    field_name = meta['local_name'] || key
    value = fhir_model.instance_variable_get("@#{field_name}")

    if meta['type']=='Quantity'
      if value.is_a?(Array)
        value.each do |v| 
          results.merge!(check_quantity(v)){|k,a,b|a+b}            
        end
      else
        results.merge!(check_quantity(value)){|k,a,b|a+b}
      end
    end
  end
  results
end

.check_quantity(quantity) ⇒ Object

This method checks whether or not the quantity uses UCUM.



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/rubrics/quantities_ucum.rb', line 56

def self.check_quantity(quantity)
  result = {
    :eligible_fields => 1,
    :validated_fields => 0
  } 
  if quantity && quantity.system && quantity.system.start_with?('http://unitsofmeasure.org')
    result[:validated_fields] +=1 
  elsif quantity && quantity.unit 
    result[:validated_fields] +=1 if FHIR::Terminology.is_known_ucum?(quantity.unit)        
  end
  result
end