'自费', 'YBCode'=>0, ); try { $data = array('total' => 1, 'rows' =>$YB); Tool_Fnc::apiMsg('预约接口调用成功', '00000000',$data);exit; } catch (SOAPFault $e) { print $e; } exit; } /** * 获取预约是否扣费 * @param $TerminalCode 自助机编号 * @param $AppointType 预约方式 2 自助机预约 * @return * { * "errorcode":"00000000", * "message":"获取业务功能成功", * "data":{ * "IsDeductMoney":"0" //1:扣费,0:不扣费 * } * } */ public function isAppointCostAction() { $p = $_REQUEST; $pTerminalCode = empty($p['TerminalCode'])?Tool_Fnc::apiMsg('终端号不能为空', '00000001'):Tool_Fnc::safe_string($p['TerminalCode']); $pAppointType = empty($p['AppointType'])?Tool_Fnc::apiMsg('预约方式不能为空', '00000001'):Tool_Fnc::safe_string($p['AppointType']); try { $IsDeductMoney = array('IsDeductMoney' => 1, ); //1:扣费,0:不扣费 Tool_Fnc::apiMsg('获取预约是否扣费成功', '00000000', $IsDeductMoney); } catch (SOAPFault $e) { print $e; } exit; } /** * 根据一级科室编号查询二级科室信息 * @param $TerminalCode 自助机编号 * @param $BusType 业务类型 挂号 1,缴费 2,预约 3,建档 33,办卡 34,检查报告 35,检验报告 36,挂号记录 37,缴费记录 38 * @param $PatientID 患者ID * @param $CDID 一级科室编号 多级科室时使用,暂不使用 * @param $IsEmergency 是否急诊 1 是, 其他或空 否 * @param $DeptType 科室类型 特殊类型科室,预留字段暂不使用 * @param $BID 院区id 病区或分院,暂不使用 * @return * { * "errorcode":"00000000", * "message":"获取二级科室成功", * "data":[ * {"DeptID":"2b25226f-7786-488c-adb7-011b82805edb","DeptName":"外手DSA"}, * {"DeptID":"f181d762-4f14-4030-866b-01e0ace888c6","DeptName":"骨伤推拿门诊"}, * {"DeptID":"daf27b8f-fca0-423d-8163-02269fed68db","DeptName":"呼吸鼾症门诊"}, * {"DeptID":"2e7413e6-bfe0-49d7-9800-026a78b01396","DeptName":"过敏门诊"}, * {"DeptID":"4ab485cf-257f-4d76-a7aa-3592a9ccb780","DeptName":"性健康门诊"}, * {"DeptID":"c4448e9c-6f28-4db0-82d1-cc8b05b0b76e","DeptName":"骨伤推拿门诊"}, * {"DeptID":"316f90ec-df39-4f8d-9fa4-02ae4b78ba9a","DeptName":"南楼供应四室"}, * {"DeptID":"29a869ea-4306-48a2-8d77-02c2cd5cc694","DeptName":"保健部门诊"}, * {"DeptID":"5d29b101-d8a1-4d67-8d2d-0304be8c85e0","DeptName":"干部脑系门诊"}, * {"DeptID":"91ffd75a-6e4d-48e8-9d0f-035a7d9675d3","DeptName":"放射诊断质控中心"}, * {"DeptID":"0bd2bcff-924b-4aa8-82ad-2145fd6794ac","DeptName":"皮科门诊"}, * {"DeptID":"d79cfe98-d6d3-4409-9a17-84702ca82471","DeptName":"普通门诊(T)"} * ] * } */ public function getTwoLevelDeptAction(){ $p = $_REQUEST; $pTerminalCode = empty($p['TerminalCode'])?Tool_Fnc::ajaxMsg('自助机编号'):Tool_Fnc::safe_string($p['TerminalCode']); $pBusType = empty($p['BusType'])?Tool_Fnc::ajaxMsg('业务类型不能为空务'):Tool_Fnc::safe_string($p['BusType']); $pPatientID = empty($p['PatientID'])?Tool_Fnc::ajaxMsg('患者id不能为空'):Tool_Fnc::safe_string($p['PatientID']); $pCDID = empty($p['CDID'])?'':Tool_Fnc::safe_string($p['CDID']); $pIsEmergency = empty($p['IsEmergency'])?'0':Tool_Fnc::safe_string($p['IsEmergency']); $pDeptType = empty($p['DeptType'])?'1':Tool_Fnc::safe_string($p['DeptType']); $pBID = empty($p['BID'])?'':Tool_Fnc::safe_string($p['BID']); $tDate = date('Ymd', time()); $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0008'; try { $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); $p = $_REQUEST; $date = date("Y-m-d",strtotime("+1 days")); $registerdate = date("Y-m-d",time()); //$tReq = 'RCK40311'.$PatientID.''.$registerdate.''.$registerdate.''; $tReq = " 1012 "; //Request Params $param = array( 'action' => $action, 'message' => $tReq, ); //Send Req $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); $message =$result->ResultCode==0?'成功':"获取出诊科室失败" ; $errorCode = substr('00000000'.$result->ResultCode,-8); $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($res), 'funcode' => 'MES0008', 'fundesc' => '挂号获取科室列表', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); $index = 0; foreach ($result->Departments->Department as $key => $value) { $rows[$index]['DeptID'] = (string) $value->DepartmentCode; $rows[$index ++]['DeptName'] =(string) $value->DepartmentName; } $data = array('total' => $index, 'rows' =>$rows); Tool_Fnc::apiMsg($message,$errorCode,$data); } catch (SOAPFault $e) { print $e; } exit; } /** * 根据科室编号查询出诊医生信息列表(挂号用) * @param $TerminalCode 自助机编号 * @param $MachineIP 终端ip * @param $PatientID 患者id * @param $DeptID 科室id * @return * { * "errorcode": "00000000", * "message":"获取医生出诊成功", * "data":{ * "total":2, * "rows": [ * { * "DeptID":"FEEEB729-BA1A-4D06-A32C-CCCD6F2B74BA", * "DoctorName":"张三", * "DoctorID":"FEEEB729-BA1A-4D06-A32C-CCCD6F2B74BA", * "DoctorImageURL":"", * "DoctorLevelName":"主任医师", * "DoctorLevel":"01", * "DoctorSpecialty":"医生信息说明", * "APW":"A", * "APWMeaning":"上午", * "TotalFee":"13.00", * "RemainsNum":"20", * "RealID":"20", * "VisitName":"主任号" * }, * { * "DeptID":"FEEEB729-BA1A-4D06-A32C-CCCD6F2B74BA", * "DoctorName":"张三", * "DoctorID":"FEEEB729-BA1A-4D06-A32C-CCCD6F2B74BA", * "DoctorImageURL":"", * "DoctorLevelName":"主任医师", * "DoctorLevel":"01", * "DoctorSpecialty":"医生信息说明", * "APW":"A","APWMeaning":"上午", * "TotalFee":"13.00", * "RemainsNum":"0", * "RealID":"20", * "VisitName":"主任号" * } * ] * } * } */ public function getAppDoctorListByDeptAction(){ $p = $_REQUEST; $pTerminalCode = empty($p['TerminalCode'])?Tool_Fnc::ajaxMsg('自助机编号'):Tool_Fnc::safe_string($p['TerminalCode']); $pMachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $pPatientID = empty($p['PatientID'])?Tool_Fnc::ajaxMsg('患者id不能为空'):Tool_Fnc::safe_string($p['PatientID']); $pDeptID = empty($p['DeptID'])?'':Tool_Fnc::safe_string($p['DeptID']); $tDate = date('Ymd', time()); $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0009'; try { $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); $pCardTypeCode = 1; /** CardTypeCode => * 1 院内诊疗卡 * 2 银医卡 * 3 二代身份证 * 4 居民健康卡 * 5 医保卡 * 6 银行卡 * 7 佛山健康卡 * 8 省医保 * 9 市医保 */ $pCardNo = $pPatientID; $pDeptCode = $pDeptID; $tDate = date('Ymd', time()); $tReq = ' 1013 '.$pDeptCode.' '; //Request Params $param = array( 'action' => $action , 'message' => $tReq, ); //Send Req $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); /*接口日志START*/ $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($res), 'funcode' => 'MES0009', 'fundesc' => '获取科室医生列表', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); /*接口日志END*/ $index = 0; $rows=array(); foreach ($result->Doctors->Doctor as $key => $value) { $pai = 0; for ($i=1; $i < 8; $i++) { $action = 'MES0010'; $tReq_doctor= ' 1004 '.date('Y-m-d',strtotime("+{$i} day")).' '.date('Y-m-d',strtotime("+{$i} day")).' '.$pDeptCode.' '.$value->DoctorCode.' Y N '.$pPatientID.' '; $param = array( 'action' => $action , 'message' => $tReq_doctor, ); //Send Req $doctor_res = $client->HIPMessageServer($param); $doctor_result = simplexml_load_string($doctor_res->HIPMessageServerResult); $action = 'MES0011'; $tReq_fs = ' 10041 '.(string)$doctor_result->Schedules->Schedule->ScheduleItemCode.' '; $param = array( 'action' => $action , 'message' => $tReq_fs, ); $fs_res = $client->HIPMessageServer($param); $fs_result = simplexml_load_string($fs_res->HIPMessageServerResult); if ($doctor_result->ResultCode==0&&$doctor_result->RecordCount>0&&$doctor_result->TimeRangeFlag==0&&$fs_result->ResultCode==0){ $pai++; } } if($pai>0){ $rows[$index]['DeptID'] = (string) $value->DeptId; $rows[$index]['DoctorName'] = (string) $value->DoctorName; $rows[$index]['DoctorID'] = (string) $value->DoctorCode; $rows[$index]['DoctorImageURL'] = ''; $rows[$index]['DoctorLevelName'] = (string) $value->DoctorLevel; $rows[$index]['DoctorLevel'] = (string) $value->DoctotLevelCode; $rows[$index]['DoctorSpecialty'] = (string) $value->Description; $rows[$index]['APW'] = ''; $rows[$index]['APWMeaning'] = ''; $rows[$index]['TotalFee'] = ''; $rows[$index]['RemainsNum'] = ''; //TODO: 中医院不限号,设置999 $rows[$index]['RealID'] = ''; //TODO : 出诊id $rows[$index]['VisitName'] = (string) $value->DoctorLevel; $rows[$index]['TypeCode'] = ''; $rows[$index]['TypeName'] = (string) $value->DoctorLevel; $rows[$index]['DeptCode'] = (string) $value->DeptId; $index ++; } } $message = (string) $result->ResultContent; $errorCode = substr('00000000'.$result->ResultCode,-8); $data = array('total' => $index, 'rows' =>$rows); Tool_Fnc::apiMsg($message,$errorCode,$data); } catch (SOAPFault $e) { print $e; } exit; } public function getAppDoctorListByDeptsAction(){ $p = $_REQUEST; $pTerminalCode = empty($p['TerminalCode'])?Tool_Fnc::ajaxMsg('自助机编号'):Tool_Fnc::safe_string($p['TerminalCode']); $pMachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $pPatientID = empty($p['PatientID'])?Tool_Fnc::ajaxMsg('患者id不能为空'):Tool_Fnc::safe_string($p['PatientID']); $pDeptID = empty($p['DeptID'])?'':Tool_Fnc::safe_string($p['DeptID']); $tDate = date('Ymd', time()); try { $client = new SoapClient($this->SoapUrl); $pCardTypeCode = 1; /** CardTypeCode => * 1 院内诊疗卡 * 2 银医卡 * 3 二代身份证 * 4 居民健康卡 * 5 医保卡 * 6 银行卡 * 7 佛山健康卡 * 8 省医保 * 9 市医保 */ $pCardNo = $pPatientID; $pDeptCode = $pDeptID; $tDate = date('Ymd', time()); $tReq = 'RCK40322'.$pCardNo.''.$pDeptCode.''; $res = $client->RunMethod(array('Param'=>$tReq)); /*接口日志START*/ $tMO = new ApilogModel; $tData = array( 'req' => $tReq, 'rep' => json_encode($res), 'funcode' => 'RCK4032', 'fundesc' => '获取科室医生列表', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); /*接口日志END*/ $result = simplexml_load_string($res->RunMethodResult); print_r($result);die; $index = 0; foreach ($result->data->Rows as $key => $value) { $rows[$index]['DeptID'] = (string) $value->DeptCode; $rows[$index]['DoctorName'] = (string) $value->DoctorName; $rows[$index]['DoctorID'] = (string) $value->DoctorCode; $rows[$index]['DoctorImageURL'] = ''; $rows[$index]['DoctorLevelName'] = (string) $value->TypeName; $rows[$index]['DoctorLevel'] = ''; $rows[$index]['DoctorSpecialty'] = ''; $rows[$index]['APW'] = ''; $rows[$index]['APWMeaning'] = ''; $rows[$index]['TotalFee'] = ''; $rows[$index]['RemainsNum'] = ''; //TODO: 中医院不限号,设置999 $rows[$index]['RealID'] = (string) $value->RegSourceID; //TODO : 出诊id $rows[$index]['VisitName'] = (string) $value->TypeName; $rows[$index]['TypeCode'] = ''; $rows[$index]['TypeName'] = (string) $value->TypeName; $rows[$index]['DeptCode'] = (string) $value->DeptCode; $index ++; } $message = (string) $result->message; $errorCode = substr('00000000'.$result->errorCode,-8); $data = array('total' => $index, 'rows' =>$rows); Tool_Fnc::apiMsg($message,$errorCode,$data); } catch (SOAPFault $e) { print $e; } exit; } /** * 获取医生排班信息 * @param $fkh [description] * @param $fkh [description] * @param $fkh [description] * @param $fkh [description] * @param $fkh [description] * @return $fkh [description] */ public function getDocVisitAction(){ $p = $_REQUEST; $DeptID = empty($p['DeptID'])?Tool_Fnc::ajaxMsg('科室编号不能为空'):Tool_Fnc::safe_string($p['DeptID']); $DoctorID = empty($p['DoctorID'])?Tool_Fnc::ajaxMsg('医生编号不能为空'):Tool_Fnc::safe_string($p['DoctorID']); $VisitType = empty($p['VisitType'])?Tool_Fnc::ajaxMsg('出诊类型不能为空'):Tool_Fnc::safe_string($p['VisitType']); $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0010'; $tDate = date('Ymd', time()); try { $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); $index = 0; $rows=array(); for ($i=1; $i < 8 ; $i++) { $tReq = ' 1004 '.date('Y-m-d',strtotime("+{$i} day")).' '.date('Y-m-d',strtotime("+{$i} day")).' '.$DeptID.' '.$DoctorID.' N '; $param = array( 'action' => $action, 'message' => $tReq, ); $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); if($result->RecordCount>0&&$result->ResultCode==0){ $rows[$index]['DeptID'] = (string) $result->Schedules->Schedule->DepartmentCode; $rows[$index]['DeptName'] = (string) $result->Schedules->Schedule->DepartmentName; $rows[$index]['DoctorID'] = (string) $result->Schedules->Schedule->DoctorCode; $rows[$index]['DoctorName'] = (string) $result->Schedules->Schedule->DoctorName; $rows[$index]['AppTime'] = (string) $result->Schedules->Schedule->SessionName; $rows[$index]['AppDate'] = (string) $result->Schedules->Schedule->ServiceDate; $rows[$index]['APW'] = ''; $rows[$index]['APWMeaning'] = ''; $rows[$index]['TotalFee'] = (string) $result->Schedules->Schedule->Fee; $rows[$index]['RemainsNum'] = ''; //TODO: 中医院不限号,设置999 $rows[$index]['RealID'] = (string) $result->Schedules->Schedule->ScheduleItemCode; //TODO : 出诊id $rows[$index]['VisitName'] = (string) $result->Schedules->Schedule->DoctorSessType; $rows[$index]['TypeCode'] = (string) $result->Schedules->Schedule->DoctorSessTypeCode; $rows[$index]['TypeName'] = (string) $result->Schedules->Schedule->DoctorSessType; $rows[$index]['DeptCode'] = (string) $result->Schedules->Schedule->DepartmentCode; $index++; } } /*接口日志START*/ $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($res), 'funcode' => 'MES0010', 'fundesc' => '获取科室医生排班信息', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); $data = array('total' =>count($rows), 'rows' =>$rows); $errorCode = empty($rows)?'00000001':"00000000"; $message = empty($rows)?'暂无排版信息':"成功"; Tool_Fnc::apiMsg($message,$errorCode,$data); } catch (SOAPFault $e) { Tool_Fnc::apiMsg('成功','00000000',array()); print $e; } } public function getAppPeriodListAction(){ $p = $_REQUEST; $PatientID = empty($p['PatientID'])?Tool_Fnc::ajaxMsg('患者编号不能为空'):Tool_Fnc::safe_string($p['PatientID']); $DeptID = empty($p['DeptID'])?Tool_Fnc::ajaxMsg('科室编号不能为空'):Tool_Fnc::safe_string($p['DeptID']); $DoctorID = empty($p['DoctorID'])?Tool_Fnc::ajaxMsg('医生编号不能为空'):Tool_Fnc::safe_string($p['DoctorID']); $DeptName = empty($p['DeptName'])?Tool_Fnc::ajaxMsg('科室名称不能为空'):Tool_Fnc::safe_string($p['DeptName']); $DoctorName = empty($p['DoctorName'])?Tool_Fnc::ajaxMsg('医生姓名不能为空'):Tool_Fnc::safe_string($p['DoctorName']); $RealID = empty($p['RealID'])?Tool_Fnc::ajaxMsg('出诊编号不能为空'):Tool_Fnc::safe_string($p['RealID']); $VisitType = empty($p['VisitType'])?Tool_Fnc::ajaxMsg('出诊类型不能为空'):Tool_Fnc::safe_string($p['VisitType']); $tDate = date('Ymd', time()); $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0011'; $tReq = ' 10041 '.$RealID.' '; try { $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); $param = array( 'action' => $action, 'message' => $tReq, ); $res = $client->HIPMessageServer($param); /*接口日志START*/ $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($res), 'funcode' => 'RCK4037', 'fundesc' => '获取科室医生排班分时信息', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); /*接口日志END*/ $result = simplexml_load_string($res->HIPMessageServerResult); $message = $result->ResultCode==0?'成功':'失败'; $errorCode = substr('00000000'.$result->ResultCode,-8); if ($result->ResultCode!=0) { Tool_Fnc::ajaxMsg($message,"00000001"); } if (!empty($result->TimeRanges->TimeRange)) { $index = 0; foreach ($result->TimeRanges->TimeRange as $key => $value) { if ( strtotime((string)$value->ServiceDate.' '.(string)$value->EndTime)>time()) { if((string) $value->ScheduleItemCode != $RealID) continue; $endTime = (string) $value->EndTime; if(strtotime((string)$value->ServiceDate.' '.(string)$value->EndTime) <= time()) continue; $rows[$index]['DeptID'] = (string) $DeptID; $rows[$index]['DeptName'] = (string) $DeptName; $rows[$index]['DoctorID'] = (string) $DoctorID; $rows[$index]['DoctorName'] = (string) $DoctorName; $rows[$index]['AppTime'] = (string) $value->SessionName; $rows[$index]['AppDate'] = (string) $value->ServiceDate; $rows[$index]['APW'] = ''; $rows[$index]['APWMeaning'] = ''; $rows[$index]['TotalFee'] = ''; $rows[$index]['RealID'] = (string) $value->ScheduleItemCode; $rows[$index]['VisitName'] = (string) $value->RankName; $rows[$index]['TypeCode'] = (string) $value->SessionCode; $rows[$index]['TypeName'] = (string) $value->SessionName; $rows[$index]['DeptCode'] = (string) $DeptID; $beginTime = (string) $value->StartTime; $Period = "{$beginTime} - {$endTime}"; $rows[$index]['PeriodMeaning'] = $Period; $rows[$index]['RemainsNum'] = (string) $value->AvailableLeftNum; $AppointNo = (string) $value->AvailableNumStr; list($QueueNo, $sec) = explode(',', $AppointNo, 2); $rows[$index]['QueueNo'] = $QueueNo; $index ++; } } }else{ $rows=array(); } $data = array('total' =>count($rows), 'rows' =>$rows); Tool_Fnc::apiMsg($message, $errorCode, $data); } catch (SOAPFault $e) { Tool_Fnc::apiMsg('成功','00000000',array()); // print $e; } } public function getDocVisitssAction(){ $p = $_REQUEST; $DeptID = empty($p['DeptID'])?Tool_Fnc::ajaxMsg('科室编号不能为空'):Tool_Fnc::safe_string($p['DeptID']); $DoctorID = empty($p['DoctorID'])?Tool_Fnc::ajaxMsg('医生编号不能为空'):Tool_Fnc::safe_string($p['DoctorID']); $VisitType = empty($p['VisitType'])?Tool_Fnc::ajaxMsg('出诊类型不能为空'):Tool_Fnc::safe_string($p['VisitType']); $client = new SoapClient($this->SoapUrl); $tDate = date('Ymd', time()); $tReq = ' RCK4033 '.$DeptID.' '.$DoctorID.' '; try { $res = $client->RunMethod(array('Param'=>$tReq)); /*接口日志START*/ $tMO = new ApilogModel; $tData = array( 'req' => $tReq, 'rep' => json_encode($res), 'funcode' => 'RCK4033', 'fundesc' => '获取科室医生排班信息', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); /*接口日志END*/ $result = simplexml_load_string($res->RunMethodResult); print_r($result);die; $message = (string) $result->message; $errorCode = substr('00000000'.$result->errorCode,-8); if ($result->errorCode!=0) { Tool_Fnc::ajaxMsg($message,$errorCode); } if (!empty($result->data->Rows)) { $index = 0; foreach ($result->data->Rows as $key => $value) { if ((string) $value->HaveCount!=0 &&strtotime((string)$value->RegDate.' '.(string)$value->EndTime)>time()) { $rows[$index]['DeptID'] = (string) $value->DeptCode; $rows[$index]['DoctorID'] = (string) $value->DoctorCode; $rows[$index]['AppTime'] = (string) $value->SessionName; $rows[$index]['AppDate'] = (string) $value->RegDate; $rows[$index]['APW'] = ''; $rows[$index]['APWMeaning'] = ''; $rows[$index]['TotalFee'] = (string) $value->TotalRegFee; $rows[$index]['RemainsNum'] = ''; //TODO: 中医院不限号,设置999 $rows[$index]['RealID'] = (string) $value->RegSourceID; //TODO : 出诊id $rows[$index]['VisitName'] = (string) $value->RankName; $rows[$index]['TypeCode'] = (string) $value->RankID; $rows[$index]['TypeName'] = (string) $value->RankName; $rows[$index]['DeptCode'] = (string) $value->DeptCode; $index ++; } } }else{ $rows=array(); } $data = array('total' =>count($rows), 'rows' =>$rows); Tool_Fnc::apiMsg($message,$errorCode,$data); } catch (SOAPFault $e) { Tool_Fnc::apiMsg('成功','00000000',array()); print $e; } } public function confirmAppointOfflineAction(){ $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0021'; try { //TODO: 挂号不收费,返回0 // $data = array('OrderNo' => '0', 'OrderMoney'=>'0'); $p = $_REQUEST; $TerminalCode = empty($p['TerminalCode'])?Tool_Fnc::apiMsg('终端号不能为空', '00000001'):Tool_Fnc::safe_string($p['TerminalCode']); $MachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $SourceCode = empty($p['SourceCode'])?'':Tool_Fnc::safe_string($p['SourceCode']); $Age = empty($p['Age'])?Tool_Fnc::apiMsg('年龄不能为空', '00000001'):Tool_Fnc::safe_string($p['Age']); $CashPay = empty($p['CashPay'])?0:Tool_Fnc::safe_string($p['CashPay']); $RegCost = empty($p['RegCost'])?0:Tool_Fnc::safe_string($p['RegCost']); $Sex = empty($p['Sex'])?Tool_Fnc::apiMsg('性别不能为空', '00000001'):Tool_Fnc::safe_string($p['Sex']); $InsurePay = empty($p['InsurePay'])?0:Tool_Fnc::safe_string($p['InsurePay']); $AccountPay = empty($p['AccountPay'])?0:Tool_Fnc::safe_string($p['AccountPay']); $DeptName = empty($p['DeptName'])?Tool_Fnc::apiMsg('科室名称不能为空', '00000001'):Tool_Fnc::safe_string($p['DeptName']); $VisitTypeName = empty($p['VisitTypeName'])?'':Tool_Fnc::safe_string($p['VisitTypeName']); $DoctorName = empty($p['DoctorName'])?'':Tool_Fnc::safe_string($p['DoctorName']); $CheckCost = empty($p['CheckCost'])?'':Tool_Fnc::safe_string($p['CheckCost']); $BusinesType = empty($p['BusinesType'])?1:Tool_Fnc::safe_string($p['BusinesType']); $PatientName = empty($p['PatientName'])?Tool_Fnc::apiMsg('病人姓名不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientName']); $YBMeaning = empty($p['YBMeaning'])?'':Tool_Fnc::safe_string($p['YBMeaning']); $TotalPay = empty($p['TotalPay'])?0:Tool_Fnc::safe_string($p['TotalPay']); $APWMeaning = empty($p['APWMeaning'])?'昼夜':Tool_Fnc::safe_string($p['APWMeaning']); $Address = empty($p['Address'])?'':Tool_Fnc::safe_string($p['Address']); $PatientID = empty($p['PatientID'])?Tool_Fnc::apiMsg('患者ID不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientID']); $IDCardNo = empty($p['IDCardNo'])?'':Tool_Fnc::safe_string($p['IDCardNo']); $MedCard = empty($p['MedCard'])?'':Tool_Fnc::safe_string($p['MedCard']); $PhoneNo = empty($p['PhoneNo'])?'':Tool_Fnc::safe_string($p['PhoneNo']); $SpecQueueNo = empty($p['SpecQueueNo'])?'':Tool_Fnc::safe_string($p['SpecQueueNo']); $TypeName = empty($p['TypeName'])?'':Tool_Fnc::safe_string($p['TypeName']); $TypeCode = empty($p['TypeCode'])?'':Tool_Fnc::safe_string($p['TypeCode']); $DeptCode = empty($p['DeptID'])?Tool_Fnc::apiMsg('科室编号不能为空', '00000001'):Tool_Fnc::safe_string($p['DeptID']); $DoctorCode = empty($p['DoctorID'])?Tool_Fnc::apiMsg('医生编号不能为空', '00000001'):Tool_Fnc::safe_string($p['DoctorID']); $RealID = empty($p['RealID'])?Tool_Fnc::apiMsg('医生编号不能为空', '00000001'):Tool_Fnc::safe_string($p['RealID']); $DateTime = empty($p['DateTime'])?Tool_Fnc::apiMsg('预约时间不能为空', '00000001'):Tool_Fnc::safe_string($p['DateTime']); if ($Sex=='男') { $pSex = 1; }else if ($Sex=='女') { $pSex = 2; }else{ $pSex = 3; } if(strlen($MedCard)==18){ $cardtype = '02'; }else{ $cardtype = '03'; } //HIS入参XML $tReq = " 1000 {$TerminalCode} {$RealID} {$MedCard} {$cardtype} {$SpecQueueNo}
"; $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); $param = array( 'action' => $action, 'message' => $tReq, ); $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); /*接口日志START*/ $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($res), 'funcode' => 'MES0021', 'fundesc' => '提交预约', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, 'name' => $PatientName, ); $tMO->insert($tData); /*接口日志END*/ if ((string)$result->ResultCode!=0) { Tool_Fnc::apiMsg((string)$result->ResultContent,'00000001'); } $info = explode('^',$result->OrderContent); if ($Sex=="男") { $pSex = 1; }else{ $pSex = 2; } /*预约如本地库*/ $RegData = array( 'me_re_date' => $DateTime, 'me_re_de_id' => $DeptCode, 'me_re_do_id' => $DoctorCode, 'me_re_name' => $PatientName, 'me_re_sex' => $pSex, 'me_re_me_cardno' => $PatientID, 'me_re_created' => time(), 'me_re_updated' => time(), 'me_re_status' => 4, 'me_re_orderno' => explode('||',(string) $result->OrderCode)[2], 'me_re_fee' => (string) $result->RegFee, 'me_re_type' => 2, 'me_re_no'=> explode('||',(string) $result->OrderCode)[2], 'me_re_ydate' => $DateTime, 'me_re_regid' => (string) $result->OrderCode."-2".(string) $result->TransactionId, 'me_re_de_name' => $DeptName, 'me_re_do_name' => $DoctorName, 'me_re_ydate' => $DateTime, 'me_typename' => $TypeName, 'me_re_sessionname' =>$APWMeaning ); $tRO = new RegisterModel; if(!$tRO->insert($RegData)){ Tool_Fnc::apiMsg('系统繁忙请稍后再试!','00000001'); } $data = array( 'PatientID' => $PatientID, 'IDNumber' => $IDCardNo, 'HISPatientID' => $PatientID, 'PatientName' => $PatientName, 'SexMeaning' => $Sex, 'Age' => $Age, 'ChildAge' => '', 'RegCode' => (string) $result->OrderCode, 'VisitDate' => $DateTime, 'APWMeaning' => $APWMeaning, 'DeptName' => $DeptName, 'DoctorName' => $DoctorName, 'VisitTypeName' => $info['18'], 'YBMeaning' => $YBMeaning, 'MTMeaning' => (string) $result->AdmitRange, 'SourceCodeMeaning' => '自助机', // 'QueueNo' => (string) $result->Body->SortNo, 'QueueNo' => explode('||',(string) $result->OrderCode)[2], // 'QueueNoDesc' => (string) $result->Body->WaitTreatNo, 'QueueNoDesc' => '', 'InsurePay' => 0.0000, 'AccountPay' => 0.0000, 'CashPay' => 0.0000, // 'VisitAddress' => (string) $result->Body->TreatLocation, 'VisitAddress' => (string) $result->AdmitAddress, 'RegCost' => 0.0000, 'CheckCost' => 0.0000, 'TotalPay' =>(string) $result->RegFee, 'OpTime' => date('Y-m-d T H => i => s',time()), 'PayTypeMeaning' => '就诊卡', 'PeriodMeaning' => '', 'MedRecordNo' => $PatientID, ); Tool_Fnc::apiMsg('挂号确认','00000000',$data); } catch (SOAPFault $e) { print $e; } exit; } public function PushAppointLineAction(){ $p = $_REQUEST; $PatientID = empty($p['PatientID'])?Tool_Fnc::apiMsg('患者ID不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientID']); $pTerminalCode = empty($p['TerminalCode'])?Tool_Fnc::apiMsg('自助机编号不能为空','00000001'):Tool_Fnc::safe_string($p['TerminalCode']); $pMachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $AppointCode = empty($p['AppointCode'])?Tool_Fnc::apiMsg('排队号不能为空','00000001'):Tool_Fnc::safe_string($p['AppointCode']); $tRO = new RegisterModel; $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0017'; try{ $sql = 'select * from register left join wxorder on register.me_re_regid=wxorder.doccon where content like \'%"AdmNo":"'.$AppointCode.'"%\''; $registerinfo = $tRO->query($sql); if(empty($registerinfo)){ Tool_Fnc::apiMsg("非自助机系统挂号,无法退号","00000001"); } $me_re_id = $registerinfo[0]['me_re_id']; $me_re_regid = $registerinfo[0]['me_re_regid']; $TransactionId = explode('||',$me_re_regid); $tReq = ' 1003 '.$pTerminalCode.' '.$AppointCode.' '.$TransactionId[1].' '; $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); $param = array( 'action' => $action, 'message' => $tReq, ); $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($result), 'funcode' => MES0017, 'fundesc' => '退号接口', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); $message = (string) $result->ResultContent; if((string) $result->ResultCode==0){ $errorCode = '00000000'; $message = "退号成功,您的挂号费用会自动退回原支付途径"; $sql = "update register set me_re_status='5' where me_re_id='{$PatientID}'"; $tRO->query($sql); $time = date('YmdHis',time()); $refundTime = date('Y-m-d H:i:s',time()); if (!empty($registerinfo)) { $refundman = $registerinfo[0]['TerminalCode']; $paytradeno = $registerinfo[0]['transaction_id']; $refundamt = $registerinfo[0]['money']; $hispayno = (string)$result->HisTradeNo; $url = "http://127.0.0.1:4419/apiv1_Ccbzf/CCBRefundTest?money=".$refundamt.'&orderno='.$paytradeno; $ch = curl_init();//初始化curl curl_setopt($ch, CURLOPT_URL,$url);//抓取指定网页 curl_setopt($ch, CURLOPT_HEADER, 0);//设置header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); $data = curl_exec($ch);//运行cur $result = simplexml_load_string($data->head); curl_close($ch); $sql = "insert into pay (hospcode,time,refundamt,refundman,paytradeno,hispayno,refundtime,out_refund_no) values ('{$AppointCode}','{$time}','{$refundamt}','{$refundman}','{$paytradeno}','{$hispayno}','{$refundTime}','{$paytradeno}')"; $tRO->query($sql); } }else{ $errorCode = '00000001'; } Tool_Fnc::apiMsg($message,$errorCode); }catch (SOAPFault $e) { print $e; } exit; } /** * [GetAppointOUTlineAction 获取需要退号的记录] */ public function GetAppointOUTlineAction(){ $p = $_REQUEST; $PatientID = empty($p['PatientID'])?Tool_Fnc::apiMsg('患者ID不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientID']); $pTerminalCode = empty($p['TerminalCode'])?Tool_Fnc::apiMsg('自助机编号不能为空','00000001'):Tool_Fnc::safe_string($p['TerminalCode']); $pMachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0016'; try { $tReq = " 1104 {$pTerminalCode} {$PatientID} ".date('Y-m-d',time())." ".date('Y-m-d',strtotime("+7 day"))." "; $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); //Request Params $param = array( 'action' => $action , 'message' => $tReq, ); //Send Req $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); $message = (string) $result->ResultContent; if((string) $result->ResultCode==0){ $errorCode = '00000000'; }else{ $errorCode = '00000001'; } $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($result), 'funcode' => MES0016, 'fundesc' => '查询挂号记录', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); if ($result->ResultCode!=0) { $data = array('total' => 0, 'rows' =>array()); Tool_Fnc::apiMsg('暂未可取号信息','00000000',$data); } $rows = array(); $index = 0; if (!empty($result->Orders->Order)) { foreach ($result->Orders->Order as $key => $value) { $Period = (string) $value->SessionName; if ($Period=='白天'||$Period=='全天') { $Period='07:00-20:00'; }else{ $Period=explode(" ",(string) $value->AdmitRange)[1]; } if((string) $value->ReturnFlag=="Y"){ $rows[$index]['DeptName'] = (string) $value->Department; $rows[$index]['DoctorName'] = (string) $value->Doctor; $rows[$index]['VisitTypeName'] = (string) $value->DoctorTitle; $rows[$index]['VisitTypeCode'] = (string) $value->Doctor; $rows[$index]['VisitDate'] = (string) $value->AdmitDate; //$rows[$index]['VisitDate'] = (string) $value->AdmitDate; $rows[$index]['APWMeaning'] = (string) $Period; $rows[$index]['APW'] = (string) $Period; $rows[$index]['PeriodMeaning'] = $Period; $rows[$index]['CashPay'] = (string) $value->RegFee; $rows[$index]['RegCost'] = (string) $value->RegFee; $rows[$index]['TotalPay'] = (string) $value->RegFee; $rows[$index]['CheckCost'] = (string) $value->RegFee; $rows[$index]['PeriodMeaning'] = (string) $value->SessionName; $rows[$index]['PeriodCode'] = $Period; $rows[$index]['BusType'] = 3; $rows[$index]['PatientName'] = (string) $value->Name; $rows[$index]['AppointStatus'] = 1; $rows[$index]['PatientID'] = $PatientID; $rows[$index]['AllowTakeTime'] = $Period; $rows[$index]['OrderNo'] = (string) $value->AdmNo; $rows[$index]['RegSourceID'] = (string) $value->AdmNo; $rows[$index]['DoctID'] = (string) $value->DoctorCode; $rows[$index]['DeptCode'] = (string) $value->DepartmentCode; $rows[$index]['DoctorCode'] = (string) $value->DoctorCode; $rows[$index]['RegDate'] = date('Y-m-d', time()); $rows[$index]['RegDate'] = date('Y-m-d', time()); // $rows[$index]['RegDate'] = (string) $value->AdmitDate; //$rows[$index]['OrderDate'] = (string) $value->AdmitDate; $rows[$index]['AppointCode'] = (string) $value->AdmNo; $rows[$index]['IsCost'] = 0; $rows[$index]['YBCode'] = 0; $index ++; } } } $data = array('total' => $index, 'rows' =>$rows); Tool_Fnc::apiMsg($message,$errorCode,$data); } catch (SOAPFault $e) { print $e; } exit; } /** * [GetAppointOfflineAction 获取预约记录] */ public function GetAppointOfflineAction(){ $p = $_REQUEST; $PatientID = empty($p['PatientID'])?Tool_Fnc::apiMsg('患者ID不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientID']); $pTerminalCode = empty($p['TerminalCode'])?Tool_Fnc::apiMsg('自助机编号不能为空','00000001'):Tool_Fnc::safe_string($p['TerminalCode']); $pMachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0016'; try { $tReq = " 1104 {$pTerminalCode} {$PatientID} ".date('Y-m-d',time())." ".date('Y-m-d',strtotime("+7 day"))." "; $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); //Request Params $param = array( 'action' => $action , 'message' => $tReq, ); //Send Req $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); $message = (string) $result->ResultContent; if((string) $result->ResultCode==0){ $errorCode = '00000000'; }else{ $errorCode = '00000001'; } $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($result), 'funcode' => MES0016, 'fundesc' => '查询挂号记录', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); if ($result->ResultCode!=0) { $data = array('total' => 0, 'rows' =>array()); Tool_Fnc::apiMsg('暂未可取号信息','00000000',$data); } $rows = array(); $index = 0; if (!empty($result->Orders->Order)) { foreach ($result->Orders->Order as $key => $value) { $Period = (string) $value->SessionName; if ($Period=='白天'||$Period=='全天') { $Period='07:00-20:00'; }else{ $Period=explode(" ",(string) $value->AdmitRange)[1]; } if((string) $value->ReturnFlag=="Y"){ $rows[$index]['DeptName'] = (string) $value->Department; $rows[$index]['DoctorName'] = (string) $value->Doctor; $rows[$index]['VisitTypeName'] = (string) $value->DoctorTitle; $rows[$index]['VisitTypeCode'] = (string) $value->Doctor; $rows[$index]['VisitDate'] = (string) $value->AdmitDate; //$rows[$index]['VisitDate'] = (string) $value->AdmitDate; $rows[$index]['APWMeaning'] = (string) $Period; $rows[$index]['APW'] = (string) $Period; $rows[$index]['PeriodMeaning'] = $Period; $rows[$index]['CashPay'] = (string) $value->RegFee; $rows[$index]['RegCost'] = (string) $value->RegFee; $rows[$index]['TotalPay'] = (string) $value->RegFee; $rows[$index]['CheckCost'] = (string) $value->RegFee; $rows[$index]['PeriodMeaning'] = (string) $value->SessionName; $rows[$index]['PeriodCode'] = $Period; $rows[$index]['BusType'] = 3; $rows[$index]['PatientName'] = (string) $value->Name; $rows[$index]['AppointStatus'] = 1; $rows[$index]['PatientID'] = $PatientID; $rows[$index]['AllowTakeTime'] = $Period; $rows[$index]['OrderNo'] = (string) $value->AdmNo; $rows[$index]['RegSourceID'] = (string) $value->AdmNo; $rows[$index]['DoctID'] = (string) $value->DoctorCode; $rows[$index]['DeptCode'] = (string) $value->DepartmentCode; $rows[$index]['DoctorCode'] = (string) $value->DoctorCode; $rows[$index]['RegDate'] = date('Y-m-d', time()); $rows[$index]['RegDate'] = date('Y-m-d', time()); // $rows[$index]['RegDate'] = (string) $value->AdmitDate; //$rows[$index]['OrderDate'] = (string) $value->AdmitDate; $rows[$index]['AppointCode'] = (string) $value->AdmNo; $rows[$index]['IsCost'] = 0; $rows[$index]['YBCode'] = 0; $index ++; } } } $data = array('total' => $index, 'rows' =>$rows); Tool_Fnc::apiMsg($message,$errorCode,$data); } catch (SOAPFault $e) { print $e; } exit; } public function OprRgInfoAction(){ $p = $_REQUEST; $PatientID = empty($p['PatientID'])?Tool_Fnc::apiMsg('患者ID不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientID']); $MachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $DoctorName = empty($p['DoctorName'])?Tool_Fnc::apiMsg('医生姓名不能为空','00000001'):Tool_Fnc::safe_string($p['DoctorName']); $APWMeaning = empty($p['APWMeaning'])?Tool_Fnc::apiMsg('预约时段不能为空','00000001'):Tool_Fnc::safe_string($p['APWMeaning']); $VisitTypeName = empty($p['VisitTypeName'])?Tool_Fnc::apiMsg('预约时段不能为空','00000001'):Tool_Fnc::safe_string($p['VisitTypeName']); $PatientName = empty($p['PatientName'])?Tool_Fnc::apiMsg('患者姓名不能为空','00000001'):Tool_Fnc::safe_string($p['PatientName']); $DeptName = empty($p['DeptName'])?Tool_Fnc::apiMsg('科室名称不能为空','00000001'):Tool_Fnc::safe_string($p['DeptName']); $RegSourceID = empty($p['AppointCode'])?Tool_Fnc::apiMsg('预约编号不能为空','00000001'):Tool_Fnc::safe_string($p['AppointCode']); $OrderNo = empty($p['OrderNo'])?Tool_Fnc::apiMsg('预约序号不能为空','00000001'):Tool_Fnc::safe_string($p['OrderNo']); $RegDate = empty($p['RegDate'])?'':Tool_Fnc::safe_string($p['RegDate']); $OrderDate = empty($p['OrderDate'])?'':Tool_Fnc::safe_string($p['OrderDate']); $REMD = new RegisterModel; // $data = $REMD->filed('me_re_canclereason')->where('me_re_me_cardno=\''.$PatientID.'\' and me_re_no=\''.$RegSourceID.'\'')->fRow(); $sql = 'select me_re_canclereason from register where me_re_me_cardno=\''.$PatientID.'\' and me_re_no=\''.$RegSourceID.'\''; $data = $REMD->query($sql); $array=array( 'PatientID' => $PatientID, 'HISPatientID' => $PatientID, 'PatientName' => $PatientName, 'VisitDate' => date('Y-m-d',time()), 'APWMeaning' => $APWMeaning, 'DeptName' => $DeptName, 'DoctorName' => $DoctorName, 'VisitTypeName' => $VisitTypeName, 'SourceCodeMeaning' => '自助机', 'OpTime' => date('Y-m-d',time()), 'PayTypeMeaning' => '就诊卡', 'PeriodMeaning' => '', 'MedRecordNo' => $PatientID, 'QueueNo'=>$OrderNo, 'WaitTreatNo'=>'', 'VisitAddress' => $data[0]['me_re_canclereason'], ); Tool_Fnc::apiMsg('成功','00000000',$array); } public function RegfeePredivisionOnlineAction(){ // string str = "{\"errorcode\":\"00000000\",\"message\":\"挂号分割成功\",\"data\":{\"InsurePay\":\"10\",\"AccountPay\":\"3.0\",\"CashPay\":\"0.0\",\"DivisionID\":\"1000093304\",\"RegID\":\"110\",\"RegCost\":\"10.00\",\"CheckCost\":\"3.00\",\"TotalPay\":\"1.00\"}}"; $p = $_REQUEST; $TerminalCode = empty($p['TerminalCode'])?'':$p['TerminalCode']; $MachineIP = empty($p['MachineIP'])?'':$p['MachineIP']; $IsEmergency = empty($p['IsEmergency'])?'':$p['IsEmergency']; $SourceCode = empty($p['SourceCode'])?'':$p['SourceCode']; $AppointType = empty($p['AppointType'])?'':$p['AppointType']; $PatientID = empty($p['PatientID'])?'':$p['PatientID']; $VisitDate = empty($p['VisitDate'])?'':$p['VisitDate']; $APW = empty($p['APW'])?'':$p['APW']; $PeriodCode = empty($p['PeriodCode'])?'':$p['PeriodCode']; $DeptCode = empty($p['DeptCode'])?'':$p['DeptCode']; $DoctorCode = empty($p['DoctorCode'])?'':$p['DoctorCode']; $VisitTypeCode = empty($p['VisitTypeCode'])?'':$p['VisitTypeCode']; $InsureTypeCode = empty($p['InsureTypeCode'])?'':$p['InsureTypeCode']; $MtTypeCode = empty($p['MtTypeCode'])?'':$p['MtTypeCode']; $AppointCode = empty($p['AppointCode'])?'':$p['AppointCode']; $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0022'; try { $tReq = " 1005 {$TerminalCode} {$PatientID} normal "; $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); //Request Params $param = array( 'action' => $action , 'message' => $tReq, ); //Send Req $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); $message = (string) $result->ResultContent; if((string) $result->ResultCode==0){ $errorCode = '00000000'; }else{ $errorCode = '00000001'; } $tMO = new ApilogModel; $tData = array( 'req' => json_encode($param), 'rep' => json_encode($result), 'funcode' => MES0022, 'fundesc' => '查询预约记录', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, ); $tMO->insert($tData); $rows = array(); if (!empty($result->Orders->Order)) { foreach ($result->Orders->Order as $key => $value) { if ((string) $value->OrderCode."-2"==$AppointCode) { $Period = (string) $value->SessionName; if ($Period=='白天'||$Period=='全天') { $Period='08:00-5:30'; }else if($Period=='上午'){ $Period='08:00-11:30'; }else if($Period=='下午'){ $Period='12:00-5:30'; } $rows['DeptName'] = (string) $value->Department; $rows['DoctorName'] = (string) $value->Doctor; $rows['VisitTypeName'] = (string) $value->DoctorTitle; $rows['VisitTypeCode'] = (string) $value->Doctor; $rows['VisitDate'] = (string) $value->AdmitDate; $rows['APWMeaning'] = (string) $Period; $rows['APW'] = (string) $Period."1"; $rows['PeriodMeaning'] = $Period."2"; $rows['CashPay'] = (string) $value->RegFee; $rows['RegCost'] = (string) $value->RegFee; $rows['TotalPay'] = (string) $value->RegFee; $rows['CheckCost'] = (string) $value->RegFee; $rows['InsurePay'] = 0; $rows['AccountPay'] = 0; $rows['PeriodMeaning'] = $Period."3"; $rows['PeriodCode'] = $Period."4"; $rows['BusType'] = 3; $rows['PatientName'] = (string) $value->Name; $rows['AppointStatus'] = 1; $rows['PatientID'] = $PatientID; $rows['AllowTakeTime'] = $Period; $rows['OrderNo'] = explode('||',(string) $value->OrderCode)[2]; $rows['RegSourceID'] = (string) $value->OrderCode."-2"; $rows['DoctID'] = ''; $rows['DivisionID'] = ''; $rows['DeptCode'] = ''; $rows['DoctorCode'] = ''; $rows['RegDate'] = (string) $value->AdmitDate; $rows['OrderDate'] = (string) $value->AdmitDate; $rows['AppointCode'] = (string) $value->OrderCode."-2"; $rows['IsCost'] = 0; $rows['YBCode'] = 0; $rows['RegID'] = (string) $value->OrderCode."-2"; } } } Tool_Fnc::apiMsg('挂号分割成功','00000000',$rows); }catch (SOAPFault $e) { print $e; } exit; } public function getTonicvoucherAction(){ $p = $_REQUEST; $TerminalCode = empty($p['TerminalCode'])?Tool_Fnc::apiMsg('自助机编号不能为空', '00000001'):Tool_Fnc::safe_string($p['TerminalCode']); $PatientID = empty($p['PatientID'])?Tool_Fnc::apiMsg('患者id不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientID']); $OrderNo = empty($p['OrderNo'])?'MZJF2019060410157575':Tool_Fnc::safe_string($p['OrderNo']); $MachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $WMOD = new WxorderModel; $datetime = date('Y-m-d',time()); $sql = "select * from wxorder where checkin_no='{$PatientID}' and time>'{$datetime}' and order_status=3 and checkin_no_type=1 order by id desc limit 0,1"; $ZZJdata = $WMOD->query($sql); $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0030'; $client = new SoapClient('https://192.168.90.116:1443/csp/hsb/DHC.Published.ZZJService.BS.ZZJService.CLS?WSDL=1', array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); $ADMarray = explode("||",$ZZJdata[0]['hiscode']); foreach($ADMarray as $key => $val){ $adm = explode('-',$val); $tReq=" 4907 01 0 {$PatientID} {$TerminalCode} {$TerminalCode} ".date("Y-m-d",strtotime("-3 days"))." ".date("Y-m-d",time())." {$adm[0]} "; $param = array( 'action' => $action, 'message' => $tReq, ); //Send Req $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); $message =$result->ResultCode==0?'成功':"暂无缴费明细" ; $errorCode = substr('00000000'.$result->ResultCode,-8); } $inpatientInfo = array( 'FId' => $ZZJdata[0]['doccon'], //处方号 'RecipeId' => '', //发票号 'RecipeName' => '', //财务科目 'RecipeTime' => $ZZJdata[0]['time'], //处方时间 'TypeName' => "自费", //费用类型 自费 'DeptName' =>"", //科室名称 'DoctorName' => '', //医生姓名 'SumPay' => $ZZJdata[0]['money'], //合计费用 "158.56", 'MedicarePay' => '', //医保支付 "0.00", 'SelfPay' => $ZZJdata[0]['money'], //个人支付 "158.56", 'RecipeNo' => $ZZJdata[0]['doccon'], //发票号 'TotalMoney' => $ZZJdata[0]['money'], //合计费用 "158.56", ); $index = 0; if (isset($result->RecordList->Record)) { foreach ($result->RecordList->Record as $key => $value) { $inpatientInfo['DeptName'] .=(string)$value->AdmDept."、"; $inpatientInfo['DoctorName'] .=(string)$value->AdmDoctor."、"; foreach($value->ItemList->Item as $k => $v){ $rows[$index++] = array( 'Index' => (string) $v->ItemCode, //明细项id "250101103", 'Category' => (string) $v->ItemCategory, //明细项id "250101103", 'Money' =>(string) $v->ItemSum, //备注 "020301" 'Quantity' => (string) $v->ItemQty, //数量 "1", 'UnitPrice' => sprintf("%.2f",(string) $v->ItemPrice), //单价 "17",q 'Fee' => (float) $v->ItemSum, //合计 "17", ); } } } $message = '成功'; if (empty($rows)) { $rows = []; $message = '收费项为空'; } $data = array( 'chargeInfo' => $inpatientInfo, 'total' => $index, 'rows' => $rows ); Tool_Fnc::apiMsg($message,'00000000',$data); } public function AppointLockAction(){ $opts = [ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ], 'http'=>[ 'user_agent' => 'PHPSoapClient' ] ]; $action = 'MES0012'; try { $client = new SoapClient($this->SoapUrl, array( "trace" => 1, "exception" => 1, "cache_wsdl" => WSDL_CACHE_NONE, 'stream_context' => stream_context_create($opts) ) ); //TODO: 挂号不收费,返回0 // $data = array('OrderNo' => '0', 'OrderMoney'=>'0'); $p = $_REQUEST; $TerminalCode = empty($p['TerminalCode'])?Tool_Fnc::apiMsg('终端号不能为空', '00000001'):Tool_Fnc::safe_string($p['TerminalCode']); $PatientID = empty($p['PatientID'])?Tool_Fnc::apiMsg('患者ID不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientID']); $RealID = empty($p['RealID'])?Tool_Fnc::apiMsg('医生编号不能为空', '00000001'):Tool_Fnc::safe_string($p['RealID']); $MachineIP = empty($p['MachineIP'])?'':Tool_Fnc::safe_string($p['MachineIP']); $Sex = empty($p['Sex'])?0:Tool_Fnc::safe_string($p['Sex']); $DeptName = empty($p['DeptName'])?Tool_Fnc::apiMsg('科室名称不能为空', '00000001'):Tool_Fnc::safe_string($p['DeptName']); $DoctorName = empty($p['DoctorName'])?'':Tool_Fnc::safe_string($p['DoctorName']); $PatientName = empty($p['PatientName'])?Tool_Fnc::apiMsg('病人姓名不能为空', '00000001'):Tool_Fnc::safe_string($p['PatientName']); $YBMeaning = empty($p['YBMeaning'])?'':Tool_Fnc::safe_string($p['YBMeaning']); $IDCardNo = empty($p['IDCardNo'])?'':Tool_Fnc::safe_string($p['IDCardNo']); $TypeName = empty($p['TypeName'])?'':Tool_Fnc::safe_string($p['TypeName']); $TypeCode = empty($p['TypeCode'])?'':Tool_Fnc::safe_string($p['TypeCode']); $SpecQueueNo = empty($p['SpecQueueNo'])?'':Tool_Fnc::safe_string($p['SpecQueueNo']); $DeptCode = empty($p['DeptID'])?Tool_Fnc::apiMsg('科室编号不能为空', '00000001'):Tool_Fnc::safe_string($p['DeptID']); $DoctorCode = empty($p['DoctorID'])?Tool_Fnc::apiMsg('医生编号不能为空', '00000001'):Tool_Fnc::safe_string($p['DoctorID']); $DateTime = date('Y-m-d',time()); $TradeTime = date('H:i:s',time()); //HIS入参XML $tReq = "10015{$DateTime}{$TradeTime}{$TerminalCode}{$RealID}{$PatientID}1"; //Request Params $param = array( 'action' => $action, 'message' => $tReq, ); $res = $client->HIPMessageServer($param); $result = simplexml_load_string($res->HIPMessageServerResult); //HIS入参XML if($Sex=='男'){ $me_re_sex=1; } if($Sex=='女'){ $me_re_sex=2; } $Age = Tool_Fnc::getAge($IDCardNo); /*接口日志START*/ $tMO = new ApilogModel; $tData = array( 'req' =>json_encode($param), 'rep' => json_encode($res), 'funcode' => 'MES0012', 'fundesc' => '提交挂号', 'created' => date('Y-m-d H:i:s', time()), 'cardno' => $PatientID, 'name' => $PatientName, ); $tMO->insert($tData); /*接口日志END*/ if (!$result) { Tool_Fnc::apiMsg('挂号失败','00000001'); } // print_r($result);die; if ((string) $result->ResultCode!=0) { Tool_Fnc::apiMsg("锁号失败",'00000001'); } $tMO->insert($tData); /*( [TradeCode] => 10015 [TransactionId] => DHC222627221114182400 [ResultCode] => 0 [ResultContent] => 锁号成功 [LockQueueNo] => 2 [ScheduleItemCode] => 173||202 [AdmDoc] => 副主任医师 [AdmDate] => 2022-11-18 [AdmTime] => 上午 [RegFee] => 13 )预约如本地库*/ $RegData = array( 'me_re_date' => $DateTime, 'me_re_de_id' => $DeptCode, 'me_re_do_id' => $DoctorCode, 'me_re_name' => $PatientName, 'me_re_sex' => $me_re_sex, 'me_re_me_cardno' => $PatientID, 'me_re_critcode' => $IDCardNo, 'me_re_created' => time(), 'me_re_updated' => time(), 'me_re_status' => 4, 'me_re_orderno' => (string) $result->LockQueueNo, 'me_re_fee' => (string) $result->RegFee, 'me_re_type' => 2, 'me_re_no'=> (string) $result->LockQueueNo, 'me_re_ydate' => $DateTime, 'me_re_regid' => $RealID.'-'.(string) $result->TransactionId, 'me_re_de_name' => $DeptName, 'me_re_do_name' => $DoctorName, 'me_re_ydate' => $DateTime, 'me_typename' => $TypeName, 'me_re_sessionname' =>(string) $result->AdmTime ); $tRO = new RegisterModel; if(!$tRO->insert($RegData)){ Tool_Fnc::apiMsg('系统繁忙请稍后再试!','00000001'); } $data = array( 'PatientID' => $PatientID, 'IDNumber' => $IDCardNo, 'HISPatientID' => $PatientID, 'PatientName' => $PatientName, 'SexMeaning' => $Sex, 'Sex' => $Sex, 'Age' => $Age, 'ChildAge' => '', 'RegCode' => (string) $result->LockQueueNo, 'VisitDate' => (string) $result->AdmDate, 'APWMeaning' => (string) $result->AdmTime, 'DeptName' => $DeptName, 'DoctorName' => $DoctorName, 'VisitTypeName' =>(string) $result->AdmDoc, 'YBMeaning' => $YBMeaning, 'MTMeaning' => '', 'SourceCodeMeaning' => '自助机', 'QueueNo' => (string) $result->LockQueueNo, 'QueueNoDesc' => '', 'InsurePay' => 0.0000, 'AccountPay' => 0.0000, 'CashPay' => 0.0000, // 'VisitAddress' => (string) $result->Body->TreatLocation, 'VisitAddress' => '', 'RegCost' => (string) $result->RegFee, 'CheckCost' => 0.0000, 'TotalPay' => (string) $result->RegFee, 'OpTime' => (string) $result->AdmDate, 'PayTypeMeaning' => '就诊卡', 'PeriodMeaning' => '', 'MedRecordNo' => $PatientID, 'RegID'=>(string) $RealID.'-'.(string) $result->TransactionId, 'BusinesType'=>1 ); Tool_Fnc::apiMsg('预约确认','00000000',$data); } catch (SOAPFault $e) { print $e; } } } ?>