'自费',
'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;
}
}
}
?>