db = \Config\Database::connect(); $this->patientModel = new PatientModel(); $this->orderModel = new OrderTestModel(); } public function createDemoOrder() { $input = $this->request->getJSON(true); $patientData = [ 'PatientID' => $input['PatientID'] ?? 'DEMO' . time(), 'Gender' => $input['Gender'] ?? '1', 'NameFirst' => $input['NameFirst'] ?? 'Demo', 'NameLast' => $input['NameLast'] ?? 'Patient', 'Birthdate' => $input['Birthdate'] ?? '1990-01-01' ]; $patient = $this->patientModel->where('PatientID', $patientData['PatientID'])->findAll(); if (empty($patient)) { $internalPID = $this->patientModel->createPatient($patientData); } else { $internalPID = $patient[0]['InternalPID']; } $orderData = [ 'InternalPID' => $internalPID, 'PatVisitID' => $input['PatVisitID'] ?? null, 'Priority' => $input['Priority'] ?? 'R', 'OrderingProvider' => $input['OrderingProvider'] ?? 'Dr. Demo', 'DepartmentID' => $input['DepartmentID'] ?? 1, ]; $orderID = $this->orderModel->createOrder($orderData); return $this->respond([ 'status' => 'success', 'message' => 'Demo order created successfully', 'data' => [ 'PatientID' => $patientData['PatientID'], 'InternalPID' => $internalPID, 'OrderID' => $orderID, 'OrderStatus' => 'ORD' ] ], 201); } public function listDemoOrders() { $orders = $this->db->table('ordertest ot') ->select('ot.OrderID, ot.InternalPID, p.PatientID, ot.OrderDateTime, ot.Priority, ot.OrderStatus') ->join('patient p', 'p.InternalPID = ot.InternalPID') ->where('ot.DelDate', null) ->orderBy('ot.OrderDateTime', 'DESC') ->limit(50) ->get() ->getResultArray(); // Transform Priority and OrderStatus foreach ($orders as &$order) { if (isset($order['Priority'])) { $order['priority'] = $order['Priority']; $order['priorityLabel'] = ValueSet::getLabel('priority', $order['Priority']) ?? ''; unset($order['Priority']); } if (isset($order['OrderStatus'])) { $order['orderStatus'] = $order['OrderStatus']; $order['orderStatusLabel'] = ValueSet::getLabel('order_status', $order['OrderStatus']) ?? ''; unset($order['OrderStatus']); } } return $this->respond([ 'status' => 'success', 'message' => 'Data fetched successfully', 'data' => $orders ], 200); } }