health-data-standards 3.4.4 → 3.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -1
  3. data/lib/health-data-standards/export/rendering_context.rb +1 -3
  4. data/lib/health-data-standards/export/template_helper.rb +18 -6
  5. data/lib/health-data-standards/import/cat1/diagnosis_active_importer.rb +1 -1
  6. data/lib/health-data-standards/import/cat1/diagnosis_inactive_importer.rb +1 -1
  7. data/lib/health-data-standards/import/cat1/diagnostic_study_order_importer.rb +1 -1
  8. data/lib/health-data-standards/import/cat1/ecog_status_importer.rb +1 -1
  9. data/lib/health-data-standards/import/cat1/encounter_order_importer.rb +1 -1
  10. data/lib/health-data-standards/import/cat1/encounter_performed_importer.rb +1 -1
  11. data/lib/health-data-standards/import/cat1/gestational_age_importer.rb +1 -1
  12. data/lib/health-data-standards/import/cat1/insurance_provider_importer.rb +1 -1
  13. data/lib/health-data-standards/import/cat1/lab_order_importer.rb +1 -1
  14. data/lib/health-data-standards/import/cat1/lab_result_importer.rb +1 -1
  15. data/lib/health-data-standards/import/cat1/medication_active_importer.rb +1 -1
  16. data/lib/health-data-standards/import/cat1/medication_dispensed_importer.rb +1 -1
  17. data/lib/health-data-standards/import/cat1/patient_importer.rb +32 -30
  18. data/lib/health-data-standards/import/cat1/procedure_intolerance_importer.rb +1 -1
  19. data/lib/health-data-standards/import/cat1/procedure_order_importer.rb +1 -1
  20. data/lib/health-data-standards/import/cat1/procedure_performed_importer.rb +1 -1
  21. data/lib/health-data-standards/import/cat1/symptom_active_importer.rb +1 -1
  22. data/lib/health-data-standards/import/cat1/tobacco_use_importer.rb +1 -1
  23. data/lib/health-data-standards/import/provider_import_utils.rb +6 -7
  24. data/lib/health-data-standards/models/provider.rb +17 -15
  25. data/templates/cat1/_record_target.cat1.erb +21 -9
  26. metadata +38 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a480121f52dadad4ea76ab611bfa5547873266df
4
- data.tar.gz: 2a1f0fe2ae72b74f35d8db365da80e3d0654a915
3
+ metadata.gz: 68d3be05b049b75724e22b58c9a19635903b9409
4
+ data.tar.gz: 42ae8b42651d913d9122a4591a6e6789b381ffaa
5
5
  SHA512:
