Class: Lab::OrdersController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- ApplicationController
- Lab::OrdersController
- Defined in:
- app/controllers/lab/orders_controller.rb
Instance Method Summary collapse
- #create ⇒ Object
- #destroy ⇒ Object
- #index ⇒ Object
- #order_result ⇒ Object
- #order_status ⇒ Object
- #summary ⇒ Object
- #update ⇒ Object
- #verify_tracking_number ⇒ Object
Methods inherited from ApplicationController
Instance Method Details
#create ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/controllers/lab/orders_controller.rb', line 8 def create order_params_list = params.require(:orders) orders = order_params_list.map do |order_params| OrdersService.order_test(order_params) end orders.each do |order| Lab::PushOrderJob.perform_later(order.fetch(:order_id)) rescue StandardError => e Rails.logger.error("Failed to enqueue PushOrderJob for order #{order.fetch(:order_id)}: #{e.}") end render json: orders, status: :created end |
#destroy ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/controllers/lab/orders_controller.rb', line 63 def destroy OrdersService.void_order(params[:id], params[:reason]) begin Lab::VoidOrderJob.perform_later(params[:id]) rescue StandardError => e Rails.logger.error("Failed to enqueue VoidOrderJob for order #{params[:id]}: #{e.}") end render status: :no_content end |
#index ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'app/controllers/lab/orders_controller.rb', line 36 def index filters = params.permit(%i[patient_id patient accession_number date status visit_id]) id = filters[:patient_id] || filters[:patient] patient = Patient.find(id) if filters[:patient_id] || filters[:patient] if filters[:patient_id] || filters[:patient] begin Lab::UpdatePatientOrdersJob.perform_later(patient.id) rescue StandardError => e Rails.logger.error("Failed to enqueue UpdatePatientOrdersJob for patient #{patient.id}: #{e.}") end end orders = OrdersSearchService.find_orders(filters) begin render json: orders.reload, status: :ok rescue StandardError render json: orders end end |
#order_result ⇒ Object
82 83 84 85 86 87 |
# File 'app/controllers/lab/orders_controller.rb', line 82 def order_result params.permit! order_params = params[:data].to_h OrdersService.update_order_result(order_params) render json: { message: 'Results processed successfully' }, status: :ok end |
#order_status ⇒ Object
75 76 77 78 79 80 |
# File 'app/controllers/lab/orders_controller.rb', line 75 def order_status order_params = params.permit(:tracking_number, :status, :status_time, :comments, :status_id, updated_by: [:first_name, :last_name, :id, :phone_number]) OrdersService.update_order_status(order_params) render json: { message: "Status for order #{order_params['tracking_number']} successfully updated" }, status: :ok end |
#summary ⇒ Object
89 90 91 92 93 94 95 96 |
# File 'app/controllers/lab/orders_controller.rb', line 89 def summary start_date = params[:start_date].present? ? params[:start_date] : 24.hours.ago.beginning_of_day end_date = params[:end_date].present? ? params[:end_date].to_date.end_of_day : 24.hours.ago.end_of_day concept_id = params[:concept_id] include_data = params[:include_data] orders = OrdersService.lab_orders(start_date, end_date, concept_id, include_data: include_data) render json: orders, status: :ok end |
#update ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/controllers/lab/orders_controller.rb', line 23 def update specimen = params.require(:specimen).slice(:concept_id) order = OrdersService.update_order(params[:id], specimen:, force_update: params[:force_update]) begin Lab::PushOrderJob.perform_later(order.fetch(:order_id)) rescue StandardError => e Rails.logger.error("Failed to enqueue PushOrderJob for order #{order.fetch(:order_id)}: #{e.}") end render json: order end |
#verify_tracking_number ⇒ Object
58 59 60 61 |
# File 'app/controllers/lab/orders_controller.rb', line 58 def verify_tracking_number tracking_number = params.require(:accession_number) render json: { exists: OrdersService.check_tracking_number(tracking_number) }, status: :ok end |