Class: Lab::OrdersController

Inherits:
ApplicationController show all
Defined in:
app/controllers/lab/orders_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#permit_parameters

Instance Method Details

#createObject



8
9
10
11
12
13
14
15
16
17
# 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 { |order| Lab::PushOrderJob.perform_later(order.fetch(:order_id)) }

  render json: orders, status: :created
end

#destroyObject



39
40
41
42
43
44
# File 'app/controllers/lab/orders_controller.rb', line 39

def destroy
  OrdersService.void_order(params[:id], params[:reason])
  Lab::VoidOrderJob.perform_later(params[:id])

  render status: :no_content
end

#indexObject



27
28
29
30
31
32
# File 'app/controllers/lab/orders_controller.rb', line 27

def index
  filters = params.slice(:patient_id, :accession_number, :date, :status)

  Lab::UpdatePatientOrdersJob.perform_later(filters[:patient_id]) if filters[:patient_id]
  render json: OrdersSearchService.find_orders(filters)
end

#order_resultObject



52
53
54
55
56
57
# File 'app/controllers/lab/orders_controller.rb', line 52

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_statusObject



46
47
48
49
50
# File 'app/controllers/lab/orders_controller.rb', line 46

def order_status
  order_params = params.permit(:tracking_number, :status, :status_time, :comments)
  OrdersService.update_order_status(order_params)
  render json: { message: "Status for order #{order_params['tracking_number']} successfully updated" }, status: :ok
end

#summaryObject



59
60
61
62
63
64
65
66
# File 'app/controllers/lab/orders_controller.rb', line 59

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

#updateObject



19
20
21
22
23
24
25
# File 'app/controllers/lab/orders_controller.rb', line 19

def update
  specimen = params.require(:specimen).slice(:concept_id)
  order = OrdersService.update_order(params[:id], specimen:, force_update: params[:force_update])
  Lab::PushOrderJob.perform_later(order.fetch(:order_id))

  render json: order
end

#verify_tracking_numberObject



34
35
36
37
# File 'app/controllers/lab/orders_controller.rb', line 34

def verify_tracking_number
  tracking_number = params.require(:accession_number)
  render json: { exists: OrdersService.check_tracking_number(tracking_number) }, status: :ok
end