repository = $repository; $this->validator = $validator; } public function index() { $lists = $this->repository->paginate(request('per_page', self::PAGE_NUM)); return Response::success($lists); } public function store(Request $request) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_CREATE)); try { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))); $prescription = $this->repository->create($data); return Response::success($prescription); } catch (\Exception $e) { return $this->errorStore($e); } } public function show($id) { $prescription = $this->repository->find($id); return Response::success($prescription); } public function update(Request $request, $id) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE)); try { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_UPDATE))); $patient = $this->repository->update($data, $id); return Response::success($patient); } catch (\Exception $e) { $this->errorStore($e); } } public function destroy($id) { try { $re = $this->repository->delete($id); if ($re) { return Response::success(null, T('successfully delete.')); } return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } catch (\Exception $exception) { return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } } /** * Author: Mead */ public function options() { $eat_type = Prescription::$eatMap; $drug_type = Prescription::$drugTypeMap; $advice_type = Prescription::$adviceTypeMap; $frequency = Prescription::$frequencyMap; $use = Prescription::$useMap; $use_unit = Prescription::$useUnitMap; return Response::success(compact('eat_type', 'drug_type', 'advice_type', 'frequency', 'use', 'use_unit')); } /** * 快速创建 * Author: Mead */ public function quickStore(Request $request) { $this->validate($request, [ 'name' => 'required', 'sex' => 'required', 'age' => 'required', 'hospital' => 'sometimes', 'doctor' => 'required', 'department' => 'required', 'chinese_tra_diagnosis' => 'required', 'prescriptions' => 'required|array' ]); $prescriptions = $request->get('prescriptions'); foreach ($prescriptions as $prescription) { Validator::make($prescription, [ 'eat_type' => 'required', 'drug_type' => 'required', 'number' => 'required', 'advice_type' => 'required', 'advice_frequency' => 'required', 'one_consumption' => 'required', 'use_unit' => 'required', 'advice' => 'required', 'drugs' => 'required' ]); } $patient = $request->only(['name', 'age', 'sex']); $medical_record = $request->only(['hospital', 'doctor', 'department', 'chinese_tra_diagnosis']); $ps = []; foreach ($prescriptions as $prescription) { $ps[] = collect($prescription)->only(['eat_type', 'drug_type', 'number', 'advice_type', 'advice_frequency', 'one_consumption', 'use_unit', 'advice', 'drugs'])->toArray(); } $patient['birth_date'] = Carbon::now()->addYears(-$patient['age'])->toDateString(); unset($patient['age']); $user_id = login_user_id(); DB::transaction(function () use ($patient, $medical_record, $ps, $user_id) { $patient['admin_id'] = $user_id; $medical_record['admin_id'] = $user_id; $patient_m = Patient::query()->create($patient); $medical_record['chief_complaint'] = $medical_record['chinese_tra_diagnosis']; $medical_record['patient_id'] = $patient_m->id; $medical_record_m = MedicalRecord::query()->create($medical_record); foreach ($ps as $p) { $p['admin_id'] = $user_id; $p['patient_id'] = $patient_m->id; $p['medical_record_id'] = $medical_record_m->id; Prescription::query()->create($p); } }); return Response::success(null); } public function import(Request $request) { $this->validate($request, [ 'id' => 'required|integer', ]); $resource = Resource::query()->where('id', $request->get('id'))->first(); if (!$resource) { return $this->errorFail(); } Excel::import(new PrescriptionsImport(), Storage::disk($resource['disk'])->path($resource['path'])); } }