main
鹿和sa0ChunLuyu 3 days ago
parent 6a569b947c
commit 872974ee66

@ -72,72 +72,61 @@ public function CheckAppointment()
$entrust_ids[] = $item['orderNo']; $entrust_ids[] = $item['orderNo'];
$termCodes[] = $item['termCode']; $termCodes[] = $item['termCode'];
$execDeptCodes[] = $item['execDeptCode']; $execDeptCodes[] = $item['execDeptCode'];
//查询库里是否存在该检医嘱 // UPSERT原子操作消除 SELECT + INSERT 之间的竞态
$db_item = DB::table('s_list')->where(['entrust_id' => $item['orderNo']])->first(); $params = [
if (!$db_item) { 'list_status' => 0,
//如果不存在则进行创建 'reg_num' => $data_v['cardNo'],
$params = [ 'user_name' =>$data_v['patientName'],
'list_status' => 0, 'user_sex' => $data_v['patientGenderName'] == '男' ? 1 : 2,
'reg_num' => $data_v['cardNo'], 'entrust_code' => $item['termCode'],
'user_name' =>$data_v['patientName'], 'entrust' => $item['termName'],
'user_sex' => $data_v['patientGenderName'] == '男' ? 1 : 2, 'is_pay' => $data_v["chargeStatusName"] == '已收费' ? 1 : 0,
'entrust_code' => $item['termCode'], 'reservation_department' =>$data_v["orderDeptName"],
'entrust' => $item['termName'], 'entrust_date' =>$entrust_datePart,
'is_pay' => $data_v["chargeStatusName"] == '已收费' ? 1 : 0, 'entrust_time' =>$entrust_timePart,
'reservation_department' =>$data_v["orderDeptName"], 'user_brithday' =>$birthday,
'entrust_date' =>$entrust_datePart, 'docotr' => $data_v["orderPersonName"],
'entrust_time' =>$entrust_timePart, 'patient_type' => $patientType,
'user_brithday' =>$birthday, 'user_phone' => $data_v["mobile"],
'docotr' => $data_v["orderPersonName"], 'implement_department' =>$item['execDeptName'],
'patient_type' => $patientType, 'entrust_id' => $item['orderNo'],
'user_phone' => $data_v["mobile"], 'episodeid' => $visitSqNo,
'implement_department' =>$item['execDeptName'], 'RISRAcceptDeptCode' => $item["execDeptCode"],
'entrust_id' => $item['orderNo'], 'warddesc' => $data_v["areaName"],
'episodeid' => $visitSqNo, 'wardcode' => $data_v["areaCode"],
// 'RISRExamID' => $order["RISRExamID"] ? $order["RISRExamID"] : null, //检查号,先屏蔽掉,获取不到 'bedname' => $data_v["bedName"],
'RISRAcceptDeptCode' => $item["execDeptCode"], //接收科室代码 'bedno' => $data_v["bedNo"],
'warddesc' => $data_v["areaName"], //病区 'app_num' => $data_v["requestNo"],
'wardcode' => $data_v["areaCode"], //病区 'idCardNumber' => $data_v["idCardNumber"],
'bedname' => $data_v["bedName"], //病床号 'medicalHistory' => $data_v["medicalHistory"],
'bedno' => $data_v["bedNo"], //病床号 'diagnosisName' => $data_v["diagnosisName"],
'app_num' => $data_v["requestNo"], //申请单号 'his_is_emergency'=> intval($data_v["urgentFlag"]),
'idCardNumber' => $data_v["idCardNumber"], //身份证号 'reservation_department_code' =>$data_v["orderDeptCode"],
'medicalHistory' => $data_v["medicalHistory"], //病史摘要 'doctor_code' => $data_v["orderPersonCode"],
'diagnosisName' => $data_v["diagnosisName"], //临床诊断(诊断名称) 'requestComment' => $data_v["requestComment"] ?? null,
'his_is_emergency'=> intval($data_v["urgentFlag"]), //是否加急 ];
'reservation_department_code' =>$data_v["orderDeptCode"],//申请科室代码
'doctor_code' => $data_v["orderPersonCode"],//申请医生代码 $columns = '`' . implode('`, `', array_keys($params)) . '`';
'requestComment' => $data_v["requestComment"] ?? null, //申请注意事项 $holders = implode(', ', array_fill(0, count($params), '?'));
]; $assigns = implode(', ', array_map(fn($k) => "`{\$k}` = VALUES(`{\$k}`)", array_keys($params)));
$list_id= DB::table('s_list')->insertGetId($params);
if($list_id){ $sql = "INSERT INTO `s_list` ({$columns}) VALUES ({$holders}) ON DUPLICATE KEY UPDATE {$assigns}";
$i_log = DB::table('s_list_log')->insert([ DB::statement($sql, array_values($params));
'list_id' =>$list_id,
'reg_num' => $data_v['cardNo'], $rowCount = DB::select("SELECT ROW_COUNT() AS `affected`")[0]->affected;
'old_status' => 0, $note = ($rowCount == 1) ? '创建记录' : 'MQ冲突更新';
'new_status' => 0,
'create_user' => 'his', $list_id = DB::table('s_list')->where('entrust_id', $item['orderNo'])->value('id');
'note' => '创建记录',
'data' => json_encode($params) DB::table('s_list_log')->insert([
]); 'list_id' => $list_id,
} 'reg_num' => $data_v['cardNo'],
'old_status' => 0,
}else{ 'new_status' => 0,
//如果存在,更新一下部分字段 'create_user' => 'his',
$params = [ 'note' => $note,
'medicalHistory' => $data_v["medicalHistory"], //病史摘要 'data' => json_encode($params),
'diagnosisName' => $data_v["diagnosisName"], //临床诊断(诊断名称) ]);
'his_is_emergency'=> intval($data_v["urgentFlag"]), //是否加急
'reservation_department_code' =>$data_v["orderDeptCode"],//申请科室代码
'doctor_code' => $data_v["orderPersonCode"],//申请医生代码
'requestComment' => $data_v["requestComment"] ?? null, //申请注意事项
];
// 如果 wardcode 一致但 warddesc 不一致,同步更新病区名称
if ($db_item->wardcode == $data_v["areaCode"] && $db_item->warddesc != $data_v["areaName"]) {
$params['warddesc'] = $data_v["areaName"];
}
DB::table('s_list')->where(['id' => $db_item->id])->update($params);
}
} }
} }
}else{ }else{

Loading…
Cancel
Save