You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
4.4 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers\API\His;
use App\Http\Controllers\Controller;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Http\Client\RequestException;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Schema;
class HisController extends Controller
{
public static $request;
public static $baseUrl = 'http://192.168.80.39:7801';
public static function Api($url_code)
{
$api['查询检查申请单'] = "/roc/order-service/api/v1/apply/pacs/apply/create/query";
$api['查询科室列表'] = "/roc/curr-web/api/v1/common/dept/query";
$api['查询人员列表'] = "/roc/curr-web/api/v1/common/employee/query";
$api['查询非药品列表'] = "/roc/order-service/api/v1/order/order-term/undrug/query";
$api['查询所有检查项目分类'] = "/roc/order-service/api/v1/order/order-term/dawn-code/query?consTypeId=EXAMSHEETTYPE";
$api['查询医生有权限的科室'] = "/roc/curr-web/api/v1/common/dept/doctdept/query";
return $api["{$url_code}"] ?? $url_code;
}
public static function Get($url_code, $data)
{
$url_address = self::Api($url_code);
self::RequestLog(self::$baseUrl . $url_address, $data, $url_code, 'Roc接口');
$response = Http::withHeaders([
'Domain' => 'QhdLK_YYGL',
'Key' => 'f7ed8036-b7a1-41ec-80f6-0e180efba1f4'
])->get(self::$baseUrl . $url_address, $data);
// dd(self::BuildAuthorization($nonce, $timestamp, $base64Signature));
if ($response->successful()) {
// 处理成功的响应
$res_string = json_encode($response->json(), JSON_UNESCAPED_UNICODE);
// dd($res_string);
$str_len = mb_strlen($res_string, 'utf-8');
$str_size = $str_len / 1024;
$save_res = $res_string;
if ($str_size > 10) $save_res = '{"data":"Row size too large"}';
self::$request->response_data = $save_res;
self::$request->save();
$res = json_decode($res_string, true);
if ($res['code']<>200) {
throw new HttpResponseException(\Yz::JsonError("Roc接口提示" . $res['msg']));
}
return [
'code' => $res['code'],
'message' => $res['msg'],
'data' => $res['data']
];
} else {
// 处理失败的响应
self::$request->response_data = "请求Roc接口失败";
self::$request->save();
throw new HttpResponseException(\Yz::JsonError("请求Roc接口失败"));
}
}
public static function RequestLog($url, $post_data, $mark, $code = 0)
{
self::CheckTableName();
foreach ($post_data as $key => $post_datum) {
$str_len = mb_strlen(json_encode($post_datum, JSON_UNESCAPED_UNICODE), 'utf-8');
$str_size = $str_len / 1024;
if ($str_size > 10) {
$post_data["$key"] = 'Row size too large';
}
}
$post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE);
self::$request->code = $code;
self::$request->mark = $mark;
self::$request->post_data = $post_data == '[]' ? '{}' : $post_data;
self::$request->request_url = $url;
self::$request->save();
}
public static function CheckTableName()
{
$table_name = 'zz_peis_log_' . date('ym');
$table_count = DB::select('select count(1) as c from information_schema.TABLES where table_schema = ? and table_name = ?', [env('DB_DATABASE'), $table_name])[0];
if ($table_count->c === 0) {
Schema::create($table_name, function (Blueprint $table) {
$table->id();
$table->string('code', 50)->index();
$table->string('mark', 50)->index();
$table->text('post_data');
$table->text('response_data')->nullable();
$table->string('request_url', 2000);
$table->timestamps();
});
}
self::$request = new \App\Models\PEISLog();
self::$request->setTable($table_name);
}
}