6
- metadata.gz: 37ef1885436c68bfeff5e2ea0b055365d6bc4ae4623c152cf0299646369a80a197bd8a3b89096f7c225ccbe049de2ffc1ac1e2da9aa741a88c6640231db6ef67
7
- data.tar.gz: b54ff8e18fd0f0c47e54b6a2d46440d10307ef5965026b948972d4198fe54e6e3938e0c68b63e8d23a087cd19af8976a6aa7bb24a6bf8ca225fd438cc233f841
6
+ metadata.gz: 30efed49b0060bba83cc88b4d1eaad0f93bd3fddc01d084d6330bf25884d61c2f0f3b850cabeb153df1a506e7f724d61afd28a6432015a2b826db0abb2181aeb
7
+ data.tar.gz: 5c500ccd6d7687fdcdfc211b1fbf4d9a47bc8148ff9737f302e5c710dcdf042082312aceeb7f5f55583aa964b619ecd0d0f81fed1bdccdf31db7d3a256de1976
data/README.md CHANGED
@@ -25,11 +25,19 @@ Please try to follow the [GitHub Coding Style Guides](https://github.com/stylegu
25
25
  Change Log
26
26
  ==========
27
27
 
28
- 3.4.4
28
+ 3.4.5 - Not yet released
29
+
30
+ * Performance improvents in all exports through template caching
31
+ * QRDA Cat I export now exports the record's actual address if present
32
+ * QRDA Cat I export - Bug fix - previously patients with a race but no ethnicity would cause exceptions
33
+ * QRDA Cat I import - performance improvements through more efficient XPath expressions
34
+
35
+ 3.4.4 - March 25, 2014
29
36
 
30
37
  * Updating the Measure model to deal with continuous variable and NQF and CMS ids through Measure.categories
31
38
  * Bug fix - Filters were not properly handled by the QueryCache
32
39
  * Bug fix - Fixed the order of populations in HQMF::PopulationCriteria::ALL_POPULATION_CODES so that DENEX is after denominator
40
+ * When importing measure bundles, you can now exclude patients and calculation results
33
41
 
34
42
  3.4.3 - March 6, 2014
35
43
 
@@ -52,9 +52,7 @@ module HealthDataStandards
52
52
  rendering_context.extend(extension)
53
53
  end
54
54
  end
55
- eruby = Erubis::EscapedEruby.new(erb) # TODO: cache these
56
- eruby.filename= @template_helper.template_file((params[:template] || params[:partial]), params[:partial]).path
57
- eruby.result(rendering_context.my_binding)
55
+ erb.result(rendering_context.my_binding)
58
56
  end.join
59
57
  end
60
58
  end
@@ -14,6 +14,7 @@ module HealthDataStandards
14
14
  @template_format = template_format
15
15
  @template_directory = template_directory
16
16
  @template_subdir = template_subdir
17
+ @template_cache = {}
17
18
  end
18
19
 
19
20
  def template_root
@@ -29,20 +30,31 @@ module HealthDataStandards
29
30
  # Returns the raw ERb for the template_name provided. This method will look in
30
31
  # template_directory/template_subdir/template_name.template_format.erb
31
32
  def template(template_name)
32
- File.read(File.join(template_root, "#{template_name}.#{@template_format}.erb"))
33
+ cache_template(template_name)
33
34
  end
34
35
 
35
36
  # Basically the same template, but prepends an underscore to the template name
36
37
  # to mimic the Rails convention for template fragments
37
38
  def partial(partial_name)
38
- template("_#{partial_name}")
39
+ cache_template("_#{partial_name}")
39
40
  end
40
41
 
41
- def template_file(file,partial=false)
42
- file = partial ? "_#{file}" : file
43
- File.new(File.join(template_root, "#{file}.#{@template_format}.erb"))
44
- end
42
+ protected
45
43
 
44
+ def cache_template(template_name)
45
+ entry = @template_cache[template_name] || {mtime:-1, erb:nil}
46
+ filename = File.join(template_root, "#{template_name}.#{@template_format}.erb")
47
+ mtime = File.mtime(filename).to_i
48
+ if mtime > entry[:mtime]
49
+ src = File.read(filename)
50
+ erb = Erubis::EscapedEruby.new(src)
51
+ erb.filename=filename
52
+ entry[:mtime]=mtime
53
+ entry[:erb] = erb
54
+ @template_cache[template_name]=entry
55
+ end
56
+ entry[:erb]
57
+ end
46
58
  end
47
59
  end
48
60
  end
@@ -4,7 +4,7 @@ module HealthDataStandards
4
4
  class DiagnosisActiveImporter < CDA::ConditionImporter
5
5
 
6
6
  def initialize
7
- super(CDA::EntryFinder.new("//cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.11']"))
7
+ super(CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.11']"))
8
8
  @status_xpath = nil # We'll hardcode this to active in create entry because this is from the
9
9
  # diagnosis active template
10
10
  @severity_xpath = "./cda:entryRelationship/cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.22.4.8']/cda:value"
@@ -4,7 +4,7 @@ module HealthDataStandards
4
4
  class DiagnosisInactiveImporter < CDA::ConditionImporter
5
5
 
6
6
  def initialize
7
- super(CDA::EntryFinder.new("//cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.13']"))
7
+ super(CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.13']"))
8
8
  @status_xpath = nil # We'll hardcode this to inactive in create entry because this is from the
9
9
  # diagnosis active template
10
10
  end
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class DiagnosticStudyOrderImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.17']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.17']"))
6
6
  super(entry_finder)
7
7
  @entry_class = Procedure
8
8
  end
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class EcogStatusImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.103']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.103']"))
6
6
  super(entry_finder)
7
7
  @code_xpath = './cda:value'
8
8
  end
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class EncounterOrderImporter < CDA::EncounterImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:encounter[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.22']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:encounter[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.22']"))
6
6
  super(entry_finder)
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class EncounterPerformedImporter < CDA::EncounterImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:encounter[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.23']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:encounter[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.23']"))
6
6
  super(entry_finder)
7
7
  @reason_xpath = "./cda:entryRelationship[@typeCode='RSON']/cda:observation"
8
8
  end
@@ -4,7 +4,7 @@ module HealthDataStandards
4
4
  class GestationalAgeImporter < CDA::SectionImporter
5
5
 
6
6
  def initialize
7
- super(CDA::EntryFinder.new("//cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.101']"))
7
+ super(CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.101']"))
8
8
 
9
9
  end
10
10
 
@@ -4,7 +4,7 @@ module HealthDataStandards
4
4
  class InsuranceProviderImporter < CDA::SectionImporter
5
5
 
6
6
  def initialize
7
- super(CDA::EntryFinder.new("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.55']"))
7
+ super(CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.55']"))
8
8
  @check_for_usable = false # needs to be this way becase InsuranceProvider does not respond
9
9
  # to usable?
10
10
  end
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class LabOrderImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.37']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.37']"))
6
6
  super(entry_finder)
7
7
  @entry_class = LabResult
8
8
  end
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class LabResultImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.40']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.40']"))
6
6
  super(entry_finder)
7
7
  @entry_class = LabResult
8
8
  end
@@ -4,7 +4,7 @@ module HealthDataStandards
4
4
  class MedicationActiveImporter < CDA::MedicationImporter
5
5
 
6
6
  def initialize
7
- super(CDA::EntryFinder.new("//cda:substanceAdministration[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.41']"))
7
+ super(CDA::EntryFinder.new("./cda:entry/cda:substanceAdministration[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.41']"))
8
8
  end
9
9
 
10
10
  def create_entry(entry_element, nrh = CDA::NarrativeReferenceHandler.new)
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class MedicationDispensedImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:supply[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.45']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:supply[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.45']"))
6
6
  super(entry_finder)
7
7
  @code_xpath = "./cda:product/cda:manufacturedProduct/cda:manufacturedMaterial/cda:code"
8
8
  @entry_class = Medication
@@ -13,53 +13,53 @@ module HealthDataStandards
13
13
  def initialize
14
14
  # This differs from other HDS patient importers in that sections can have multiple importers
15
15
  @section_importers = {}
16
- @section_importers[:care_goals] = [generate_importer(CDA::SectionImporter, "//cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.1']", '2.16.840.1.113883.3.560.1.9')] #care goal
16
+ @section_importers[:care_goals] = [generate_importer(CDA::SectionImporter, "./cda:entry/cda:observation[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.1']", '2.16.840.1.113883.3.560.1.9')] #care goal
17
17
 
18
18
  @section_importers[:conditions] = [generate_importer(GestationalAgeImporter, nil, '2.16.840.1.113883.3.560.1.1001'),
19
19
  generate_importer(EcogStatusImporter, nil, '2.16.840.1.113883.3.560.1.1001'),
20
20
  generate_importer(SymptomActiveImporter, nil, '2.16.840.1.113883.3.560.1.69', 'active'),
21
21
  generate_importer(DiagnosisActiveImporter, nil, '2.16.840.1.113883.3.560.1.2', 'active'),
22
- generate_importer(CDA::ConditionImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.54']", '2.16.840.1.113883.3.560.1.404'), # patient characteristic age
23
- generate_importer(CDA::ConditionImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.14']", '2.16.840.1.113883.3.560.1.24', 'resolved'), #diagnosis resolved
22
+ generate_importer(CDA::ConditionImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.54']", '2.16.840.1.113883.3.560.1.404'), # patient characteristic age
23
+ generate_importer(CDA::ConditionImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.14']", '2.16.840.1.113883.3.560.1.24', 'resolved'), #diagnosis resolved
24
24
  generate_importer(DiagnosisInactiveImporter, nil, '2.16.840.1.113883.3.560.1.23', 'inactive')] #diagnosis inactive
25
25
 
26
26
 
27
- @section_importers[:medications] = [generate_importer(CDA::MedicationImporter, "//cda:act[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.105']/cda:entryRelationship/cda:substanceAdministration[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.41']", '2.16.840.1.113883.3.560.1.199', 'discharge'), #discharge medication active
27
+ @section_importers[:medications] = [generate_importer(CDA::MedicationImporter, "./cda:entry/cda:act[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.105']/cda:entryRelationship/cda:substanceAdministration[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.41']", '2.16.840.1.113883.3.560.1.199', 'discharge'), #discharge medication active
28
28
  generate_importer(MedicationActiveImporter, nil, '2.16.840.1.113883.3.560.1.13', 'active'), #medication active
29
- generate_importer(CDA::MedicationImporter, "//cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.42']/cda:entryRelationship/cda:substanceAdministration[cda:templateId/@root='2.16.840.1.113883.10.20.22.4.16']", '2.16.840.1.113883.3.560.1.14', 'administered'), #medication administered
30
- generate_importer(CDA::MedicationImporter, "//cda:substanceAdministration[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.47']", '2.16.840.1.113883.3.560.1.17', 'ordered'), #medication order TODO: ADD NEGATON REASON HANDLING SOMEHOW
29
+ generate_importer(CDA::MedicationImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.42']/cda:entryRelationship/cda:substanceAdministration[cda:templateId/@root='2.16.840.1.113883.10.20.22.4.16']", '2.16.840.1.113883.3.560.1.14', 'administered'), #medication administered
30
+ generate_importer(CDA::MedicationImporter, "./cda:entry/cda:substanceAdministration[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.47']", '2.16.840.1.113883.3.560.1.17', 'ordered'), #medication order TODO: ADD NEGATON REASON HANDLING SOMEHOW
31
31
  generate_importer(MedicationDispensedImporter, nil, '2.16.840.1.113883.3.560.1.8', 'dispensed')]
32
32
 
33
- @section_importers[:procedures] = [generate_importer(CDA::ProcedureImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.59']", '2.16.840.1.113883.3.560.1.57', 'performed'), #physical exam performed
34
- generate_importer(CDA::ProcedureImporter, "//cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.3']", '2.16.840.1.113883.3.560.1.131'), #comm from provider to patient
35
- generate_importer(CDA::ProcedureImporter, "//cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.31']", '2.16.840.1.113883.3.560.1.45', 'ordered'), #intervention ordered
36
- generate_importer(CDA::ProcedureImporter, "//cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.32']", '2.16.840.1.113883.3.560.1.46', 'performed'), #intervention performed
37
- generate_importer(CDA::ProcedureImporter, "//cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.34']", '2.16.840.1.113883.3.560.1.47'), #intervention result
38
- generate_importer(CDA::ProcedureImporter, "//cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.4']", '2.16.840.1.113883.3.560.1.129'), #comm from provider to provider
39
- generate_importer(CDA::ProcedureImporter, "//cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.2']", '2.16.840.1.113883.3.560.1.30'), #comm from patient to provider
33
+ @section_importers[:procedures] = [generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.59']", '2.16.840.1.113883.3.560.1.57', 'performed'), #physical exam performed
34
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.3']", '2.16.840.1.113883.3.560.1.131'), #comm from provider to patient
35
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.31']", '2.16.840.1.113883.3.560.1.45', 'ordered'), #intervention ordered
36
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.32']", '2.16.840.1.113883.3.560.1.46', 'performed'), #intervention performed
37
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.34']", '2.16.840.1.113883.3.560.1.47'), #intervention result
38
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.4']", '2.16.840.1.113883.3.560.1.129'), #comm from provider to provider
39
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.2']", '2.16.840.1.113883.3.560.1.30'), #comm from patient to provider
40
40
  generate_importer(ProcedureOrderImporter, nil, '2.16.840.1.113883.3.560.1.62', 'ordered'),
41
- generate_importer(ProcedurePerformedImporter, "//cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.64']", '2.16.840.1.113883.3.560.1.6'),
42
- generate_importer(CDA::ProcedureImporter, "//cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.66']", '2.16.840.1.113883.3.560.1.63'),
43
- generate_importer(CDA::ProcedureImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.69']", '2.16.840.1.113883.3.560.1.21'), #risk category assessment
44
- generate_importer(CDA::ProcedureImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.18']", '2.16.840.1.113883.3.560.1.103', 'performed'), #diagnostic study performed
41
+ generate_importer(ProcedurePerformedImporter, "./cda:entry/cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.64']", '2.16.840.1.113883.3.560.1.6'),
42
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.66']", '2.16.840.1.113883.3.560.1.63'),
43
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.69']", '2.16.840.1.113883.3.560.1.21'), #risk category assessment
44
+ generate_importer(CDA::ProcedureImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.18']", '2.16.840.1.113883.3.560.1.103', 'performed'), #diagnostic study performed
45
45
  generate_importer(DiagnosticStudyOrderImporter, nil, '2.16.840.1.113883.3.560.1.40', 'ordered')]
46
46
 
47
47
  @section_importers[:allergies] = [generate_importer(ProcedureIntoleranceImporter, nil, '2.16.840.1.113883.3.560.1.61'),
48
- generate_importer(CDA::AllergyImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.46']", '2.16.840.1.113883.3.560.1.67'), #medication intolerance
49
- generate_importer(CDA::AllergyImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.43']", '2.16.840.1.113883.3.560.1.7'), #medication adverse effect
50
- generate_importer(CDA::AllergyImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.44']", '2.16.840.1.113883.3.560.1.1')] #medication allergy
48
+ generate_importer(CDA::AllergyImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.46']", '2.16.840.1.113883.3.560.1.67'), #medication intolerance
49
+ generate_importer(CDA::AllergyImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.43']", '2.16.840.1.113883.3.560.1.7'), #medication adverse effect
50
+ generate_importer(CDA::AllergyImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.44']", '2.16.840.1.113883.3.560.1.1')] #medication allergy
51
51
 
52
- @section_importers[:medical_equipment] = [generate_importer(CDA::MedicalEquipmentImporter, "//cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.7']", '2.16.840.1.113883.3.560.1.110', 'applied')]
52
+ @section_importers[:medical_equipment] = [generate_importer(CDA::MedicalEquipmentImporter, "./cda:entry/cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.7']", '2.16.840.1.113883.3.560.1.110', 'applied')]
53
53
 
54
54
  @section_importers[:results] = [generate_importer(LabOrderImporter, nil, '2.16.840.1.113883.3.560.1.50', 'ordered'), #lab ordered
55
- generate_importer(CDA::ResultImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.38']", '2.16.840.1.113883.3.560.1.5', 'performed'), #lab performed
56
- generate_importer(CDA::ResultImporter, "//cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.34']", '2.16.840.1.113883.3.560.1.47'), #intervention result
57
- generate_importer(CDA::ResultImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.57']", '2.16.840.1.113883.3.560.1.18'), #physical exam finding
58
- generate_importer(CDA::ResultImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.28']", '2.16.840.1.113883.3.560.1.88'), #functional status result
59
- generate_importer(CDA::ResultImporter, "//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.20']", '2.16.840.1.113883.3.560.1.111'), #diagnostic study result not done
55
+ generate_importer(CDA::ResultImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.38']", '2.16.840.1.113883.3.560.1.5', 'performed'), #lab performed
56
+ generate_importer(CDA::ResultImporter, "./cda:entry/cda:act[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.34']", '2.16.840.1.113883.3.560.1.47'), #intervention result
57
+ generate_importer(CDA::ResultImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.57']", '2.16.840.1.113883.3.560.1.18'), #physical exam finding
58
+ generate_importer(CDA::ResultImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.28']", '2.16.840.1.113883.3.560.1.88'), #functional status result
59
+ generate_importer(CDA::ResultImporter, "./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.20']", '2.16.840.1.113883.3.560.1.111'), #diagnostic study result not done
60
60
  generate_importer(LabResultImporter, nil, '2.16.840.1.113883.3.560.1.12')] #lab result
61
61
 
62
- @section_importers[:encounters] = [generate_importer(EncounterPerformedImporter, "//cda:encounter[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.23']", '2.16.840.1.113883.3.560.1.79', 'performed'), #encounter performed
62
+ @section_importers[:encounters] = [generate_importer(EncounterPerformedImporter, "./cda:encounter[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.23']", '2.16.840.1.113883.3.560.1.79', 'performed'), #encounter performed
63
63
  generate_importer(EncounterOrderImporter, nil, '2.16.840.1.113883.3.560.1.83', 'ordered')]
64
64
 
65
65
  @section_importers[:social_history] = [generate_importer(TobaccoUseImporter, nil, '2.16.840.1.113883.3.560.1.1001', 'completed')]
@@ -79,22 +79,24 @@ module HealthDataStandards
79
79
  end
80
80
 
81
81
  def import_sections(record, doc)
82
+
83
+ context = doc.xpath("/cda:ClinicalDocument/cda:component/cda:structuredBody/cda:component/cda:section[cda:templateId/@root = '2.16.840.1.113883.10.20.24.2.1']")
82
84
  nrh = CDA::NarrativeReferenceHandler.new
83
85
  nrh.build_id_map(doc)
84
86
  @section_importers.each do |section, entry_packages|
85
87
  entry_packages.each do |entry_package|
86
- record.send(section) << entry_package.package_entries(doc, nrh)
88
+ record.send(section) << entry_package.package_entries(context, nrh)
87
89
  end
88
90
  end
89
91
  end
90
92
 
91
93
  def get_clinical_trial_participant(record, doc)
92
- entry_elements = doc.xpath("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.51']")
94
+ entry_elements = doc.xpath("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.51']")
93
95
  record.clinicalTrialParticipant = true unless entry_elements.blank?
94
96
  end
95
97
 
96
98
  def get_patient_expired(record, doc)
97
- entry_elements = doc.xpath("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.54']")
99
+ entry_elements = doc.xpath("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.54']")
98
100
  record.expired = true unless entry_elements.empty?
99
101
  end
100
102
 
@@ -4,7 +4,7 @@ module HealthDataStandards
4
4
  class ProcedureIntoleranceImporter < CDA::SectionImporter
5
5
 
6
6
  def initialize
7
- super(CDA::EntryFinder.new("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.62']/cda:entryRelationship/cda:procedure[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.64']"))
7
+ super(CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.62']/cda:entryRelationship/cda:procedure[cda:templateId/@root='2.16.840.1.113883.10.20.24.3.64']"))
8
8
  @entry_class = Allergy
9
9
  end
10
10
  end
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class ProcedureOrderImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.63']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.63']"))
6
6
  super(entry_finder)
7
7
  @entry_class = Procedure
8
8
  end
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class ProcedurePerformedImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.64']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:procedure[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.64']"))
6
6
  super(entry_finder)
7
7
  @entry_class = Procedure
8
8
  @ordinality_xpath = "./cda:priorityCode"
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class SymptomActiveImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.76']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.24.3.76']"))
6
6
  super(entry_finder)
7
7
  @code_xpath = './cda:value'
8
8
  end
@@ -2,7 +2,7 @@ module HealthDataStandards
2
2
  module Import
3
3
  module Cat1
4
4
  class TobaccoUseImporter < CDA::SectionImporter
5
- def initialize(entry_finder=CDA::EntryFinder.new("//cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.22.4.85']"))
5
+ def initialize(entry_finder=CDA::EntryFinder.new("./cda:entry/cda:observation[cda:templateId/@root = '2.16.840.1.113883.10.20.22.4.85']"))
6
6
  super(entry_finder)
7
7
  @entry_class = Entry
8
8
  end
@@ -1,10 +1,10 @@
1
1
  module ProviderImportUtils
2
-
2
+
3
3
  def extract_provider(performer, element_name="assignedEntity")
4
4
  provider_data = extract_provider_data(performer, false, "./cda:#{element_name}")
5
5
  find_or_create_provider(provider_data)
6
6
  end
7
-
7
+
8
8
  def find_or_create_provider(provider_hash)
9
9
  provider = Provider.by_npi(provider_hash[:npi]).first if provider_hash[:npi] && !provider_hash[:npi].empty?
10
10
  unless provider
@@ -12,8 +12,6 @@ module ProviderImportUtils
12
12
  provider = Provider.create(provider_hash)
13
13
  provider.npi = provider_hash[:npi]
14
14
  else
15
- provider ||= Provider.resolve_provider(provider_hash) if Provider.respond_to? :resolve_provider
16
-
17
15
  ident_roots = provider_hash[:cda_identifiers].map {|ident| ident.root}
18
16
  ident_extensions = provider_hash[:cda_identifiers].map {|ident| ident.extension}
19
17
  unless ident_roots.size == 0
@@ -24,10 +22,11 @@ module ProviderImportUtils
24
22
  :family_name=> provider_hash[:family_name],
25
23
  :specialty => provider_hash[:specialty]}
26
24
  provider ||= Provider.where(provider_query).first
25
+ provider ||= Provider.resolve_provider(provider_hash)
27
26
  provider ||= Provider.create(provider_hash)
28
27
  end
29
28
  end
30
- provider
29
+ provider
31
30
  end
32
31
 
33
32
  # Returns nil if result is an empty string, block allows text munging of result if there is one
@@ -39,5 +38,5 @@ module ProviderImportUtils
39
38
  result.content
40
39
  end
41
40
  end
42
-
43
- end
41
+
42
+ end
@@ -7,9 +7,9 @@ class Provider
7
7
 
8
8
  field :specialty , type: String
9
9
  field :phone , type: String
10
-
10
+
11
11
  validates_uniqueness_of :npi, allow_blank: true
12
-
12
+
13
13
  embeds_one :organization
14
14
  embeds_many :cda_identifiers, class_name: "CDAIdentifier", as: :cda_identifiable
15
15
 
@@ -42,21 +42,21 @@ class Provider
42
42
  def records(effective_date=nil)
43
43
  Record.by_provider(self, effective_date)
44
44
  end
45
-
45
+
46
46
  # validate the NPI, should be 10 or 15 digits total with the final digit being a
47
47
  # checksum using the Luhn algorithm with additional special handling as described in
48
- # https://www.cms.gov/NationalProvIdentStand/Downloads/NPIcheckdigit.pdf
48
+ # https://www.cms.gov/NationalProvIdentStand/Downloads/NPIcheckdigit.pdf
49
49
  def self.valid_npi?(npi)
50
50
  return false unless npi
51
51
  return false if npi.length != 10 and npi.length != 15
52
52
  return false if npi.gsub(/\d/, '').length > 0 # npi must be all digits
53
53
  return false if npi.length == 15 and (npi =~ /^80840/)==nil # 15 digit npi must start with 80840
54
-
54
+
55
55
  # checksum is always calculated as if 80840 prefix is present
56
56
  if npi.length==10
57
57
  npi = '80840'+npi
58
58
  end
59
-
59
+
60
60
  return luhn_checksum(npi[0,14])==npi[14]
61
61
  end
62
62
 
@@ -72,17 +72,19 @@ class Provider
72
72
  end
73
73
  end
74
74
  sum = (9*sum)%10
75
-
75
+
76
76
  return sum.to_s
77
77
  end
78
78
 
79
- #this is intentially left blank. When using the ProviderImporter class this method will be called
80
- # if a parsed provider can not be found in the database if the parsed provider does not have an
81
- # npi number associated with it. This allows applications to handle this how they see fit by redefining
82
- # this method. If this method call return nil an attempt will be made to discover the Provider by name
83
- # matching and if that fails a Provider will be created in the db based on the information in the parsed
84
- # hase
79
+ # When using the ProviderImporter class this method will be called if a parsed
80
+ # provider can not be found in the database if the parsed provider does not
81
+ # have an npi number associated with it. This allows applications to handle
82
+ # this how they see fit by redefining this method. The default implementation
83
+ # is to return an orphan parent (the singular provider without an NPI) if one
84
+ # exists. If this method call return nil an attempt will be made to discover
85
+ # the Provider by name matching and if that fails a Provider will be created
86
+ # in the db based on the information in the parsed hash.
85
87
  def self.resolve_provider(provider_hash)
86
-
88
+ Provider.where(:npi => nil).first
87
89
  end
88
- end
90
+ end
@@ -2,18 +2,30 @@
2
2
  <patientRole>
3
3
  <!-- id root="Cypress" extension="<%= patient.id %>"/ -->
4
4
  <!-- Fake Medicare HIC number -->
5
- <%
5
+ <%
6
6
  # get the pateint id , treate it as a hex number, turn it to a string and strip the last 9 characters off of it
7
7
  hic = patient.id.to_s.hex.to_s
8
8
  hic = hic.slice(hic.length-9,9)
9
9
  %>
10
10
  <id extension="<%= hic %>A" root="2.16.840.1.113883.4.572"/>
11
11
  <addr use="HP">
12
- <streetAddressLine>202 Burlington Rd.</streetAddressLine>
13
- <city>Bedford</city>
14
- <state>MA</state>
15
- <postalCode>01730</postalCode>
16
- <country>US</country>
12
+ <% if patient.addresses.present?
13
+ patient.addresses.each do |address| -%>
14
+ <% address.street.each do |street| -%>
15
+ <streetAddressLine><%= street %></streetAddressLine>
16
+ <% end %>
17
+ <city><%= address.city %></city>
18
+ <state><%= address.state %></state>
19
+ <postalCode><%= address.zip %></postalCode>
20
+ <country><%= address.country %></country>
21
+ <% end -%>
22
+ <% else -%>
23
+ <streetAddressLine>202 Burlington Rd.</streetAddressLine>
24
+ <city>Bedford</city>
25
+ <state>MA</state>
26
+ <postalCode>01730</postalCode>
27
+ <country>US</country>
28
+ <% end -%>
17
29
  </addr>
18
30
  <telecom use="WP" value="tel:+1-781-271-3000"/>
19
31
  <patient>
@@ -26,11 +38,11 @@
26
38
  <% if (patient.race) %>
27
39
  <raceCode code="<%= patient.race['code'] %>" <% if patient.race['name']%>displayName="<%= patient.race['name'] %>"<% end %> codeSystemName="CDC Race and Ethnicity" codeSystem="2.16.840.1.113883.6.238"/>
28
40
  <% end %>
29
- <% if (patient.race) %>
41
+ <% if (patient.ethnicity) %>
30
42
  <ethnicGroupCode code="<%= patient.ethnicity['code'] %>" <% if patient.ethnicity['name']%>displayName="<%= patient.ethnicity['name'] %>"<% end %> codeSystemName="CDC Race and Ethnicity" codeSystem="2.16.840.1.113883.6.238"/>
31
43
  <% end %>
32
44
  <%
33
- languages = patient.languages
45
+ languages = patient.languages
34
46
  languages = ["eng"] if languages.nil? or languages.empty?
35
47
  languages.each do |language|%>
36
48
  <languageCommunication>
@@ -41,4 +53,4 @@
41
53
  <% end %>
42
54
  </patient>
43
55
  </patientRole>
44
- </recordTarget>
56
+ </recordTarget>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: health-data-standards
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.4
4
+ version: 3.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Gregorowicz
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-03-25 00:00:00.000000000 Z
15
+ date: 2014-04-04 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rest-client
@@ -175,6 +175,10 @@ executables: []
175
175
  extensions: []
176
176
  extra_rdoc_files: []
177
177
  files:
178
+ - Gemfile
179
+ - README.md
180
+ - Rakefile
181
+ - lib/health-data-standards.rb
178
182
  - lib/health-data-standards/export/c32.rb
179
183
  - lib/health-data-standards/export/cat_1.rb
180
184
  - lib/health-data-standards/export/cat_3.rb
@@ -191,6 +195,7 @@ files:
191
195
  - lib/health-data-standards/export/helper/scooped_view_helper.rb
192
196
  - lib/health-data-standards/export/html.rb
193
197
  - lib/health-data-standards/export/qrda/entry_template_resolver.rb
198
+ - lib/health-data-standards/export/qrda/hqmf-qrda-oids.json
194
199
  - lib/health-data-standards/export/rendering_context.rb
195
200
  - lib/health-data-standards/export/template_helper.rb
196
201
  - lib/health-data-standards/export/view_helper.rb
@@ -325,22 +330,51 @@ files:
325
330
  - lib/health-data-standards/models/treating_provider.rb
326
331
  - lib/health-data-standards/models/vital_sign.rb
327
332
  - lib/health-data-standards/railtie.rb
333
+ - lib/health-data-standards/tasks/bundle.rake
328
334
  - lib/health-data-standards/util/code_system_helper.rb
329
335
  - lib/health-data-standards/util/hl7_helper.rb
330
336
  - lib/health-data-standards/util/hqmf_template_helper.rb
337
+ - lib/health-data-standards/util/hqmf_template_oid_map.json
331
338
  - lib/health-data-standards/util/vs_api.rb
332
- - lib/health-data-standards.rb
339
+ - lib/hqmf-generator/attribute.xml.erb
340
+ - lib/hqmf-generator/characteristic_criteria.xml.erb
341
+ - lib/hqmf-generator/code.xml.erb
342
+ - lib/hqmf-generator/condition_criteria.xml.erb
343
+ - lib/hqmf-generator/derivation.xml.erb
344
+ - lib/hqmf-generator/description.xml.erb
345
+ - lib/hqmf-generator/document.xml.erb
346
+ - lib/hqmf-generator/effective_time.xml.erb
347
+ - lib/hqmf-generator/encounter_criteria.xml.erb
348
+ - lib/hqmf-generator/field.xml.erb
333
349
  - lib/hqmf-generator/hqmf-generator.rb
350
+ - lib/hqmf-generator/observation_criteria.xml.erb
351
+ - lib/hqmf-generator/population_criteria.xml.erb
352
+ - lib/hqmf-generator/precondition.xml.erb
353
+ - lib/hqmf-generator/procedure_criteria.xml.erb
354
+ - lib/hqmf-generator/reason.xml.erb
355
+ - lib/hqmf-generator/reference.xml.erb
356
+ - lib/hqmf-generator/source.xml.erb
357
+ - lib/hqmf-generator/specific_occurrence.xml.erb
358
+ - lib/hqmf-generator/subset.xml.erb
359
+ - lib/hqmf-generator/substance_criteria.xml.erb
360
+ - lib/hqmf-generator/supply_criteria.xml.erb
361
+ - lib/hqmf-generator/template_id.xml.erb
362
+ - lib/hqmf-generator/temporal_relationship.xml.erb
363
+ - lib/hqmf-generator/value.xml.erb
364
+ - lib/hqmf-generator/variable_criteria.xml.erb
334
365
  - lib/hqmf-model/attribute.rb
366
+ - lib/hqmf-model/data_criteria.json
335
367
  - lib/hqmf-model/data_criteria.rb
336
368
  - lib/hqmf-model/document.rb
337
369
  - lib/hqmf-model/population_criteria.rb
338
370
  - lib/hqmf-model/precondition.rb
339
371
  - lib/hqmf-model/types.rb
340
372
  - lib/hqmf-model/utilities.rb
373
+ - lib/hqmf-parser.rb
341
374
  - lib/hqmf-parser/1.0/attribute.rb
342
375
  - lib/hqmf-parser/1.0/comparison.rb
343
376
  - lib/hqmf-parser/1.0/data_criteria.rb
377
+ - lib/hqmf-parser/1.0/data_criteria_oid_xpath.json
344
378
  - lib/hqmf-parser/1.0/document.rb
345
379
  - lib/hqmf-parser/1.0/expression.rb
346
380
  - lib/hqmf-parser/1.0/observation.rb
@@ -368,7 +402,6 @@ files:
368
402
  - lib/hqmf-parser/converter/pass2/comparison_converter.rb
369
403
  - lib/hqmf-parser/converter/pass2/operator_converter.rb
370
404
  - lib/hqmf-parser/parser.rb
371
- - lib/hqmf-parser.rb
372
405
  - lib/util/counter.rb
373
406
  - templates/_author.hdata.erb
374
407
  - templates/_pedigree.hdata.erb
@@ -503,39 +536,6 @@ files:
503
536
  - templates/html/_section.html.erb
504
537
  - templates/html/show.html.erb
505
538
  - templates/metadata.hdata.erb
506
- - lib/health-data-standards/export/qrda/hqmf-qrda-oids.json
507
- - lib/health-data-standards/util/hqmf_template_oid_map.json
508
- - lib/hqmf-model/data_criteria.json
509
- - lib/hqmf-parser/1.0/data_criteria_oid_xpath.json
510
- - lib/hqmf-generator/attribute.xml.erb
511
- - lib/hqmf-generator/characteristic_criteria.xml.erb
512
- - lib/hqmf-generator/code.xml.erb
513
- - lib/hqmf-generator/condition_criteria.xml.erb
514
- - lib/hqmf-generator/derivation.xml.erb
515
- - lib/hqmf-generator/description.xml.erb
516
- - lib/hqmf-generator/document.xml.erb
517
- - lib/hqmf-generator/effective_time.xml.erb
518
- - lib/hqmf-generator/encounter_criteria.xml.erb
519
- - lib/hqmf-generator/field.xml.erb
520
- - lib/hqmf-generator/observation_criteria.xml.erb
521
- - lib/hqmf-generator/population_criteria.xml.erb
522
- - lib/hqmf-generator/precondition.xml.erb
523
- - lib/hqmf-generator/procedure_criteria.xml.erb
524
- - lib/hqmf-generator/reason.xml.erb
525
- - lib/hqmf-generator/reference.xml.erb
526
- - lib/hqmf-generator/source.xml.erb
527
- - lib/hqmf-generator/specific_occurrence.xml.erb
528
- - lib/hqmf-generator/subset.xml.erb
529
- - lib/hqmf-generator/substance_criteria.xml.erb
530
- - lib/hqmf-generator/supply_criteria.xml.erb
531
- - lib/hqmf-generator/template_id.xml.erb
532
- - lib/hqmf-generator/temporal_relationship.xml.erb
533
- - lib/hqmf-generator/value.xml.erb
534
- - lib/hqmf-generator/variable_criteria.xml.erb
535
- - lib/health-data-standards/tasks/bundle.rake
536
- - Gemfile
537
- - README.md
538
- - Rakefile
539
539
  homepage: https://github.com/projectcypress/health-data-standards
540
540
  licenses:
541
541
  - APL 2.0
@@ -556,7 +556,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
556
556
  version: '0'
557
557
  requirements: []
558
558
  rubyforge_project:
559
- rubygems_version: 2.0.14
559
+ rubygems_version: 2.2.2
560
560
  signing_key:
561
561
  specification_version: 4
562
562
  summary: A library for generating and consuming various healthcare related formats.