|
@@ -5,12 +5,13 @@ import { IonButton } from '@ionic/angular/standalone';
|
|
|
import { IonIcon } from '@ionic/angular/standalone';
|
|
|
import { Router } from '@angular/router';
|
|
|
import { CommonModule } from '@angular/common';
|
|
|
-import { ModalController } from '@ionic/angular';
|
|
|
+import { ModalController } from '@ionic/angular/standalone';
|
|
|
import { HttpClient } from '@angular/common/http';
|
|
|
import { addIcons } from 'ionicons';
|
|
|
import { documentText, chatbubbles, person, calendar, newspaper,
|
|
|
medkit,clipboard, podium, videocam, people } from 'ionicons/icons';
|
|
|
import { CloudObject, CloudQuery } from 'src/lib/ncloud';
|
|
|
+import { ChatPanelOptions, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
|
|
|
addIcons({ documentText, chatbubbles, person, calendar, newspaper,
|
|
|
medkit,clipboard, podium, videocam, people
|
|
|
});
|
|
@@ -29,7 +30,7 @@ export class Tab1Page {
|
|
|
|
|
|
constructor(
|
|
|
private router: Router,
|
|
|
- // private modalController: ModalController,
|
|
|
+ private modalCtrl: ModalController,
|
|
|
// private navCtrl: NavController,
|
|
|
private http: HttpClient // 注入 HttpClient
|
|
|
) {}
|
|
@@ -126,4 +127,71 @@ export class Tab1Page {
|
|
|
let query = new CloudQuery("Doctor");
|
|
|
this.doctorList = await query.find()
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /** 示例:问诊ChatPanel面板 */
|
|
|
+ openInquiry(doctor:CloudObject){
|
|
|
+ localStorage.setItem("company","E4KpGvTEto")
|
|
|
+
|
|
|
+ let consult = new CloudObject("Consultation")
|
|
|
+ let now = new Date();
|
|
|
+ let dateStr = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()}`
|
|
|
+ consult.set({
|
|
|
+ title:`${doctor.get('depart')?.name || ""}门诊记录${dateStr}-${doctor?.get("name")}`,
|
|
|
+ doctor:doctor.toPointer(),
|
|
|
+ depart:doctor.get("depart")
|
|
|
+ })
|
|
|
+
|
|
|
+ let options:ChatPanelOptions = {
|
|
|
+ roleId:"2DXJkRsjXK",
|
|
|
+ onChatInit:(chat:FmodeChat)=>{
|
|
|
+ console.log("onChatInit");
|
|
|
+ console.log("预设角色",chat.role);
|
|
|
+ chat.role.set("name",doctor?.get("name"));
|
|
|
+ chat.role.set("title",doctor?.get("title"));
|
|
|
+ chat.role.set("desc",doctor?.get("desc"));
|
|
|
+ chat.role.set("tags",doctor?.get("qualifications"));
|
|
|
+ chat.role.set("avatar",doctor?.get("avatar") || "../../assets/image/doctor5.png")
|
|
|
+ chat.role.set("prompt",`
|
|
|
+# 角色设定
|
|
|
+您是${doctor?.get("desc")},${doctor?.get("name")},年龄${doctor?.get("age")}岁,需要完成一次完整的门诊服务。
|
|
|
+
|
|
|
+# 对话环节
|
|
|
+0.导诊(根据用户基本情况,引导挂号合适的科室)
|
|
|
+1.预设的问询方式(根据不同症状来问询具体的情况)
|
|
|
+- 打招呼,以用户自述为主
|
|
|
+- 当信息充足时候,确认用户症状对应的科室,并进入下一个环节
|
|
|
+2.拓展的问询细节
|
|
|
+例如:用户反映呼吸不畅,拓展出:是否咳嗽;是否感觉痛或者痒等其他需要的问题。
|
|
|
+- 当问询细节补充完成后进入下一个环节
|
|
|
+3.初步的诊断结果,并且同时列出检查检验项目
|
|
|
+初步诊断:确定需要有哪些进一步检查
|
|
|
+检查检验:获取医学客观数据
|
|
|
+- 等待用户提交客观数据,进入下一阶段
|
|
|
+4.给出诊断方案并给出处方
|
|
|
+- 完成处方时,请在消息结尾附带: [处方完成]
|
|
|
+
|
|
|
+# 开始话语
|
|
|
+当您准备好了,可以以一个医生的身份,向来访的用户打招呼。`);
|
|
|
+ },
|
|
|
+ onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
|
|
|
+ console.log("onMessage",message)
|
|
|
+ let content:any = message?.content
|
|
|
+ if(typeof content == "string"){
|
|
|
+ if(content?.indexOf("[处方完成]")>-1){
|
|
|
+ console.log("门诊已完成")
|
|
|
+ consult.set({
|
|
|
+ content:content // 处方内容
|
|
|
+ })
|
|
|
+ consult.save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onChatSaved:(chat:FmodeChat)=>{
|
|
|
+ // chat?.chatSession?.id 本次会话的 chatId
|
|
|
+ console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ openChatPanelModal(this.modalCtrl,options)
|
|
|
+ }
|
|
|
}
|