Kaynağa Gözat

feat: new consult object save

未来全栈 4 ay önce
ebeveyn
işleme
866b928212

+ 2 - 2
wisdom-app/src/app/tab1/tab1.page.html

@@ -102,9 +102,9 @@
     </ion-card-header>
     <ion-card-content>
       <ion-list>
-        <ion-item *ngFor="let doctor of doctorList" lines="none">
+        <ion-item (click)="openInquiry(doctor)" *ngFor="let doctor of doctorList" lines="none">
           <ion-thumbnail slot="start">
-            <img [src]="doctor.get('avatar')" [alt]="doctor.get('name')" />
+            <img [src]="doctor.get('avatar') || '../../assets/image/doctor5.png'" [alt]="doctor.get('name')" />
           </ion-thumbnail>
           <div class="doctor-info">
             <h3>{{ doctor.get('name') }}({{ doctor.get('age') }}岁)</h3>

+ 70 - 2
wisdom-app/src/app/tab1/tab1.page.ts

@@ -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)
+  }
 }

+ 6 - 4
wisdom-prod/schema/schema.md

@@ -47,11 +47,13 @@
 5. **Consultation(在线咨询表)**
    - objectId: String
    - createdAt: Date
-   - appointment: Pointer<Appointment>
-   - symptoms: String
-   - diagnosis: String
+   - title: String 问诊标题
+   - symptoms: String 症状
+   - diagnosis: String 诊断结果
+   - content: String 处方内容
+   - chatId:String 问诊对话数据ID
    - prescribedMedication: String
-   - consultationDate: Date
+   - appointment: Pointer<Appointment>
 
 ### PlantUML 类图表示