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