AppletsService.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. namespace app\api\servies\applets;
  3. use app\api\dao\applets\AppletsDao;
  4. use app\api\dao\exam\ExamDao;
  5. use app\api\servies\application\ApplicationService;
  6. use app\api\servies\ZskkDefaultService;
  7. use app\api\utils\UUIDUtils;
  8. use think\Exception;
  9. use think\facade\Config;
  10. class AppletsService extends ZskkDefaultService
  11. {
  12. protected $logName = "AppletsService";
  13. private $applets = null;
  14. private $application = null;
  15. private $examDao = null;
  16. public function __construct(AppletsDao $appletsDao,ApplicationService $application) {
  17. parent::__construct();
  18. $this->applets = $appletsDao;
  19. $this->application = $application;
  20. }
  21. public function application_start($param, $doctor)
  22. {
  23. $info = array();
  24. $id = UUIDUtils::uuid();
  25. $info['id'] = $id;
  26. $odd_number = $this->application->getNum();
  27. $info['name'] = $param['name'];
  28. $sex = $this->getSex($param['sex']);
  29. $info['sex'] = $sex;
  30. $info['age'] = $param['age'];
  31. $info['phone'] = $param['phone'];
  32. $info['exam_datetime'] = $param['exam_datetime'];
  33. $info['exam_class'] = $param['exam_class'];
  34. $info['exam_project'] = $param['exam_project'];
  35. $info['patient_num'] = $param['patient_num'];
  36. $info['accession_num'] = $param['accession_num'];
  37. $info['exam_id'] = $param['exam_id'];
  38. $info['study_id'] = $param['study_id'];
  39. $info['report_status'] = 3;
  40. $info['illness_desc'] = isset($param['illness_desc']) ? $param['illness_desc'] : '';
  41. $info['phys_sign'] = isset($param['phys_sign']) ? $param['phys_sign'] : '';
  42. $info['clin_symp'] = isset($param['clin_symp']) ? $param['clin_symp'] : '';
  43. $info['anamnesis'] = isset($param['anamnesis']) ? $param['anamnesis'] : '';
  44. $info['family_ill'] = isset($param['family_ill']) ? $param['family_ill'] : '';
  45. $info['remark'] = isset($param['remark']) ? $param['remark'] : '';
  46. $info['clin_diag'] = isset($param['clin_diag']) ? $param['clin_diag'] : '';
  47. if(empty($param['institution_id']))
  48. {
  49. $this->throwError('请选择申请的医院','0011');
  50. }
  51. $info['remote_institution_id'] = $param['institution_id'];
  52. $remote_doctor_id = $param['doctor_id'] ?? null;
  53. $info['remote_institution_name'] = $this->applets->getInstitutionName($param['institution_id']);
  54. $info['remote_doctor_id'] = $remote_doctor_id;
  55. $info['remote_doctor_name'] = $remote_doctor_id ? $this->applets->getDoctorName($remote_doctor_id) : null;
  56. $institution = $this->applets->getInstitutionName($doctor['institution_id']);
  57. $info['local_institution_id'] = $doctor['institution_id'];
  58. $info['local_institution_name'] = $institution;
  59. $info['req_doctor_id'] = $doctor['id'];
  60. $info['req_doctor_name'] = $doctor['realname'];
  61. $info['req_date_time'] = date('Y-m-d H:i:s', time());
  62. $info['odd_number'] = $odd_number;
  63. $return = $this->applets->insertAplication($info);
  64. $this->application->saveProgressLog($doctor, 1, $id);
  65. $doctorName = $doctor['realname'];
  66. $data = [
  67. 'id' => UUIDUtils::uuid(),
  68. 'title' => '收到一条远程诊断申请',
  69. 'content' => $institution . $doctorName . "向您发起一条远程诊断申请",
  70. 'doctor_id' => $remote_doctor_id,
  71. 'institution_id' => $param['institution_id'],
  72. 'count' => '1',
  73. 'type' => '1',
  74. 'application_id' => $id,
  75. 'ctime' => date('Y-m-d H:i:s', time()),
  76. ];
  77. $data['exam_id'] = $param['exam_id'];
  78. $this->applets->insertMessage($data);
  79. $info = $this->applets->getReport($id);
  80. if (empty($info)) {
  81. $report_data = [
  82. 'id' => UUIDUtils::uuid(),
  83. 'exam_id' => $param['exam_id'],
  84. 'createdAt' => date('Y-m-d H:i:s', time()),
  85. 'type' => 2,
  86. 'remote_application_id' => $id,
  87. ];
  88. $this->applets->saveReport($report_data);
  89. }
  90. $bbs = [
  91. 'id' => UUIDUtils::uuid(),
  92. 'initiator' => $doctor['realname'],
  93. 'remote_application_id' => $id,
  94. 'content' => $doctor['realname'] . '医生发起了申请',
  95. 'createdAt' => date('Y-m-d H:i:s', time()),
  96. 'type' => 1
  97. ];
  98. $this->applets->saveBbs($bbs);
  99. $type = $this->applets->getContactType($doctor['institution_id'], $param['institution_id']);
  100. $doctor_money = $this->applets->getDoctorMoney($doctor['institution_id'], $param['institution_id'], $remote_doctor_id, $param['exam_class']);
  101. if ($type === Config::get('PAY_TYPE')['HOSPITAL']) {
  102. $res = $this->application->makeHospitalOrder($doctor['institution_id'], $param['institution_id'], $doctor, $remote_doctor_id, $param['exam_class'],$id, $doctor_money, $is_urgent = 0);
  103. }
  104. if ($type === Config::get('PAY_TYPE')['PATIENT']) {
  105. $this->application->makePatientsOrder($doctor['institution_id'], $param['institution_id'], $doctor, $remote_doctor_id, $param['exam_class'], $id, $doctor_money, $is_urgent = 0);
  106. }
  107. return true;
  108. }
  109. public function getMyApplication($params,$doctor)
  110. {
  111. $fuzzyField = ['name','patient_num','accession_num'];
  112. $fuzzyWhere = $this->getListFuzzyWhere($params,$fuzzyField);
  113. $moreField = ['report_status'];
  114. $moreWhere = $this->getListSpecificWhere($params, $moreField);
  115. $class_where = $this->getRemoteExamClass($doctor);
  116. $doctor_where = ['req_doctor_id'=>$doctor['id']];
  117. $data = $this->applets->getRemoteExamList($doctor['institution_id'], $fuzzyWhere, $moreWhere,$class_where, $params,$doctor_where);
  118. return $data;
  119. }
  120. public function getRemoteExamClass($doctor)
  121. {
  122. $class = $doctor['exam_class'] ?? false;
  123. if(!$class){
  124. $this->throwError('登陆信息失效,请重新进行登陆','0099');
  125. }
  126. $where = [];
  127. if($class == '*')
  128. {
  129. return $where;
  130. }else{
  131. $where[] = ['a.exam_class','in',explode(',',$class)];
  132. return $where;
  133. }
  134. }
  135. public function save_autograph($url,$doctor)
  136. {
  137. if(!$doctor['id']){
  138. $this->throwError('登陆信息失效,请重新进行登陆','0099');
  139. }
  140. $info = $this->applets->updateAutograph($url,$doctor['id']);
  141. return $info;
  142. }
  143. public function autograph_switch($doctor,$switch)
  144. {
  145. $info = $this->applets->autograph_switch($switch,$doctor['id']);
  146. return $info;
  147. }
  148. public function getAutograph($id)
  149. {
  150. $info = $this->applets->getAutograph($id);
  151. return $info;
  152. }
  153. }