PatientController.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zilongs
  5. * Date: 20-10-2
  6. * Time: 下午8:46
  7. */
  8. namespace App\Http\Controllers\Api\V1;
  9. use App\Models\Order;
  10. use App\Models\Patient;
  11. class PatientController extends AuthController
  12. {
  13. public function createPatient()
  14. {
  15. $req = request()->post();
  16. $this->validate(request(), [
  17. 'name' => 'required|max:50',
  18. 'sex' => 'required|in:1,2',
  19. 'avatar' => 'required|url',
  20. 'birthday' => 'required|date',
  21. 'relationship_type' => 'required|integer',
  22. 'info' => 'max:1000',
  23. 'card_type' => 'in:0,1,2',
  24. 'card_number' => 'max:50',
  25. 'card_img_url' => 'url'
  26. ]);
  27. $user = $this->user;
  28. $req['user_id'] = $user['id'];
  29. Patient::create($req);
  30. return out();
  31. }
  32. public function updatePatient()
  33. {
  34. $req = request()->post();
  35. $this->validate(request(), [
  36. 'id' => 'required|integer',
  37. 'name' => 'required|max:50',
  38. 'sex' => 'required|in:1,2',
  39. 'avatar' => 'required|url',
  40. 'birthday' => 'required|date',
  41. 'relationship_type' => 'required|integer',
  42. 'info' => 'max:1000',
  43. 'card_type' => 'in:0,1,2',
  44. 'card_number' => 'max:50',
  45. 'card_img_url' => 'url'
  46. ]);
  47. $user = $this->user;
  48. Patient::where('id', $req['id'])->where('user_id', $user['id'])->update($req);
  49. return out();
  50. }
  51. public function patientList()
  52. {
  53. $user = $this->user;
  54. $data = Patient::where('user_id', $user['id'])->orderBy('id', 'desc')->paginate();
  55. foreach ($data as $k => $v) {
  56. $v->append(['order_num', 'pack_docter_num', 'perfectd_degree']);
  57. }
  58. return out($data);
  59. }
  60. public function patientDetail()
  61. {
  62. $req = request()->post();
  63. $this->validate(request(), [
  64. 'patient_id' => 'required|integer',
  65. ]);
  66. $user = $this->user;
  67. $data = [];
  68. $data['patient'] = Patient::where('id', $req['patient_id'])->where('user_id', $user['id'])->first()->append(['order_num', 'pack_docter_num', 'perfectd_degree']);
  69. $data['orders']['cases'] = Order::with(['docter.office', 'docter.qualification', 'organization.docter'])->where('user_id', $user['id'])->where('patient_id', $req['patient_id'])->whereIn('order_status', [2,3])->where('product_type', '<', 6)->orderBy('id', 'desc')->get();
  70. $data['orders']['service_packs'] = Order::with('orderPack')->where('user_id', $user['id'])->where('patient_id', $req['patient_id'])->whereIn('order_status', [2,3])->where('product_type', 6)->orderBy('id', 'desc')->get();
  71. return out($data);
  72. }
  73. }