$visitSqNo, 'requestNo' => $requestNo, 'visitTypeCode' => $visitTypeCode, 'feeFlag' => 0, ]; $His = new HisController(); $res = $His::Get("查询检查申请单", $data); if ($res['code'] == 200) { $res_data = $res['data']; foreach ($res_data as $data_k => $data_v) { $date = DateTime::createFromFormat('YmdHis', $data_v['requestDate']); if ($date) { $entrust_datePart = $date->format('Y-m-d'); // 日期部分 $entrust_timePart = $date->format('H:i:s'); // 时间部分 } else { $entrust_datePart = ''; $entrust_timePart = ''; } $birthday_f = DateTime::createFromFormat('Ymd', $data_v['patientBirthDate']); if ($birthday_f) { $birthday = $birthday_f->format('Y-m-d'); }else{ $birthday=''; } $mapping = [ '03' => 0, // 住院 -> 0 '01' => 1, // 门诊 -> 1 '02' => 2, // 急诊 -> 2 '04' => 3, // 体检 -> 3 ]; $patientType = $mapping[$visitTypeCode] ?? 9; foreach ($data_v['itemList'] as $item_k => $item) { $entrust_ids[] = $item['orderNo']; //查询库里是否存在该检医嘱 $db_item = DB::table('s_list')->where(['entrust_id' => $item['orderNo']])->first(); if (!$db_item) { //如果不存在则进行创建 $params = [ 'list_status' => 0, 'reg_num' => $data_v['cardNo'], 'user_name' =>$data_v['patientName'], 'user_sex' => $data_v['patientGenderName'] == '男' ? 1 : 2, 'entrust_code' => $item['termCode'], 'entrust' => $item['termName'], 'is_pay' => $data_v["chargeStatusName"] == '已收费' ? 1 : 0, 'reservation_department' =>$data_v["orderDeptName"], 'entrust_date' =>$entrust_datePart, 'entrust_time' =>$entrust_timePart, 'user_brithday' =>$birthday, 'docotr' => $data_v["orderPersonName"], 'patient_type' => $patientType, 'user_phone' => $data_v["mobile"], 'implement_department' =>$item['execDeptName'], 'entrust_id' => $item['orderNo'], 'episodeid' => $visitSqNo, // 'RISRExamID' => $order["RISRExamID"] ? $order["RISRExamID"] : null, //检查号,先屏蔽掉,获取不到 'RISRAcceptDeptCode' => $item["execDeptCode"], //接收科室代码 'warddesc' => $data_v["areaName"], //病区 'wardcode' => $data_v["areaCode"], //病区 'bedname' => $data_v["bedName"], //病床号 'bedno' => $data_v["bedNo"], //病床号 'app_num' => $data_v["requestNo"], //申请单号 'medicalHistory' => $data_v["medicalHistory"], //病史摘要 'diagnosisName' => $data_v["diagnosisName"], //临床诊断(诊断名称) 'idCardNumber' => $data_v["idCardNumber"], //身份证号 ]; $list_id= DB::table('s_list')->insertGetId($params); if($list_id){ $i_log = DB::table('s_list_log')->insert([ 'list_id' =>$list_id, 'reg_num' => $data_v['cardNo'], 'old_status' => 0, 'new_status' => 0, 'create_user' => 'his', 'note' => '创建记录', 'data' => json_encode($params) ]); } } } } }else{ return \Yz::JsonError('Roc接口查询失败'); } } if (true) { $is_redirect = true; $url = $this->build_yiji_url($cardNo, $entrust_ids, $visitSqNo); } else { $is_redirect = false; } return \Yz::JsonReturn(true, '查询成功', ['is_redirect' => $is_redirect, 'url' => $url]); } function QueryHisShenQingDan() { } function build_yiji_url($regnum, $entrustid, $episodeid) { // 固定参数 $dotype = 1; $appointment_type = 1; // 判断 entrustid 是否为数组,如果是,则用逗号 , 拼接并分别进行 rawurlencode 编码 if (is_array($entrustid)) { // 对数组中的每个元素进行 rawurlencode 编码后再拼接 $entrustid_str = implode(',', array_map('rawurlencode', $entrustid)); } // 构造查询参数,并对 regnum 和 episodeid 使用 rawurlencode 编码 $params = [ 'regnum' => rawurlencode($regnum), 'entrustid' => $entrustid_str, 'episodeid' => rawurlencode($episodeid), 'dotype' => $dotype, 'appointment_type' => $appointment_type, ]; // 使用 http_build_query 构建查询字符串,注意设置第四个参数为 PHP_QUERY_RFC3986 // 以确保生成的 URL 符合 RFC 3986 标准 $query = http_build_query($params, '', '&', PHP_QUERY_RFC3986); // 返回完整 URL return "http://192.168.80.76/yiji?$query"; } }