ion_orders_engine_mockingjay 1.0.1.SNAPSHOT

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 (173) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +0 -0
  3. data/Rakefile +4 -0
  4. data/app/assets/images/rails.png +0 -0
  5. data/app/assets/javascripts/application.js +16 -0
  6. data/app/assets/javascripts/bootstrap_additions.js.coffee +4 -0
  7. data/app/assets/javascripts/interchange/patients.js.coffee +3 -0
  8. data/app/assets/javascripts/interchange/physicians.js.coffee +3 -0
  9. data/app/assets/javascripts/mock/allergies.js.coffee +3 -0
  10. data/app/assets/javascripts/mock/appointments.js.coffee +3 -0
  11. data/app/assets/javascripts/mock/assignments.js.coffee +17 -0
  12. data/app/assets/javascripts/mock/chart_reviews.js.coffee +3 -0
  13. data/app/assets/javascripts/mock/comments.js.coffee +3 -0
  14. data/app/assets/javascripts/mock/conditions.js.coffee +3 -0
  15. data/app/assets/javascripts/mock/diagnoses.js.coffee +3 -0
  16. data/app/assets/javascripts/mock/documents.js.coffee +3 -0
  17. data/app/assets/javascripts/mock/employments.js.coffee +3 -0
  18. data/app/assets/javascripts/mock/encounters.js.coffee +3 -0
  19. data/app/assets/javascripts/mock/family_contacts.js.coffee +3 -0
  20. data/app/assets/javascripts/mock/family_histories.js.coffee +3 -0
  21. data/app/assets/javascripts/mock/guarantors.js.coffee +3 -0
  22. data/app/assets/javascripts/mock/insurance_plans.js.coffee +3 -0
  23. data/app/assets/javascripts/mock/lab_concepts.js.coffee +4 -0
  24. data/app/assets/javascripts/mock/lab_results.js.coffee +3 -0
  25. data/app/assets/javascripts/mock/locations.js.coffee +3 -0
  26. data/app/assets/javascripts/mock/medical_record_numbers.js.coffee +3 -0
  27. data/app/assets/javascripts/mock/metadata_keywords.js.coffee +3 -0
  28. data/app/assets/javascripts/mock/pharmacies.js.coffee +3 -0
  29. data/app/assets/javascripts/mock/phone_numbers.js.coffee +3 -0
  30. data/app/assets/javascripts/mock/physicians.js.coffee +3 -0
  31. data/app/assets/javascripts/mock/procedure_histories.js.coffee +3 -0
  32. data/app/assets/javascripts/mock/providers.js.coffee +14 -0
  33. data/app/assets/javascripts/mock/questions.js.coffee +3 -0
  34. data/app/assets/javascripts/mock/reference_range.js.coffee +3 -0
  35. data/app/assets/javascripts/mock/sections.js.coffee +3 -0
  36. data/app/assets/javascripts/mock/social_histories.js.coffee +3 -0
  37. data/app/assets/javascripts/mock/state_health_identifiers.js.coffee +3 -0
  38. data/app/assets/javascripts/mock/statistics.js.coffee +3 -0
  39. data/app/assets/javascripts/mock/test_assertions.js.coffee +3 -0
  40. data/app/assets/javascripts/mock/visit.js.coffee +3 -0
  41. data/app/assets/javascripts/mock/vitals_measurement.js.coffee +3 -0
  42. data/app/assets/javascripts/reference/data_elements.js.coffee +3 -0
  43. data/app/assets/javascripts/reference/data_lists.js.coffee +3 -0
  44. data/app/assets/javascripts/reference/data_sets.js.coffee +3 -0
  45. data/app/assets/stylesheets/application.css.scss +13 -0
  46. data/app/assets/stylesheets/bootstrap_and_overrides.css.scss +79 -0
  47. data/app/assets/stylesheets/forms.css.scss +67 -0
  48. data/app/assets/stylesheets/interchange/patients.css.scss +3 -0
  49. data/app/assets/stylesheets/interchange/physicians.css.scss +3 -0
  50. data/app/assets/stylesheets/mock/allergies.css.scss +3 -0
  51. data/app/assets/stylesheets/mock/appointments.css.scss +3 -0
  52. data/app/assets/stylesheets/mock/chart_reviews.css.scss +3 -0
  53. data/app/assets/stylesheets/mock/comments.css.scss +3 -0
  54. data/app/assets/stylesheets/mock/conditions.css.scss +3 -0
  55. data/app/assets/stylesheets/mock/diagnoses.css.scss +3 -0
  56. data/app/assets/stylesheets/mock/documents.css.scss +3 -0
  57. data/app/assets/stylesheets/mock/employments.css.scss +3 -0
  58. data/app/assets/stylesheets/mock/encounters.css.scss +3 -0
  59. data/app/assets/stylesheets/mock/family_contacts.css.scss +3 -0
  60. data/app/assets/stylesheets/mock/family_histories.css.scss +3 -0
  61. data/app/assets/stylesheets/mock/guarantors.css.scss +3 -0
  62. data/app/assets/stylesheets/mock/insurance_plans.css.scss +3 -0
  63. data/app/assets/stylesheets/mock/lab_concepts.css.scss +3 -0
  64. data/app/assets/stylesheets/mock/lab_results.css.scss +3 -0
  65. data/app/assets/stylesheets/mock/locations.css.scss +3 -0
  66. data/app/assets/stylesheets/mock/medical_record_numbers.css.scss +3 -0
  67. data/app/assets/stylesheets/mock/metadata_keywords.css.scss +3 -0
  68. data/app/assets/stylesheets/mock/pharmacies.css.scss +3 -0
  69. data/app/assets/stylesheets/mock/phone_numbers.css.scss +3 -0
  70. data/app/assets/stylesheets/mock/physicians.css.scss +3 -0
  71. data/app/assets/stylesheets/mock/procedure_histories.css.scss +3 -0
  72. data/app/assets/stylesheets/mock/providers.css.scss +3 -0
  73. data/app/assets/stylesheets/mock/questions.css.scss +3 -0
  74. data/app/assets/stylesheets/mock/reference_range.css.scss +3 -0
  75. data/app/assets/stylesheets/mock/sections.css.scss +3 -0
  76. data/app/assets/stylesheets/mock/social_histories.css.scss +3 -0
  77. data/app/assets/stylesheets/mock/state_health_identifiers.css.scss +3 -0
  78. data/app/assets/stylesheets/mock/statistics.css.scss +3 -0
  79. data/app/assets/stylesheets/mock/test_assertions.css.scss +3 -0
  80. data/app/assets/stylesheets/mock/visit.css.scss +3 -0
  81. data/app/assets/stylesheets/mock/vitals_measurement.css.scss +3 -0
  82. data/app/assets/stylesheets/reference/data_elements.css.scss +3 -0
  83. data/app/assets/stylesheets/reference/data_lists.css.scss +3 -0
  84. data/app/assets/stylesheets/reference/data_sets.css.scss +3 -0
  85. data/app/assets/stylesheets/scaffolds.css.scss +66 -0
  86. data/app/controllers/api/base_controller.rb +78 -0
  87. data/app/controllers/api/ion_orders_engine/order_by_id/order_by_id_controller.rb +3220 -0
  88. data/app/controllers/api/ion_orders_engine/order_profile/inpatient_order_profile_controller.rb +3156 -0
  89. data/app/controllers/application_controller.rb +25 -0
  90. data/app/controllers/crud/base_controller.rb +90 -0
  91. data/app/controllers/interchange/base_controller.rb +63 -0
  92. data/app/controllers/interchange/data_sets_controller.rb +40 -0
  93. data/app/controllers/interchange/exports_controller.rb +120 -0
  94. data/app/controllers/interchange/imports_controller.rb +141 -0
  95. data/app/controllers/reference/base_controller.rb +7 -0
  96. data/app/controllers/reference/data_lists_controller.rb +177 -0
  97. data/app/controllers/reference/data_options_controller.rb +147 -0
  98. data/app/controllers/reference/data_sets_controller.rb +160 -0
  99. data/app/helpers/application_helper.rb +389 -0
  100. data/app/helpers/error_messages_helper.rb +23 -0
  101. data/app/helpers/interchange/exports_helper.rb +9 -0
  102. data/app/helpers/interchange/imports_helper.rb +31 -0
  103. data/app/helpers/layout_helper.rb +40 -0
  104. data/app/helpers/reference/data_elements_helper.rb +2 -0
  105. data/app/helpers/reference/data_lists_helper.rb +2 -0
  106. data/app/helpers/reference/data_sets_helper.rb +2 -0
  107. data/app/views/interchange/common/_database_info.json.jbuilder +6 -0
  108. data/app/views/interchange/common/_metadata_keywords.json.jbuilder +13 -0
  109. data/app/views/interchange/common/_test_assertions.json.jbuilder +17 -0
  110. data/app/views/interchange/data_sets/_data_list.json.jbuilder +14 -0
  111. data/app/views/interchange/data_sets/_data_option.json.jbuilder +12 -0
  112. data/app/views/interchange/data_sets/_data_set.json.jbuilder +17 -0
  113. data/app/views/interchange/data_sets/_nested_data_list.json.jbuilder +12 -0
  114. data/app/views/interchange/data_sets/show.json.jbuilder +10 -0
  115. data/app/views/interchange/document_templates/_document_template.json.jbuilder +23 -0
  116. data/app/views/interchange/document_templates/_section.json.jbuilder +11 -0
  117. data/app/views/interchange/document_templates/show.json.jbuilder +10 -0
  118. data/app/views/interchange/exports/_export_summary.html.erb +49 -0
  119. data/app/views/interchange/exports/show.html.erb +35 -0
  120. data/app/views/interchange/imports/_import_summary.html.erb +72 -0
  121. data/app/views/interchange/imports/show.html.erb +37 -0
  122. data/app/views/layouts/_flashbar.html.erb +6 -0
  123. data/app/views/layouts/_navbar.html.erb +38 -0
  124. data/app/views/layouts/_protected_warning.html.erb +7 -0
  125. data/app/views/layouts/_root_model_layout.erb +33 -0
  126. data/app/views/layouts/application.html.erb +39 -0
  127. data/app/views/layouts/reference/data_sets.html.erb +5 -0
  128. data/app/views/reference/data_lists/_data_options.html.erb +31 -0
  129. data/app/views/reference/data_lists/_form.html.erb +23 -0
  130. data/app/views/reference/data_lists/edit.html.erb +6 -0
  131. data/app/views/reference/data_lists/index.html.erb +31 -0
  132. data/app/views/reference/data_lists/new.html.erb +6 -0
  133. data/app/views/reference/data_lists/show.html.erb +55 -0
  134. data/app/views/reference/data_options/_form.html.erb +23 -0
  135. data/app/views/reference/data_options/edit.html.erb +5 -0
  136. data/app/views/reference/data_options/index.html.erb +38 -0
  137. data/app/views/reference/data_options/new.html.erb +5 -0
  138. data/app/views/reference/data_options/show.html.erb +33 -0
  139. data/app/views/reference/data_sets/_form.html.erb +25 -0
  140. data/app/views/reference/data_sets/edit.html.erb +5 -0
  141. data/app/views/reference/data_sets/index.html.erb +40 -0
  142. data/app/views/reference/data_sets/new.html.erb +5 -0
  143. data/app/views/reference/data_sets/show.html.erb +38 -0
  144. data/config/application.rb +100 -0
  145. data/config/boot.rb +6 -0
  146. data/config/database.yml +25 -0
  147. data/config/environment.rb +5 -0
  148. data/config/environments/development.rb +42 -0
  149. data/config/environments/production.rb +64 -0
  150. data/config/environments/test.rb +35 -0
  151. data/config/initializers/backtrace_silencers.rb +7 -0
  152. data/config/initializers/extensions/active_record.rb +13 -0
  153. data/config/initializers/extensions/hash.rb +11 -0
  154. data/config/initializers/extensions/string.rb +15 -0
  155. data/config/initializers/inflections.rb +15 -0
  156. data/config/initializers/mime_types.rb +5 -0
  157. data/config/initializers/reference.rb +77 -0
  158. data/config/initializers/secret_token.rb +7 -0
  159. data/config/initializers/session_store.rb +8 -0
  160. data/config/initializers/simple_form.rb +142 -0
  161. data/config/initializers/simple_form_bootstrap.rb +45 -0
  162. data/config/initializers/wrap_parameters.rb +10 -0
  163. data/config/locales/en.yml +207 -0
  164. data/config/locales/simple_form.en.yml +26 -0
  165. data/config/mongo.yml +18 -0
  166. data/config/routes.rb +4 -0
  167. data/db/schema.rb +16 -0
  168. data/db/seeds.rb +66 -0
  169. data/lib/ion_orders_engine_mockingjay/engine.rb +13 -0
  170. data/lib/ion_orders_engine_mockingjay/version.rb +3 -0
  171. data/lib/ion_orders_engine_mockingjay.rb +4 -0
  172. data/lib/tasks/ion_orders_engine_mockingjay_tasks.rake +4 -0
  173. metadata +215 -0
