ROC缓存

main
鹿和sa0ChunLuyu 4 days ago
parent 4e41eed8f3
commit ede9a73a7b

@ -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. 请求 ROC3 轮,每轮 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)
{
self::CheckTableName();

@ -555,4 +555,34 @@ function build_yiji_url($regnum, $entrustid, $episodeid)
// 返回完整 URL
return "http://192.168.80.76/yiji?$query";
}
/**
* 测试获取申请单详情
* 入参: visitSqNo, requestNo, visitTypeCodeHIS 格式)
*/
public function TestGetApplyDetail()
{
try {
$visitSqNo = request('visitSqNo');
$requestNo = request('requestNo');
$visitTypeCode = request('visitTypeCode');
if (empty($visitSqNo) || empty($requestNo) || empty($visitTypeCode)) {
return response()->json([
'code' => 200,
'msg' => '参数 visitSqNo、requestNo、visitTypeCode 不能为空',
'data' => [],
])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
}
$res = HisController::GetApplyDetail($visitSqNo, $requestNo, $visitTypeCode, 'HIS');
return response()->json($res)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
} catch (\Exception $e) {
return response()->json([
'code' => 200,
'msg' => '接口异常:' . $e->getMessage(),
'data' => [],
])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
}
}
}

@ -230,6 +230,7 @@
Route::post('/CheckAppointment','App\Http\Controllers\API\Third\YiJiController@CheckAppointment' );
Route::post('/CheckAppointmentTest','App\\Http\\Controllers\\API\\Third\\YiJiController@CheckAppointmentTest' );
Route::post('/TestHisCallbackParams','App\\Http\\Controllers\\API\\Third\\YiJiController@TestHisCallbackParams' );
Route::post('/TestGetApplyDetail','App\\Http\\Controllers\\API\\Third\\YiJiController@TestGetApplyDetail' );
Route::post('/PacsSignIn','App\Http\Controllers\API\Third\PacsController@SignIn' );//路径起名字有问题,实际是给报到机的
Route::post('/PacsCancelSignIn','App\Http\Controllers\API\Third\PacsController@CancelSignIn' );//路径起名字有问题,实际是给报到机的
Route::post('/GetEntrustInfo','App\Http\Controllers\API\Third\PacsController@GetEntrustInfo' );

Loading…
Cancel
Save