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.
- checksums.yaml +7 -0
- data/README.md +0 -0
- data/Rakefile +4 -0
- data/app/assets/images/rails.png +0 -0
- data/app/assets/javascripts/application.js +16 -0
- data/app/assets/javascripts/bootstrap_additions.js.coffee +4 -0
- data/app/assets/javascripts/interchange/patients.js.coffee +3 -0
- data/app/assets/javascripts/interchange/physicians.js.coffee +3 -0
- data/app/assets/javascripts/mock/allergies.js.coffee +3 -0
- data/app/assets/javascripts/mock/appointments.js.coffee +3 -0
- data/app/assets/javascripts/mock/assignments.js.coffee +17 -0
- data/app/assets/javascripts/mock/chart_reviews.js.coffee +3 -0
- data/app/assets/javascripts/mock/comments.js.coffee +3 -0
- data/app/assets/javascripts/mock/conditions.js.coffee +3 -0
- data/app/assets/javascripts/mock/diagnoses.js.coffee +3 -0
- data/app/assets/javascripts/mock/documents.js.coffee +3 -0
- data/app/assets/javascripts/mock/employments.js.coffee +3 -0
- data/app/assets/javascripts/mock/encounters.js.coffee +3 -0
- data/app/assets/javascripts/mock/family_contacts.js.coffee +3 -0
- data/app/assets/javascripts/mock/family_histories.js.coffee +3 -0
- data/app/assets/javascripts/mock/guarantors.js.coffee +3 -0
- data/app/assets/javascripts/mock/insurance_plans.js.coffee +3 -0
- data/app/assets/javascripts/mock/lab_concepts.js.coffee +4 -0
- data/app/assets/javascripts/mock/lab_results.js.coffee +3 -0
- data/app/assets/javascripts/mock/locations.js.coffee +3 -0
- data/app/assets/javascripts/mock/medical_record_numbers.js.coffee +3 -0
- data/app/assets/javascripts/mock/metadata_keywords.js.coffee +3 -0
- data/app/assets/javascripts/mock/pharmacies.js.coffee +3 -0
- data/app/assets/javascripts/mock/phone_numbers.js.coffee +3 -0
- data/app/assets/javascripts/mock/physicians.js.coffee +3 -0
- data/app/assets/javascripts/mock/procedure_histories.js.coffee +3 -0
- data/app/assets/javascripts/mock/providers.js.coffee +14 -0
- data/app/assets/javascripts/mock/questions.js.coffee +3 -0
- data/app/assets/javascripts/mock/reference_range.js.coffee +3 -0
- data/app/assets/javascripts/mock/sections.js.coffee +3 -0
- data/app/assets/javascripts/mock/social_histories.js.coffee +3 -0
- data/app/assets/javascripts/mock/state_health_identifiers.js.coffee +3 -0
- data/app/assets/javascripts/mock/statistics.js.coffee +3 -0
- data/app/assets/javascripts/mock/test_assertions.js.coffee +3 -0
- data/app/assets/javascripts/mock/visit.js.coffee +3 -0
- data/app/assets/javascripts/mock/vitals_measurement.js.coffee +3 -0
- data/app/assets/javascripts/reference/data_elements.js.coffee +3 -0
- data/app/assets/javascripts/reference/data_lists.js.coffee +3 -0
- data/app/assets/javascripts/reference/data_sets.js.coffee +3 -0
- data/app/assets/stylesheets/application.css.scss +13 -0
- data/app/assets/stylesheets/bootstrap_and_overrides.css.scss +79 -0
- data/app/assets/stylesheets/forms.css.scss +67 -0
- data/app/assets/stylesheets/interchange/patients.css.scss +3 -0
- data/app/assets/stylesheets/interchange/physicians.css.scss +3 -0
- data/app/assets/stylesheets/mock/allergies.css.scss +3 -0
- data/app/assets/stylesheets/mock/appointments.css.scss +3 -0
- data/app/assets/stylesheets/mock/chart_reviews.css.scss +3 -0
- data/app/assets/stylesheets/mock/comments.css.scss +3 -0
- data/app/assets/stylesheets/mock/conditions.css.scss +3 -0
- data/app/assets/stylesheets/mock/diagnoses.css.scss +3 -0
- data/app/assets/stylesheets/mock/documents.css.scss +3 -0
- data/app/assets/stylesheets/mock/employments.css.scss +3 -0
- data/app/assets/stylesheets/mock/encounters.css.scss +3 -0
- data/app/assets/stylesheets/mock/family_contacts.css.scss +3 -0
- data/app/assets/stylesheets/mock/family_histories.css.scss +3 -0
- data/app/assets/stylesheets/mock/guarantors.css.scss +3 -0
- data/app/assets/stylesheets/mock/insurance_plans.css.scss +3 -0
- data/app/assets/stylesheets/mock/lab_concepts.css.scss +3 -0
- data/app/assets/stylesheets/mock/lab_results.css.scss +3 -0
- data/app/assets/stylesheets/mock/locations.css.scss +3 -0
- data/app/assets/stylesheets/mock/medical_record_numbers.css.scss +3 -0
- data/app/assets/stylesheets/mock/metadata_keywords.css.scss +3 -0
- data/app/assets/stylesheets/mock/pharmacies.css.scss +3 -0
- data/app/assets/stylesheets/mock/phone_numbers.css.scss +3 -0
- data/app/assets/stylesheets/mock/physicians.css.scss +3 -0
- data/app/assets/stylesheets/mock/procedure_histories.css.scss +3 -0
- data/app/assets/stylesheets/mock/providers.css.scss +3 -0
- data/app/assets/stylesheets/mock/questions.css.scss +3 -0
- data/app/assets/stylesheets/mock/reference_range.css.scss +3 -0
- data/app/assets/stylesheets/mock/sections.css.scss +3 -0
- data/app/assets/stylesheets/mock/social_histories.css.scss +3 -0
- data/app/assets/stylesheets/mock/state_health_identifiers.css.scss +3 -0
- data/app/assets/stylesheets/mock/statistics.css.scss +3 -0
- data/app/assets/stylesheets/mock/test_assertions.css.scss +3 -0
- data/app/assets/stylesheets/mock/visit.css.scss +3 -0
- data/app/assets/stylesheets/mock/vitals_measurement.css.scss +3 -0
- data/app/assets/stylesheets/reference/data_elements.css.scss +3 -0
- data/app/assets/stylesheets/reference/data_lists.css.scss +3 -0
- data/app/assets/stylesheets/reference/data_sets.css.scss +3 -0
- data/app/assets/stylesheets/scaffolds.css.scss +66 -0
- data/app/controllers/api/base_controller.rb +78 -0
- data/app/controllers/api/ion_orders_engine/order_by_id/order_by_id_controller.rb +3220 -0
- data/app/controllers/api/ion_orders_engine/order_profile/inpatient_order_profile_controller.rb +3156 -0
- data/app/controllers/application_controller.rb +25 -0
- data/app/controllers/crud/base_controller.rb +90 -0
- data/app/controllers/interchange/base_controller.rb +63 -0
- data/app/controllers/interchange/data_sets_controller.rb +40 -0
- data/app/controllers/interchange/exports_controller.rb +120 -0
- data/app/controllers/interchange/imports_controller.rb +141 -0
- data/app/controllers/reference/base_controller.rb +7 -0
- data/app/controllers/reference/data_lists_controller.rb +177 -0
- data/app/controllers/reference/data_options_controller.rb +147 -0
- data/app/controllers/reference/data_sets_controller.rb +160 -0
- data/app/helpers/application_helper.rb +389 -0
- data/app/helpers/error_messages_helper.rb +23 -0
- data/app/helpers/interchange/exports_helper.rb +9 -0
- data/app/helpers/interchange/imports_helper.rb +31 -0
- data/app/helpers/layout_helper.rb +40 -0
- data/app/helpers/reference/data_elements_helper.rb +2 -0
- data/app/helpers/reference/data_lists_helper.rb +2 -0
- data/app/helpers/reference/data_sets_helper.rb +2 -0
- data/app/views/interchange/common/_database_info.json.jbuilder +6 -0
- data/app/views/interchange/common/_metadata_keywords.json.jbuilder +13 -0
- data/app/views/interchange/common/_test_assertions.json.jbuilder +17 -0
- data/app/views/interchange/data_sets/_data_list.json.jbuilder +14 -0
- data/app/views/interchange/data_sets/_data_option.json.jbuilder +12 -0
- data/app/views/interchange/data_sets/_data_set.json.jbuilder +17 -0
- data/app/views/interchange/data_sets/_nested_data_list.json.jbuilder +12 -0
- data/app/views/interchange/data_sets/show.json.jbuilder +10 -0
- data/app/views/interchange/document_templates/_document_template.json.jbuilder +23 -0
- data/app/views/interchange/document_templates/_section.json.jbuilder +11 -0
- data/app/views/interchange/document_templates/show.json.jbuilder +10 -0
- data/app/views/interchange/exports/_export_summary.html.erb +49 -0
- data/app/views/interchange/exports/show.html.erb +35 -0
- data/app/views/interchange/imports/_import_summary.html.erb +72 -0
- data/app/views/interchange/imports/show.html.erb +37 -0
- data/app/views/layouts/_flashbar.html.erb +6 -0
- data/app/views/layouts/_navbar.html.erb +38 -0
- data/app/views/layouts/_protected_warning.html.erb +7 -0
- data/app/views/layouts/_root_model_layout.erb +33 -0
- data/app/views/layouts/application.html.erb +39 -0
- data/app/views/layouts/reference/data_sets.html.erb +5 -0
- data/app/views/reference/data_lists/_data_options.html.erb +31 -0
- data/app/views/reference/data_lists/_form.html.erb +23 -0
- data/app/views/reference/data_lists/edit.html.erb +6 -0
- data/app/views/reference/data_lists/index.html.erb +31 -0
- data/app/views/reference/data_lists/new.html.erb +6 -0
- data/app/views/reference/data_lists/show.html.erb +55 -0
- data/app/views/reference/data_options/_form.html.erb +23 -0
- data/app/views/reference/data_options/edit.html.erb +5 -0
- data/app/views/reference/data_options/index.html.erb +38 -0
- data/app/views/reference/data_options/new.html.erb +5 -0
- data/app/views/reference/data_options/show.html.erb +33 -0
- data/app/views/reference/data_sets/_form.html.erb +25 -0
- data/app/views/reference/data_sets/edit.html.erb +5 -0
- data/app/views/reference/data_sets/index.html.erb +40 -0
- data/app/views/reference/data_sets/new.html.erb +5 -0
- data/app/views/reference/data_sets/show.html.erb +38 -0
- data/config/application.rb +100 -0
- data/config/boot.rb +6 -0
- data/config/database.yml +25 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +42 -0
- data/config/environments/production.rb +64 -0
- data/config/environments/test.rb +35 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/extensions/active_record.rb +13 -0
- data/config/initializers/extensions/hash.rb +11 -0
- data/config/initializers/extensions/string.rb +15 -0
- data/config/initializers/inflections.rb +15 -0
- data/config/initializers/mime_types.rb +5 -0
- data/config/initializers/reference.rb +77 -0
- data/config/initializers/secret_token.rb +7 -0
- data/config/initializers/session_store.rb +8 -0
- data/config/initializers/simple_form.rb +142 -0
- data/config/initializers/simple_form_bootstrap.rb +45 -0
- data/config/initializers/wrap_parameters.rb +10 -0
- data/config/locales/en.yml +207 -0
- data/config/locales/simple_form.en.yml +26 -0
- data/config/mongo.yml +18 -0
- data/config/routes.rb +4 -0
- data/db/schema.rb +16 -0
- data/db/seeds.rb +66 -0
- data/lib/ion_orders_engine_mockingjay/engine.rb +13 -0
- data/lib/ion_orders_engine_mockingjay/version.rb +3 -0
- data/lib/ion_orders_engine_mockingjay.rb +4 -0
- data/lib/tasks/ion_orders_engine_mockingjay_tasks.rake +4 -0
- 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,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} </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,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') %> — <%= 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;"> </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') %> — <%= 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,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,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>
|