Files
vueapp/dist/assets/pages-chat-chat.C6x0yrXE.js
T

2 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{d as e,a as l,b as a,c as s,B as t,o,e as n,f as i,w as c,i as d,j as u,t as r,l as m,m as p,F as f,k as _,g as h,n as g,q as b,y as v,z as k,x,S as y,u as V,I as C,J as $}from"./index-DW9fDEMX.js";import{_ as F}from"./config-doctor.TgARj_nM.js";import I from"./pages-diagnosis-diagnosis.CYLO22Hl.js";import{_ as j}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./pages-treatment-treatment.d2FGaPvO.js";import"./pages-assessment-assessment.BrVJ3T4X.js";const w={id:"case-1006004",title:"持续胸痛3小时",patientName:"陈先生",gender:"男",age:60,department:"心血管内科",scene:"住院部",caseNo:"1006004",tone:"orange",mode:"training"};const P=j(e({__name:"chat",props:{caseItem:{}},emits:["open-settings","open-profile","go-home"],setup(e,{emit:j}){const P=e,T=j,U=l({patient:{name:"陈先生",gender:"男",age:60,department:"心血管内科",chiefComplaint:"持续胸痛3小时"},stages:[{key:"history",label:"病史采集",active:!0},{key:"diagnosis",label:"初步诊断",active:!1},{key:"treatment",label:"治疗方案",active:!1}],messages:[]}),N=a(""),q=a(!1),D=a(0),S=a(""),A=a(!1),O=a(!1),H=a(!1),B=a(!1);let X=null;const z=[{name:"心电图",result:"检查结果:床边12导联心电图提示窦性心律,II、III、aVF 导联 ST 段抬高,提示下壁急性心肌梗死可能。"},{name:"胸部X线",result:"检查结果:胸部X线未见明显气胸或纵隔明显增宽,心影大小基本正常,不能排除急性冠脉综合征。"},{name:"心脏超声",result:"检查结果:心脏超声提示左室下壁节段性运动减低,未见大量心包积液,需结合心电图及心肌标志物判断。"},{name:"冠脉CTA",result:"检查结果:冠脉CTA提示右冠状动脉近段重度狭窄/闭塞可能,建议结合急诊介入评估。"}],G=l({temperature:"",pulse:"",respiration:"",bloodPressure:"",spo2:"",complexion:"",examFinding:"",otherFinding:""}),J=s((()=>U.patient.chiefComplaint.includes("胸痛")?"胸痛":U.patient.chiefComplaint.slice(0,6)));function Q(){B.value=!1,H.value=!0}function R(){H.value=!1,B.value=!0}function E(){const e=[G.temperature.trim()?`体温 ${G.temperature.trim()}`:"",G.pulse.trim()?`心率 ${G.pulse.trim()}次/分`:"",G.respiration.trim()?`呼吸 ${G.respiration.trim()}次/分`:"",G.bloodPressure.trim()?`血压 ${G.bloodPressure.trim()}mmHg`:"",G.spo2.trim()?`血氧 ${G.spo2.trim()}%`:"",G.complexion.trim()?`意识/面色:${G.complexion.trim()}`:"",G.examFinding.trim()?`心肺/腹部查体:${G.examFinding.trim()}`:"",G.otherFinding.trim()?`其他发现:${G.otherFinding.trim()}`:""].filter(Boolean);if(0===e.length)return void function(e){X&&clearTimeout(X);S.value=e,A.value=!0,b({title:e,icon:"none"}),X=setTimeout((()=>{A.value=!1}),2200)}("请至少录入一项体格检查");const l=Date.now(),a=[{id:`doctor-physical-${l}`,role:"doctor",content:`录入体格检查:${e.join("")}`,label:"我"},{id:`mentor-physical-${l+1}`,role:"mentor",content:K(),label:"AI助手"}];U.messages.push(...a),B.value=!1,G.temperature="",G.pulse="",G.respiration="",G.bloodPressure="",G.spo2="",G.complexion="",G.examFinding="",G.otherFinding="",M()}function K(){const e=Number(G.pulse),l=Number(G.respiration),a=Number(G.spo2),s=Number(G.temperature),t=[];e>=100&&t.push("心率偏快"),l>=22&&t.push("呼吸频率偏快"),a>0&&a<95&&t.push("血氧偏低"),s>=37.3&&t.push("体温偏高"),(G.complexion.includes("苍白")||G.complexion.includes("出汗"))&&t.push("面色/出汗提示急性病容"),(G.otherFinding.includes("血压差")||G.otherFinding.includes("双侧"))&&t.push("双侧血压或脉搏差异需警惕主动脉夹层");return`${t.length?`已记录体格检查。当前提示:${t.join("、")}`:"已记录体格检查,暂未见明确异常体征。"}建议结合胸痛性质、心电图及心肌标志物进一步判断,并持续监测生命体征变化。`}function L(){const e=N.value.trim();e&&!q.value&&(q.value=!0,N.value="",function(e){const l=e.trim(),a=l.includes("出冷汗")||l.includes("恶心")?"有,刚才疼得厉害的时候出了一身冷汗,还有点恶心,但没有吐。":l.includes("体格检查")?"患者面色苍白,额部出汗,心率偏快,血压较入院时略低。":l.includes("辅助检查")?"心电图提示下壁导联 ST 段抬高,肌钙蛋白待回报。":"疼痛主要在胸骨后,像压榨一样,休息后也没有明显缓解。";return Promise.resolve([{id:`doctor-${Date.now()}`,role:"doctor",content:l,label:"我"},{id:`patient-${Date.now()+1}`,role:"patient",content:a,label:"患者"},{id:`mentor-${Date.now()+2}`,role:"mentor",content:"很好,继续围绕 OPQRST 思路追问疼痛诱因、部位、性质、放射、持续时间和缓解因素,同时关注危险信号。",label:"王主任"}])}(e).then((e=>{U.messages.push(...e),M()})).finally((()=>{q.value=!1})))}function M(){setTimeout((()=>{D.value+=1e3}),60)}return t((function(){(function(e){const l=e||w,a="毕波涛"===l.patientName?"陈先生":l.patientName;return Promise.resolve({patient:{name:a,gender:l.gender,age:l.age,department:l.department,chiefComplaint:l.title},stages:[{key:"history",label:"病史采集",active:!0},{key:"diagnosis",label:"初步诊断",active:!1},{key:"treatment",label:"治疗方案",active:!1}],messages:[{id:"patient-initial",role:"patient",content:"心血管内科"===l.department?"医生,我心口这儿针扎一样疼了两个小时了,现在感觉喘气都费劲。":`医生,我这次主要是${l.title},有点担心。`,label:"患者"},{id:"mentor-initial",role:"mentor",content:"观察患者的面部表情和生命体征。你的第一个问题应该如何询问,以明确疼痛的性质?",label:"王主任"}]})})(P.caseItem).then((e=>{Object.assign(U.patient,e.patient),U.stages=e.stages,U.messages=e.messages,M()}))})),o((()=>{X&&clearTimeout(X)})),(e,l)=>{const a=v,s=k,t=x,o=y,b=V,j=C,w=$;return O.value?(n(),i(I,{key:0,"case-item":e.caseItem,onOpenSettings:l[0]||(l[0]=e=>T("open-settings")),onOpenProfile:l[1]||(l[1]=e=>T("open-profile")),onGoHome:l[2]||(l[2]=e=>T("go-home"))},null,8,["case-item"])):(n(),i(a,{key:1,class:"chat-page"},{default:c((()=>[d(a,{class:"chat-shell"},{default:c((()=>[d(a,{class:"top-nav"},{default:c((()=>[d(s,{class:"icon-button","aria-label":"设置",onClick:l[3]||(l[3]=e=>T("open-settings"))},{default:c((()=>[d(a,{class:"settings-icon"})])),_:1}),d(s,{class:"icon-button home-button","aria-label":"首页",onClick:l[4]||(l[4]=e=>T("go-home"))},{default:c((()=>[d(a,{class:"home-icon"})])),_:1}),d(a,{class:"nav-spacer"}),d(s,{class:"icon-button","aria-label":"个人中心",onClick:l[5]||(l[5]=e=>T("open-profile"))},{default:c((()=>[d(a,{class:"account-icon"})])),_:1})])),_:1}),d(a,{class:"case-header"},{default:c((()=>[d(a,{class:"case-title-row"},{default:c((()=>[d(t,{class:"case-heading"},{default:c((()=>[u("患者:"+r(U.patient.name)+" ("+r(J.value)+")",1)])),_:1}),d(s,{class:"finish-button",onClick:l[6]||(l[6]=e=>O.value=!0)},{default:c((()=>[d(a,{class:"check-icon"}),d(t,null,{default:c((()=>[u("完成采集")])),_:1})])),_:1})])),_:1}),d(a,{class:"patient-meta"},{default:c((()=>[d(t,null,{default:c((()=>[u("姓名:"+r(U.patient.name),1)])),_:1}),d(t,null,{default:c((()=>[u("性别:"+r(U.patient.gender),1)])),_:1}),d(t,null,{default:c((()=>[u("年龄:"+r(U.patient.age)+"岁",1)])),_:1}),d(t,null,{default:c((()=>[u("科室:"+r(U.patient.department),1)])),_:1})])),_:1})])),_:1}),d(a,{class:"stage-bar"},{default:c((()=>[d(a,{class:"stage-line"}),d(a,{class:"stage-line-active"}),(n(!0),m(f,null,p(U.stages,(e=>(n(),i(a,{key:e.key,class:g(["stage-item",{active:e.active}])},{default:c((()=>[d(a,{class:"stage-dot"},{default:c((()=>[d(a,{class:g(["stage-icon",`stage-icon-${e.key}`])},null,8,["class"])])),_:2},1024),d(t,null,{default:c((()=>[u(r(e.label),1)])),_:2},1024)])),_:2},1032,["class"])))),128))])),_:1}),d(o,{class:"chat-body","scroll-y":"","scroll-top":D.value},{default:c((()=>[d(a,{class:"message-list"},{default:c((()=>[(n(!0),m(f,null,p(U.messages,(e=>(n(),i(a,{key:e.id,class:g(["message-row",[`role-${e.role}`]])},{default:c((()=>["patient"===e.role?(n(),i(a,{key:0,class:"avatar patient-avatar"},{default:c((()=>[d(t,null,{default:c((()=>[u(r(U.patient.name.slice(0,1)),1)])),_:1})])),_:1})):h("",!0),d(a,{class:g(["message-bubble",`${e.role}-bubble`])},{default:c((()=>[d(t,{class:"message-content"},{default:c((()=>[u('"'+r(e.content)+'"',1)])),_:2},1024),d(a,{class:g(["message-label",{mentor:"mentor"===e.role}])},{default:c((()=>["mentor"===e.role?(n(),i(a,{key:0,class:"star-icon"})):h("",!0),d(t,null,{default:c((()=>[u(r(e.label),1)])),_:2},1024)])),_:2},1032,["class"])])),_:2},1032,["class"]),"doctor"===e.role?(n(),i(a,{key:1,class:"avatar doctor-avatar"},{default:c((()=>[d(a,{class:"person-icon"})])),_:1})):h("",!0)])),_:2},1032,["class"])))),128))])),_:1})])),_:1},8,["scroll-top"]),d(a,{class:"mentor-float"},{default:c((()=>[d(t,{class:"mentor-badge"},{default:c((()=>[u("王主任")])),_:1}),d(a,{class:"mentor-avatar"},{default:c((()=>[d(b,{src:F,mode:"aspectFill"})])),_:1})])),_:1}),d(a,{class:"input-panel"},{default:c((()=>[d(o,{class:"quick-actions","scroll-x":""},{default:c((()=>[d(a,{class:"quick-row"},{default:c((()=>[d(s,{class:"quick-chip",onClick:R},{default:c((()=>[u("体格检查")])),_:1}),d(s,{class:"quick-chip",onClick:Q},{default:c((()=>[u("辅助检查")])),_:1})])),_:1})])),_:1}),d(a,{class:"input-row"},{default:c((()=>[d(j,{class:"chat-input",modelValue:N.value,"onUpdate:modelValue":l[7]||(l[7]=e=>N.value=e),type:"text",placeholder:"输入你对患者的提问...","placeholder-class":"input-placeholder",onConfirm:L},null,8,["modelValue"]),d(s,{class:"send-button",disabled:q.value,onClick:L},{default:c((()=>[d(a,{class:"send-icon"})])),_:1},8,["disabled"])])),_:1})])),_:1})])),_:1}),B.value?(n(),i(a,{key:0,class:"exam-mask",onClick:l[19]||(l[19]=e=>B.value=!1)},{default:c((()=>[d(a,{class:"physical-panel",onClick:l[18]||(l[18]=_((()=>{}),["stop"]))},{default:c((()=>[d(a,{class:"exam-header"},{default:c((()=>[d(t,{class:"exam-title"},{default:c((()=>[u("录入体格检查")])),_:1}),d(s,{class:"exam-close","aria-label":"关闭",onClick:l[8]||(l[8]=e=>B.value=!1)},{default:c((()=>[d(a,{class:"close-icon"})])),_:1})])),_:1}),d(o,{class:"physical-form","scroll-y":""},{default:c((()=>[d(a,{class:"vital-grid"},{default:c((()=>[d(a,{class:"form-field"},{default:c((()=>[d(t,{class:"field-label"},{default:c((()=>[u("体温")])),_:1}),d(j,{class:"field-input",modelValue:G.temperature,"onUpdate:modelValue":l[9]||(l[9]=e=>G.temperature=e),type:"digit",placeholder:"36.8","placeholder-class":"field-placeholder"},null,8,["modelValue"]),d(t,{class:"field-unit"},{default:c((()=>[u("℃")])),_:1})])),_:1}),d(a,{class:"form-field"},{default:c((()=>[d(t,{class:"field-label"},{default:c((()=>[u("心率")])),_:1}),d(j,{class:"field-input",modelValue:G.pulse,"onUpdate:modelValue":l[10]||(l[10]=e=>G.pulse=e),type:"number",placeholder:"98","placeholder-class":"field-placeholder"},null,8,["modelValue"]),d(t,{class:"field-unit"},{default:c((()=>[u("次/分")])),_:1})])),_:1}),d(a,{class:"form-field"},{default:c((()=>[d(t,{class:"field-label"},{default:c((()=>[u("呼吸")])),_:1}),d(j,{class:"field-input",modelValue:G.respiration,"onUpdate:modelValue":l[11]||(l[11]=e=>G.respiration=e),type:"number",placeholder:"22","placeholder-class":"field-placeholder"},null,8,["modelValue"]),d(t,{class:"field-unit"},{default:c((()=>[u("次/分")])),_:1})])),_:1}),d(a,{class:"form-field"},{default:c((()=>[d(t,{class:"field-label"},{default:c((()=>[u("血氧")])),_:1}),d(j,{class:"field-input",modelValue:G.spo2,"onUpdate:modelValue":l[12]||(l[12]=e=>G.spo2=e),type:"number",placeholder:"96","placeholder-class":"field-placeholder"},null,8,["modelValue"]),d(t,{class:"field-unit"},{default:c((()=>[u("%")])),_:1})])),_:1})])),_:1}),d(a,{class:"form-field full"},{default:c((()=>[d(t,{class:"field-label"},{default:c((()=>[u("血压")])),_:1}),d(j,{class:"field-input",modelValue:G.bloodPressure,"onUpdate:modelValue":l[13]||(l[13]=e=>G.bloodPressure=e),type:"text",placeholder:"138/86","placeholder-class":"field-placeholder"},null,8,["modelValue"]),d(t,{class:"field-unit"},{default:c((()=>[u("mmHg")])),_:1})])),_:1}),d(a,{class:"form-field full"},{default:c((()=>[d(t,{class:"field-label"},{default:c((()=>[u("意识/面色")])),_:1}),d(j,{class:"field-input",modelValue:G.complexion,"onUpdate:modelValue":l[14]||(l[14]=e=>G.complexion=e),type:"text",placeholder:"清醒,面色苍白,出汗","placeholder-class":"field-placeholder"},null,8,["modelValue"])])),_:1}),d(a,{class:"form-field textarea-field"},{default:c((()=>[d(t,{class:"field-label"},{default:c((()=>[u("心肺/腹部查体")])),_:1}),d(w,{class:"field-textarea",modelValue:G.examFinding,"onUpdate:modelValue":l[15]||(l[15]=e=>G.examFinding=e),placeholder:"心音、肺部啰音、腹部压痛等","placeholder-class":"field-placeholder"},null,8,["modelValue"])])),_:1}),d(a,{class:"form-field textarea-field"},{default:c((()=>[d(t,{class:"field-label"},{default:c((()=>[u("其他发现")])),_:1}),d(w,{class:"field-textarea",modelValue:G.otherFinding,"onUpdate:modelValue":l[16]||(l[16]=e=>G.otherFinding=e),placeholder:"如双侧血压差、下肢水肿、神经系统体征等","placeholder-class":"field-placeholder"},null,8,["modelValue"])])),_:1})])),_:1}),d(a,{class:"physical-actions"},{default:c((()=>[d(s,{class:"physical-cancel",onClick:l[17]||(l[17]=e=>B.value=!1)},{default:c((()=>[u("取消")])),_:1}),d(s,{class:"physical-submit",onClick:E},{default:c((()=>[u("提交检查结果")])),_:1})])),_:1})])),_:1})])),_:1})):h("",!0),H.value?(n(),i(a,{key:1,class:"exam-mask",onClick:l[22]||(l[22]=e=>H.value=!1)},{default:c((()=>[d(a,{class:"exam-panel",onClick:l[21]||(l[21]=_((()=>{}),["stop"]))},{default:c((()=>[d(a,{class:"exam-header"},{default:c((()=>[d(t,{class:"exam-title"},{default:c((()=>[u("选择辅助检查")])),_:1}),d(s,{class:"exam-close","aria-label":"关闭",onClick:l[20]||(l[20]=e=>H.value=!1)},{default:c((()=>[d(a,{class:"close-icon"})])),_:1})])),_:1}),d(a,{class:"exam-list"},{default:c((()=>[(n(),m(f,null,p(z,(e=>d(s,{key:e.name,class:"exam-item",onClick:l=>function(e){H.value=!1;const l=Date.now(),a=[{id:`doctor-exam-${l}`,role:"doctor",content:`选择辅助检查:${e.name}`,label:"我"},{id:`mentor-exam-${l+1}`,role:"mentor",content:e.result,label:"AI助手"}];U.messages.push(...a),M()}(e)},{default:c((()=>[d(t,{class:"exam-name"},{default:c((()=>[u(r(e.name),1)])),_:2},1024),d(a,{class:"chevron-icon"})])),_:2},1032,["onClick"]))),64))])),_:1})])),_:1})])),_:1})):h("",!0),d(a,{class:g(["toast",{visible:A.value}])},{default:c((()=>[u(r(S.value),1)])),_:1},8,["class"])])),_:1}))}}}),[["__scopeId","data-v-a3656516"]]);export{P as default};