|
|
|
@ -108,6 +108,89 @@ public static function Post($url_path, $data)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 获取申请单详情(带缓存)
|
|
|
|
|
|
|
|
* @param string $visitSqNo 就诊流水号
|
|
|
|
|
|
|
|
* @param string $requestNo 申请单号
|
|
|
|
|
|
|
|
* @param string|int $visitTypeCode 就诊类型代码
|
|
|
|
|
|
|
|
* @param string $type 入参类型:本地|HIS
|
|
|
|
|
|
|
|
* @return array {"code":200,"msg":"操作成功!","data":[...]}
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static function GetApplyDetail($visitSqNo, $requestNo, $visitTypeCode, $type = 'HIS')
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// 1. 参数归一:本地 patient_type -> HIS visitTypeCode
|
|
|
|
|
|
|
|
if ($type === '本地') {
|
|
|
|
|
|
|
|
$patientHisTypeMap = [0 => '03', 1 => '01', 2 => '02', 3 => '04'];
|
|
|
|
|
|
|
|
$visitTypeCode = $patientHisTypeMap[$visitTypeCode] ?? '09';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ROC 查询用 visitTypeCode 归一:门诊/急诊/体检 -> 01,住院 -> 03
|
|
|
|
|
|
|
|
$rocVisitTypeCode = in_array($visitTypeCode, ['01', '02', '04']) ? '01' : '03';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 2. 查缓存表
|
|
|
|
|
|
|
|
$cached = DB::table('s_apply_detail_cache')
|
|
|
|
|
|
|
|
->where('visit_sq_no', $visitSqNo)
|
|
|
|
|
|
|
|
->where('request_no', $requestNo)
|
|
|
|
|
|
|
|
->where('visit_type_code', $rocVisitTypeCode)
|
|
|
|
|
|
|
|
->first();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($cached) {
|
|
|
|
|
|
|
|
return [
|
|
|
|
|
|
|
|
'code' => 200,
|
|
|
|
|
|
|
|
'msg' => '操作成功!',
|
|
|
|
|
|
|
|
'data' => json_decode($cached->raw_data, true),
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 请求 ROC(3 轮,每轮 try-catch)
|
|
|
|
|
|
|
|
$queries = [
|
|
|
|
|
|
|
|
['feeFlag', '0'],
|
|
|
|
|
|
|
|
['feeFlag', '1'],
|
|
|
|
|
|
|
|
['orderStatus', '1'],
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($queries as [$paramKey, $paramValue]) {
|
|
|
|
|
|
|
|
$queryData = [
|
|
|
|
|
|
|
|
'visitSqNo' => $visitSqNo,
|
|
|
|
|
|
|
|
'requestNo' => $requestNo,
|
|
|
|
|
|
|
|
'visitTypeCode' => $rocVisitTypeCode,
|
|
|
|
|
|
|
|
$paramKey => $paramValue,
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
$res = self::Get('查询检查申请单', $queryData);
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
|
|
|
// 接口异常,继续下一轮
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($res['code'] == 200 && !empty($res['data'])) {
|
|
|
|
|
|
|
|
// 4. 写缓存
|
|
|
|
|
|
|
|
$queryFeeFlag = $paramKey === 'feeFlag' ? $paramValue : 'orderStatus=1';
|
|
|
|
|
|
|
|
DB::table('s_apply_detail_cache')->insert([
|
|
|
|
|
|
|
|
'visit_sq_no' => $visitSqNo,
|
|
|
|
|
|
|
|
'request_no' => $requestNo,
|
|
|
|
|
|
|
|
'visit_type_code' => $rocVisitTypeCode,
|
|
|
|
|
|
|
|
'raw_data' => json_encode($res['data'], JSON_UNESCAPED_UNICODE),
|
|
|
|
|
|
|
|
'query_fee_flag' => $queryFeeFlag,
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return [
|
|
|
|
|
|
|
|
'code' => 200,
|
|
|
|
|
|
|
|
'msg' => '操作成功!',
|
|
|
|
|
|
|
|
'data' => $res['data'],
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 5. 三轮均无数据
|
|
|
|
|
|
|
|
return [
|
|
|
|
|
|
|
|
'code' => 200,
|
|
|
|
|
|
|
|
'msg' => '操作成功!',
|
|
|
|
|
|
|
|
'data' => [],
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static function RequestLog($url, $post_data, $mark, $code = 0)
|
|
|
|
public static function RequestLog($url, $post_data, $mark, $code = 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
self::CheckTableName();
|
|
|
|
self::CheckTableName();
|
|
|
|
|