@@ -0,0 +1,23 @@
1
+ module ErrorMessagesHelper
2
+ # Render error messages for the given objects. The :message and :header_message options are allowed.
3
+ def error_messages_for(*objects)
4
+ options = objects.extract_options!
5
+ options[:header_message] ||= I18n.t(:"activerecord.errors.header", default: "Invalid Fields")
6
+ options[:message] ||= I18n.t(:"activerecord.errors.message", default: "Correct the following errors and try again.")
7
+ messages = objects.compact.map { |o| o.errors.full_messages }.flatten
8
+ unless messages.empty?
9
+ content_tag(:div, class: "error_messages") do
10
+ list_items = messages.map { |msg| content_tag(:li, msg) }
11
+ content_tag(:h2, options[:header_message]) + content_tag(:p, options[:message]) + content_tag(:ul, list_items.join.html_safe)
12
+ end
13
+ end
14
+ end
15
+
16
+ module FormBuilderAdditions
17
+ def error_messages(options = {})
18
+ @template.error_messages_for(@object, options)
19
+ end
20
+ end
21
+ end
22
+
23
+ ActionView::Helpers::FormBuilder.send(:include, ErrorMessagesHelper::FormBuilderAdditions)
@@ -0,0 +1,9 @@
1
+ module Interchange::ExportsHelper
2
+
3
+ def export_submit_button_tag
4
+ submit_tag 'Export', name: nil, class: 'btn btn-primary'
5
+ end
6
+
7
+ end # module
8
+
9
+
@@ -0,0 +1,31 @@
1
+ module Interchange::ImportsHelper
2
+
3
+ # Public: Creates a submit tag for the Import button, handling all styling.
4
+ #
5
+ # Returns String contains HTML for a submit tag.
6
+ def import_submit_button_tag
7
+ submit_tag 'Import', name: nil, class: 'btn btn-primary'
8
+ end
9
+
10
+
11
+ # Public: Creates an HTML string you must raw escape, that formats the number and the title provided such that
12
+ # stacked section summary titles will have numbers and titles line up vertically, because we provide a
13
+ # fixed spacing for the number portion.
14
+ #
15
+ # number - The value to display as well as inform pluralization to use for the title
16
+ # singular_title - The singular variant of the title, which we may pluralize based on the number provided
17
+ #
18
+ # Returns String contains HTML with styling that must be escaped, that provides effectively, two columns of text.
19
+ def section_summary_title(number, singular_title)
20
+ title =
21
+ if number == 1
22
+ singular_title
23
+ else
24
+ singular_title.pluralize
25
+ end
26
+ "<strong><span style='width:30px;float: left; text-align: right;'>#{number}&nbsp;&nbsp;</span>#{title}</strong>"
27
+ end
28
+
29
+ end # module
30
+
31
+
@@ -0,0 +1,40 @@
1
+ # These helper methods can be called in your template to set variables to be used in the layout
2
+ # This module should be included in all views globally,
3
+ # to do so you may need to add this line to your ApplicationController
4
+ # helper :layout
5
+ module LayoutHelper
6
+
7
+ def title(page_title, show_title = true)
8
+ content_for(:title) { h(page_title.to_s) }
9
+ @show_title = show_title
10
+ end
11
+
12
+ def show_title?
13
+ @show_title
14
+ end
15
+
16
+ def stylesheet(*args)
17
+ content_for(:head) { stylesheet_link_tag(*args) }
18
+ end
19
+
20
+ def javascript(*args)
21
+ content_for(:head) { javascript_include_tag(*args) }
22
+ end
23
+
24
+ def has_current_patient?
25
+ !@patient.nil?
26
+ end
27
+
28
+ def current_patient
29
+ @patient
30
+ end
31
+
32
+ def has_current_physician?
33
+ !@physician.nil?
34
+ end
35
+
36
+ def current_physician
37
+ @physician
38
+ end
39
+
40
+ end # module
@@ -0,0 +1,2 @@
1
+ module Reference::DataElementsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Reference::DataListsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Reference::DataSetsHelper
2
+ end
@@ -0,0 +1,6 @@
1
+ # Displays database info (id, timestamps) that can be useful for informal auditing.
2
+ # We'll display unless the variables @suppress_database_timestamps or @automation advise otherwise.
3
+
4
+ json.id model.id unless @suppress_database_ids
5
+ json.created_at model.created_at unless @suppress_database_timestamps
6
+ json.updated_at model.updated_at unless @suppress_database_timestamps
@@ -0,0 +1,13 @@
1
+ # Metadata Keywords
2
+
3
+ # Is our output target a UIAutomation file?
4
+ if @automation
5
+ # YES: So just build a flat array of keywords:
6
+ json.metadata_keywords metadata_keywords.collect { |keyword| keyword.text }
7
+ else
8
+ # NO: We must be doing an export for later imports. Use the generic model format of spelling out the properties:
9
+ json.metadata_keywords metadata_keywords do |metadata_keyword|
10
+ json.text metadata_keyword.text
11
+ # Note: We do not have timestamps on keywords, so we don't pull in the database partial
12
+ end
13
+ end # if @automation
@@ -0,0 +1,17 @@
1
+ # Test Assertions
2
+
3
+ # UIAutomation: Build a flat array of key-value pairs, with each one having an entry for metadata info:
4
+ json.uiautomation_assertions do
5
+ test_assertions.each do |expected_result|
6
+ json.set!(expected_result.key, expected_result.interpreted_value)
7
+ json.set!("#{expected_result.key}MetadataDescription", expected_result.metadata_description)
8
+ end
9
+ end
10
+
11
+ # For Import: This is for supporting later imports. Use the generic model format of spelling out the properties:
12
+ json.test_assertions test_assertions do |test_assertion|
13
+ json.key test_assertion.key
14
+ json.value_string test_assertion.value_string
15
+ json.value_type test_assertion.value_type
16
+ json.metadata_description test_assertion.metadata_description
17
+ end
@@ -0,0 +1,14 @@
1
+ # DataLists
2
+ json.data_lists data_lists do |data_list|
3
+ json.partial! 'interchange/common/database_info', model: data_list
4
+
5
+ json.display_name data_list.display_name
6
+ json.code_name data_list.code_name
7
+ json.code_number data_list.code_number
8
+ json.option_class_name data_list.option_class_name
9
+ json.metadata_description data_list.metadata_description
10
+
11
+
12
+ json.partial! 'data_option', data_options: data_list.data_options
13
+
14
+ end
@@ -0,0 +1,12 @@
1
+ # DataOptions
2
+ json.data_options data_options do |data_option|
3
+ json.partial! 'interchange/common/database_info', model: data_option
4
+
5
+ json.display_name data_option.display_name
6
+ json.code_name data_option.code_name
7
+ json.code_number data_option.code_number
8
+ json.metadata_description data_option.metadata_description
9
+
10
+ json.partial! 'nested_data_list', nested_data_list: data_option.nested_data_list if data_option.nested_data_list
11
+
12
+ end
@@ -0,0 +1,17 @@
1
+ json.partial! 'interchange/common/database_info', model: @data_set
2
+
3
+ # Core Properties
4
+ json.generated_at Time.now
5
+ json.version ActiveRecord::Migrator.current_version
6
+ json.protected_record @data_set.protected_record?
7
+ json.active @data_set.active?
8
+
9
+ json.name @data_set.name
10
+ json.metadata_description @data_set.metadata_description
11
+
12
+ # Related Models
13
+ json.partial! 'data_list', data_lists: @data_set.data_lists
14
+ #json.partial! 'interchange/common/metadata_keywords', metadata_keywords: @data_set.metadata_keywords
15
+
16
+
17
+
@@ -0,0 +1,12 @@
1
+ # Nested DataList
2
+ json.nested_data_list do
3
+ json.partial! 'interchange/common/database_info', model: nested_data_list
4
+
5
+ json.display_name nested_data_list.display_name
6
+ json.code_name nested_data_list.code_name
7
+ json.code_number nested_data_list.code_number
8
+ json.option_class_name nested_data_list.option_class_name
9
+ json.metadata_description nested_data_list.metadata_description
10
+
11
+ json.partial! 'data_option', data_options: nested_data_list.data_options
12
+ end
@@ -0,0 +1,10 @@
1
+ # This allows the jbuilder file to use ruby key names that on output, use naming that is more akin to JavaScript and iOS naming:
2
+ json.key_format! camelize: :lower
3
+
4
+ # Pull in the data_set partial, which not only has core data_set properties, but all the related models:
5
+ json.partial! 'data_set'
6
+
7
+
8
+
9
+
10
+
@@ -0,0 +1,23 @@
1
+ json.partial! 'interchange/common/database_info', model: @document_template
2
+
3
+ # Core Properties
4
+ json.generated_at Time.now
5
+ json.version ActiveRecord::Migrator.current_version
6
+ json.protected_record @document_template.protected_record?
7
+ json.title @document_template.title
8
+ json.template @document_template.instance_of?(DocumentTemplate)
9
+ json.author_name @document_template.author_name
10
+ json.service_at @document_template.service_at
11
+ json.metadata_description @document_template.metadata_description
12
+
13
+ # Related Models
14
+ json.partial! 'section', sections: @document_template.sections.sorted
15
+ json.partial! 'interchange/common/metadata_keywords', metadata_keywords: @document_template.metadata_keywords
16
+ json.partial! 'interchange/common/test_assertions', test_assertions: @document_template.test_assertions
17
+
18
+ # Potentially very long values
19
+ json.content_source @document_template.content_source unless @automation
20
+
21
+
22
+
23
+
@@ -0,0 +1,11 @@
1
+ # Sections
2
+ json.sections sections do |section|
3
+ json.partial! 'interchange/common/database_info', model: section
4
+
5
+ json.title section.title
6
+ json.position section.position
7
+ json.content_array section.content_array
8
+
9
+ json.partial! 'section', sections: section.sections.sorted
10
+
11
+ end
@@ -0,0 +1,10 @@
1
+ # This allows the jbuilder file to use ruby key names that on output, use naming that is more akin to JavaScript and iOS naming:
2
+ json.key_format! camelize: :lower
3
+
4
+ # Pull in the document_template partial, which not only has core document_template properties, but all the related models:
5
+ json.partial! 'document_template'
6
+
7
+
8
+
9
+
10
+
@@ -0,0 +1,49 @@
1
+ <h4>Last Export</h4>
2
+ <div class="alert alert-info">
3
+ <%= @last_export_summary[:timestamp] %>
4
+ <span class="pull-right"><%= pluralize(@last_export_summary[:total_records], 'Record') %>&nbsp;&mdash;&nbsp;<%= time_ago_in_words @last_export_summary[:timestamp] %> ago</span>
5
+ </div>
6
+ <div class="accordion" id="export_summary_accordion">
7
+
8
+ <div class="accordion-group success">
9
+ <div class="accordion-heading">
10
+ <a class="accordion-toggle" data-toggle="collapse" data-parent="#export_summary_accordion" href="#collapseExportSuccessful">
11
+ <%= raw section_summary_title(@last_export_summary[:successful].count, 'Successful Export') %>
12
+ </a>
13
+ </div>
14
+ <div id="collapseExportSuccessful" class="accordion-body collapse in">
15
+ <div class="accordion-inner">
16
+ <% @last_export_summary[:successful].each do | entry | %>
17
+ <%= entry.model_qualified_title %><br/>
18
+ <% end %>
19
+ <% if @last_export_summary[:successful].empty? %>
20
+ No records successfully exported.
21
+ <% end %>
22
+ </div>
23
+ </div>
24
+ </div>
25
+
26
+ <div class="accordion-group failure">
27
+ <div class="accordion-heading">
28
+ <a class="accordion-toggle" data-toggle="collapse" data-parent="#export_summary_accordion" href="#collapseExportFailures">
29
+ <%= raw section_summary_title(@last_export_summary[:failures].count, 'Export Failure') %>
30
+ </a>
31
+ </div>
32
+ <div id="collapseExportFailures" class="accordion-body collapse">
33
+ <div class="accordion-inner">
34
+ <% @last_export_summary[:failures].each do | entry | %>
35
+ <%= entry.model_qualified_title %><br/>
36
+ <ul>
37
+ <% entry.export_errors.each do | export_error | %>
38
+ <li><%= export_error %></li>
39
+ <% end %>
40
+ </ul>
41
+ <% end %>
42
+ <% unless @last_export_summary[:has_failures] %>
43
+ No export failures to report.
44
+ <% end %>
45
+ </div>
46
+ </div>
47
+ </div>
48
+
49
+ </div>
@@ -0,0 +1,35 @@
1
+ <div class="page-header">
2
+ <h1>Export</h1>
3
+ </div>
4
+
5
+ <dl class="dl-horizontal">
6
+ This facility allows you to export JSON files that can later be exported by this or
7
+ another Mockingjay instance. Optionally, you can select to export to a JavaScript file
8
+ meant for execution by UIAutomation tests as source data.<br/><br/>
9
+ Output from an export operation can be found here, as <strong>.js</strong> files:
10
+ <ul>
11
+ <li>/public/interchange/export/Patients</li>
12
+ <li>/public/interchange/export/Physicians</li>
13
+ <li>/public/interchange/export/DocumentTemplates</li>
14
+ <li>/public/interchange/export/DataSets</li>
15
+ </ul>
16
+
17
+
18
+ <div class='well'>
19
+ <%= form_tag interchange_export_path, method: 'post' do %>
20
+ <h5>Top Level Collections to Export</h5>
21
+ <%= check_box_tag(:export_patients, true, @selections[:export_patients]) %> <div class='inline-label'>Patients</div><br/>
22
+ <%= check_box_tag(:export_physicians, true, @selections[:export_physicians]) %> <div class='inline-label'>Physicians</div><br/>
23
+ <%= check_box_tag(:export_document_templates, true, @selections[:export_document_templates]) %> <div class='inline-label'>Document Templates</div><br/>
24
+ <%= check_box_tag(:export_data_sets, true, @selections[:export_data_sets]) %> <div class='inline-label'>Data Sets</div><br/>
25
+ <br/>
26
+ <h5>Options</h5>
27
+ <%= check_box_tag(:restrict_by_keywords, true, @selections[:restrict_by_keywords]) %> <div class='inline-label'>Restrict to only those with <strong>any</strong> of the following keywords:</div><br/>
28
+ <span style="width:18px;float:left;">&nbsp;</span><%= text_field_tag(:keywords_csv, @selections[:keywords_csv], size: 140, placeholder: 'separate with commas') %> <br/>
29
+ <br/><br/>
30
+ <%= export_submit_button_tag %>
31
+ <% end %>
32
+ </div>
33
+ </dl>
34
+
35
+ <%= render :partial => 'export_summary' unless @last_export_summary.nil? %>
@@ -0,0 +1,72 @@
1
+ <h4>Last Import</h4>
2
+ <div class="alert alert-info">
3
+ <%= @last_import_summary[:timestamp] %>
4
+ <span class="pull-right"><%= pluralize(@last_import_summary[:total_records], 'Record') %>&nbsp;&mdash;&nbsp;<%= time_ago_in_words @last_import_summary[:timestamp] %> ago</span>
5
+ </div>
6
+ <div class="accordion" id="import_summary_accordion">
7
+
8
+ <div class="accordion-group success">
9
+ <div class="accordion-heading">
10
+ <a class="accordion-toggle" data-toggle="collapse" data-parent="#import_summary_accordion" href="#collapseImportSuccessful">
11
+ <%= raw section_summary_title(@last_import_summary[:successful].count, 'Successful Import') %>
12
+ </a>
13
+ </div>
14
+ <div id="collapseImportSuccessful" class="accordion-body collapse in">
15
+ <div class="accordion-inner">
16
+ <% @last_import_summary[:successful].each do | entry | %>
17
+ <%= entry.model_qualified_title %><br/>
18
+ <% end %>
19
+ <% if @last_import_summary[:successful].empty? %>
20
+ No records successfully imported.
21
+ <% end %>
22
+ </div>
23
+ </div>
24
+ </div>
25
+
26
+ <div class="accordion-group skipped">
27
+ <div class="accordion-heading">
28
+ <a class="accordion-toggle" data-toggle="collapse" data-parent="#import_summary_accordion" href="#collapseImportSkipped">
29
+ <%= raw section_summary_title(@last_import_summary[:skipped].count, 'Skipped Import') %>
30
+ </a>
31
+ </div>
32
+ <div id="collapseImportSkipped" class="accordion-body collapse">
33
+ <div class="accordion-inner">
34
+ <% @last_import_summary[:skipped].each do | entry | %>
35
+ <%= entry.model_qualified_title %><br/>
36
+ <ul>
37
+ <% entry.import_notices.each do | notice | %>
38
+ <li><%= notice %></li>
39
+ <% end %>
40
+ </ul>
41
+ <% end %>
42
+ <% unless @last_import_summary[:has_skips] %>
43
+ No records skipped.
44
+ <% end %>
45
+ </div>
46
+ </div>
47
+ </div>
48
+
49
+ <div class="accordion-group failure">
50
+ <div class="accordion-heading">
51
+ <a class="accordion-toggle" data-toggle="collapse" data-parent="#import_summary_accordion" href="#collapseImportFailures">
52
+ <%= raw section_summary_title(@last_import_summary[:failures].count, 'Import Failure') %>
53
+ </a>
54
+ </div>
55
+ <div id="collapseImportFailures" class="accordion-body collapse">
56
+ <div class="accordion-inner">
57
+ <% @last_import_summary[:failures].each do | entry | %>
58
+ <%= entry.model_qualified_title %><br/>
59
+ <ul>
60
+ <% entry.import_errors.each do | import_error | %>
61
+ <li><%= import_error %></li>
62
+ <% end %>
63
+ </ul>
64
+ <% end %>
65
+ <% unless @last_import_summary[:has_failures] %>
66
+ No import failures to report.
67
+ <% end %>
68
+ </div>
69
+ </div>
70
+ </div>
71
+
72
+ </div>
@@ -0,0 +1,37 @@
1
+ <div class="page-header">
2
+ <h1>Import</h1>
3
+ </div>
4
+
5
+ <dl class="dl-horizontal">
6
+ This facility allows you to import JSON files that you've already exported using Mockingjay in the past.
7
+ We import from the following paths, blowing away all existing data for the model type imported.<br/> <br/>
8
+ <ul>
9
+ <li>/public/interchange/import/Patients</li>
10
+ <li>/public/interchange/import/Physicians</li>
11
+ <li>/public/interchange/import/DocumentTemplates</li>
12
+ <li>/public/interchange/import/DataSets</li>
13
+ </ul>
14
+
15
+ <div class='well'>
16
+ <%= form_tag interchange_import_path, method: 'post' do %>
17
+ <h5>Top Level Collections to Import</h5>
18
+ <%= check_box_tag(:import_patients, true, @selections[:import_patients]) %> <div class='inline-label'>Patients</div><br/>
19
+ <%= check_box_tag(:import_physicians, true, @selections[:import_physicians]) %> <div class='inline-label'>Physicians</div><br/>
20
+ <%= check_box_tag(:import_document_templates, true, @selections[:import_document_templates]) %> <div class='inline-label'>Document Templates</div><br/>
21
+ <%= check_box_tag(:import_data_sets, true, @selections[:import_data_sets]) %> <div class='inline-label'>Data Sets</div><br/>
22
+ <h5>Options</h5>
23
+ <%= check_box_tag(:destroy_existing, true, @selections[:destroy_existing]) %> <div class='inline-label'>Destroy existing Collection(s) prior to import</div><br/>
24
+ <%= check_box_tag(:cleanup, true, @selections[:cleanup]) %> <div class='inline-label'>Delete source files after successful import</div><br/>
25
+
26
+ <h5>Duplicates</h5>
27
+ <%= radio_button_tag(:duplicates, 'Allow', @selections[:allow_duplicates]) %> <div class='inline-label'>Allow</div>
28
+ <%= radio_button_tag(:duplicates, 'Skip', @selections[:skip_duplicates]) %> <div class='inline-label'>Skip</div>
29
+ <%= radio_button_tag(:duplicates, 'Replace', @selections[:replace_duplicates]) %> <div class='inline-label'>Replace</div>
30
+
31
+ <br/><br/>
32
+ <%= import_submit_button_tag %>
33
+ <% end %>
34
+ </div>
35
+ </dl>
36
+
37
+ <%= render :partial => 'import_summary' unless @last_import_summary.nil? %>
@@ -0,0 +1,6 @@
1
+ <% flash.each do |name, msg| %>
2
+ <div class="alert alert-<%= name == :notice ? "success" : "error" %>">
3
+ <a class="close" data-dismiss="alert">×</a>
4
+ <%= msg %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,38 @@
1
+ <div class="navbar navbar-inverse navbar-fixed-top">
2
+ <div class="navbar-inner">
3
+ <div class="container">
4
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"></a> <a class="brand" href="#">Inpatient Mockingjay</a>
5
+ <div class="nav-collapse">
6
+ <ul class="nav">
7
+ <li>
8
+ <%= link_to "Patients", mock_patients_path %>
9
+ </li>
10
+ <li>
11
+ <%= link_to "Physicians", mock_physicians_path %>
12
+ </li>
13
+ <li>
14
+ <%= link_to "Groups", mock_groups_path %>
15
+ </li>
16
+ <li>
17
+ <%= link_to "Document Templates", mock_document_templates_path %>
18
+ </li>
19
+ <li>
20
+ <%= link_to "Metadata", mock_metadata_keywords_path %>
21
+ </li>
22
+ <li>
23
+ <%= link_to "Data Sets", reference_data_sets_path %>
24
+ </li>
25
+ <li>
26
+ <%= link_to "Statistics", mock_statistics_show_path %>
27
+ </li>
28
+ <li>
29
+ <%= link_to "Import", interchange_import_path %>
30
+ </li>
31
+ <li>
32
+ <%= link_to "Export", interchange_export_path %>
33
+ </li>
34
+ </ul>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </div>
@@ -0,0 +1,7 @@
1
+ <% if root_model && root_model.protected_record? %>
2
+ <div class="alert alert-block">
3
+ <h4>Warning!</h4>
4
+ This data is associated with the protected <%=root_model.class.name %> record '<strong><%=root_model.short_title %></strong>'.
5
+ It is not meant to be changed, because one or more formal tests rely on it.
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,33 @@
1
+ <head>
2
+ <title>Inpatient Mockingjay</title>
3
+ <!--[if lt IE 9]>
4
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
5
+ <![endif]-->
6
+ <%= stylesheet_link_tag "application", :media => "all" %>
7
+ <%= javascript_include_tag "application" %>
8
+ <%= csrf_meta_tags %>
9
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
+ </head>
11
+
12
+ <body>
13
+ <%= render :partial => 'layouts/navbar' %>
14
+
15
+ <div class="container">
16
+ <%= render_breadcrumbs :builder => ::BootstrapBreadcrumbsBuilder %>
17
+ <%= render :partial => 'layouts/flashbar' %>
18
+ <%= render :partial => 'layouts/protected_warning', :locals => { :root_model => root_model } %>
19
+
20
+
21
+ <div class="row">
22
+ <div class="span7"><%= yield %></div>
23
+ <div class="span1"></div>
24
+ <div class="span4">
25
+ <%= render :partial => recent if defined? recent %>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ <br/>
30
+ <br/>
31
+ <br/>
32
+ <br/>
33
+ </body>
@@ -0,0 +1,39 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Inpatient Mockingjay</title>
5
+ <!--[if lt IE 9]>
6
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
7
+ <![endif]-->
8
+ <%= stylesheet_link_tag "application", :media => "all" %>
9
+ <%= javascript_include_tag "application" %>
10
+ <%= csrf_meta_tags %>
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
12
+ </head>
13
+ <body>
14
+ <%= render :partial => 'layouts/navbar' %>
15
+
16
+ <div class="container">
17
+ <%= render_breadcrumbs :builder => ::BootstrapBreadcrumbsBuilder %>
18
+ <%= render :partial => 'layouts/flashbar' %>
19
+ <%= render :partial => 'layouts/protected_warning', :locals => { :root_model => @patient } %>
20
+ <%= render :partial => 'layouts/protected_warning', :locals => { :root_model => @physician } %>
21
+ <%= render :partial => 'layouts/protected_warning', :locals => { :root_model => @document_template } %>
22
+ <%= render :partial => 'layouts/protected_warning', :locals => { :root_model => @data_set } %>
23
+
24
+ <div class="row">
25
+ <div class="span7">
26
+ <%= yield %>
27
+ </div>
28
+ <div class="span5">
29
+ <%= render :partial => current_patient if has_current_patient? %>
30
+ <%= render :partial => current_physician if has_current_physician? %>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ <br/>
35
+ <br/>
36
+ <br/>
37
+ <br/>
38
+ </body>
39
+ </html>
@@ -0,0 +1,5 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <%= render :partial => 'layouts/root_model_layout', :locals => { :root_model => @data_set } %>
4
+ </html>
5
+
@@ -0,0 +1,31 @@
1
+ <div class="btn-group">
2
+ <h4>Data Options</h4>
3
+ </div>
4
+
5
+ <%= go_button_link([:reference, @data_list, :data_options], as_mini: true, title: 'View All') %>
6
+ <%= new_button_link [:new, :reference, @data_list, :data_option] %>
7
+
8
+ <table class="table table-striped">
9
+ <thead>
10
+ <tr>
11
+ <th>Display Name</th>
12
+ <th>Code Name</th>
13
+ <th>Code Number</th>
14
+ <th><%= actions_table_heading %></th>
15
+ </tr>
16
+ </thead>
17
+ <tbody>
18
+ <% data_options.each do |data_option| %>
19
+ <tr>
20
+ <td><%= data_option.display_name %></td>
21
+ <td><%= data_option.code_name %></td>
22
+ <td><%= data_option.code_number %></td>
23
+ <td>
24
+ <%= show_button_link [:reference, @data_list, data_option], as_mini: true %>
25
+ <%= edit_button_link [:edit, :reference, @data_list, data_option], as_mini: true %>
26
+ <%= destroy_button_link [:reference, @data_list, data_option], as_mini: true %>
27
+ </td>
28
+ </tr>
29
+ <% end %>
30
+ </tbody>
31
+ </table>