123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- <?php
- namespace app\api\servies\applets;
- use app\api\dao\applets\AppletsDao;
- use app\api\dao\exam\ExamDao;
- use app\api\servies\application\ApplicationService;
- use app\api\servies\ZskkDefaultService;
- use app\api\utils\UUIDUtils;
- use think\Exception;
- use think\facade\Config;
- class AppletsService extends ZskkDefaultService
- {
- protected $logName = "AppletsService";
- private $applets = null;
- private $application = null;
- private $examDao = null;
- public function __construct(AppletsDao $appletsDao,ApplicationService $application) {
- parent::__construct();
- $this->applets = $appletsDao;
- $this->application = $application;
- }
- public function application_start($param, $doctor)
- {
- $info = array();
- $id = UUIDUtils::uuid();
- $info['id'] = $id;
- $odd_number = $this->application->getNum();
- $info['name'] = $param['name'];
- $sex = $this->getSex($param['sex']);
- $info['sex'] = $sex;
- $info['age'] = $param['age'];
- $info['phone'] = $param['phone'];
- $info['exam_datetime'] = $param['exam_datetime'];
- $info['exam_class'] = $param['exam_class'];
- $info['exam_project'] = $param['exam_project'];
- $info['patient_num'] = $param['patient_num'];
- $info['accession_num'] = $param['accession_num'];
- $info['exam_id'] = $param['exam_id'];
- $info['study_id'] = $param['study_id'];
- $info['report_status'] = 3;
- $info['illness_desc'] = isset($param['illness_desc']) ? $param['illness_desc'] : '';
- $info['phys_sign'] = isset($param['phys_sign']) ? $param['phys_sign'] : '';
- $info['clin_symp'] = isset($param['clin_symp']) ? $param['clin_symp'] : '';
- $info['anamnesis'] = isset($param['anamnesis']) ? $param['anamnesis'] : '';
- $info['family_ill'] = isset($param['family_ill']) ? $param['family_ill'] : '';
- $info['remark'] = isset($param['remark']) ? $param['remark'] : '';
- $info['clin_diag'] = isset($param['clin_diag']) ? $param['clin_diag'] : '';
- if(empty($param['institution_id']))
- {
- $this->throwError('请选择申请的医院','0011');
- }
- $info['remote_institution_id'] = $param['institution_id'];
- $remote_doctor_id = $param['doctor_id'] ?? null;
- $info['remote_institution_name'] = $this->applets->getInstitutionName($param['institution_id']);
- $info['remote_doctor_id'] = $remote_doctor_id;
- $info['remote_doctor_name'] = $remote_doctor_id ? $this->applets->getDoctorName($remote_doctor_id) : null;
- $institution = $this->applets->getInstitutionName($doctor['institution_id']);
- $info['local_institution_id'] = $doctor['institution_id'];
- $info['local_institution_name'] = $institution;
- $info['req_doctor_id'] = $doctor['id'];
- $info['req_doctor_name'] = $doctor['realname'];
- $info['req_date_time'] = date('Y-m-d H:i:s', time());
- $info['odd_number'] = $odd_number;
- $return = $this->applets->insertAplication($info);
- $this->application->saveProgressLog($doctor, 1, $id);
- $doctorName = $doctor['realname'];
- $data = [
- 'id' => UUIDUtils::uuid(),
- 'title' => '收到一条远程诊断申请',
- 'content' => $institution . $doctorName . "向您发起一条远程诊断申请",
- 'doctor_id' => $remote_doctor_id,
- 'institution_id' => $param['institution_id'],
- 'count' => '1',
- 'type' => '1',
- 'application_id' => $id,
- 'ctime' => date('Y-m-d H:i:s', time()),
- ];
- $data['exam_id'] = $param['exam_id'];
- $this->applets->insertMessage($data);
- $info = $this->applets->getReport($id);
- if (empty($info)) {
- $report_data = [
- 'id' => UUIDUtils::uuid(),
- 'exam_id' => $param['exam_id'],
- 'createdAt' => date('Y-m-d H:i:s', time()),
- 'type' => 2,
- 'remote_application_id' => $id,
- ];
- $this->applets->saveReport($report_data);
- }
- $bbs = [
- 'id' => UUIDUtils::uuid(),
- 'initiator' => $doctor['realname'],
- 'remote_application_id' => $id,
- 'content' => $doctor['realname'] . '医生发起了申请',
- 'createdAt' => date('Y-m-d H:i:s', time()),
- 'type' => 1
- ];
- $this->applets->saveBbs($bbs);
- $type = $this->applets->getContactType($doctor['institution_id'], $param['institution_id']);
- $doctor_money = $this->applets->getDoctorMoney($doctor['institution_id'], $param['institution_id'], $remote_doctor_id, $param['exam_class']);
- if ($type === Config::get('PAY_TYPE')['HOSPITAL']) {
- $res = $this->application->makeHospitalOrder($doctor['institution_id'], $param['institution_id'], $doctor, $remote_doctor_id, $param['exam_class'],$id, $doctor_money, $is_urgent = 0);
- }
- if ($type === Config::get('PAY_TYPE')['PATIENT']) {
- $this->application->makePatientsOrder($doctor['institution_id'], $param['institution_id'], $doctor, $remote_doctor_id, $param['exam_class'], $id, $doctor_money, $is_urgent = 0);
- }
- return true;
- }
- public function getMyApplication($params,$doctor)
- {
- $fuzzyField = ['name','patient_num','accession_num'];
- $fuzzyWhere = $this->getListFuzzyWhere($params,$fuzzyField);
- $moreField = ['report_status'];
- $moreWhere = $this->getListSpecificWhere($params, $moreField);
- $class_where = $this->getRemoteExamClass($doctor);
- $doctor_where = ['req_doctor_id'=>$doctor['id']];
- $data = $this->applets->getRemoteExamList($doctor['institution_id'], $fuzzyWhere, $moreWhere,$class_where, $params,$doctor_where);
- return $data;
- }
- public function getRemoteExamClass($doctor)
- {
- $class = $doctor['exam_class'] ?? false;
- if(!$class){
- $this->throwError('登陆信息失效,请重新进行登陆','0099');
- }
- $where = [];
- if($class == '*')
- {
- return $where;
- }else{
- $where[] = ['a.exam_class','in',explode(',',$class)];
- return $where;
- }
- }
- public function save_autograph($url,$doctor)
- {
- if(!$doctor['id']){
- $this->throwError('登陆信息失效,请重新进行登陆','0099');
- }
- $info = $this->applets->updateAutograph($url,$doctor['id']);
- return $info;
- }
- public function autograph_switch($doctor,$switch)
- {
- $info = $this->applets->autograph_switch($switch,$doctor['id']);
- return $info;
- }
- public function getAutograph($id)
- {
- $info = $this->applets->getAutograph($id);
- return $info;
- }
- }
|