Class: Oddb2xml::FHIR::MedicinalProduct

Inherits:
Object
  • Object
show all
Defined in:
lib/oddb2xml/fhir_support.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource) ⇒ MedicinalProduct

Returns a new instance of MedicinalProduct.



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# File 'lib/oddb2xml/fhir_support.rb', line 219

def initialize(resource)
  @names = {}
  resource["name"]&.each do |name|
    lang = name.dig("usage", 0, "language", "coding", 0, "code")
    @names[lang] = name["productName"]
  end

  # Get ATC code (classification[0])
  @atc_code = resource.dig("classification", 0, "coding", 0, "code")

  # Get product classification (generic/reference) (classification[1])
  @classification = resource.dig("classification", 1, "coding", 0, "code")
  
  # Get IT codes (Index Therapeuticus) from classification with correct system
  @it_codes = []
  resource["classification"]&.each do |cls|
    cls["coding"]&.each do |coding|
      if coding["system"]&.include?("index-therapeuticus")
        # Format IT code from "080300" to "08.03.00" or "08.03."
        it_code = format_it_code(coding["code"])
        @it_codes << it_code if it_code
      end
    end
  end
end

Instance Attribute Details

#atc_codeObject (readonly)

Returns the value of attribute atc_code.



217
218
219
# File 'lib/oddb2xml/fhir_support.rb', line 217

def atc_code
  @atc_code
end

#classificationObject (readonly)

Returns the value of attribute classification.



217
218
219
# File 'lib/oddb2xml/fhir_support.rb', line 217

def classification
  @classification
end

#it_codesObject (readonly)

Returns the value of attribute it_codes.



217
218
219
# File 'lib/oddb2xml/fhir_support.rb', line 217

def it_codes
  @it_codes
end

#namesObject (readonly)

Returns the value of attribute names.



217
218
219
# File 'lib/oddb2xml/fhir_support.rb', line 217

def names
  @names
end

Instance Method Details

#it_codeObject



257
258
259
260
# File 'lib/oddb2xml/fhir_support.rb', line 257

def it_code
  # Return first IT code (primary), formatted like "08.03.00"
  @it_codes.first
end

#name_deObject



245
246
247
# File 'lib/oddb2xml/fhir_support.rb', line 245

def name_de
  @names["de-CH"] || @names["de"]
end

#name_frObject



249
250
251
# File 'lib/oddb2xml/fhir_support.rb', line 249

def name_fr
  @names["fr-CH"] || @names["fr"]
end

#name_itObject



253
254
255
# File 'lib/oddb2xml/fhir_support.rb', line 253

def name_it
  @names["it-CH"] || @names["it"]
end