health-data-standards 3.4.4 → 3.4.5

Sign up to get free protection for your applications and to get access to all the features.
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.