lrf402788946 4 år sedan
förälder
incheckning
bca8f12f7c
3 ändrade filer med 25 tillägg och 2 borttagningar
  1. 5 0
      app/controller/patient.js
  2. 2 1
      app/router.js
  3. 18 1
      app/service/patient.js

+ 5 - 0
app/controller/patient.js

@@ -73,6 +73,11 @@ class PatientController extends Controller {
   async findopenid() {
     return await this.service.findByOpenid(this.ctx.query);
   }
+
+  async cutDoctorPatient() {
+    await this.service.fromDoctorDelete(this.ctx.request.body);
+    this.ctx.ok();
+  }
 }
 
 module.exports = PatientController;

+ 2 - 1
app/router.js

@@ -28,7 +28,8 @@ module.exports = app => {
   router.get('/api/visit/grouppatients/:groupid/patients/fetch', controller.grouppatients.fetch); // index
   router.post('/api/visit/grouppatients/:groupid/update/:id', controller.grouppatients.update); // update
   router.post('/api/visit/grouppatients/:groupid/destroy/:id', controller.grouppatients.destroy); // destroy
-
+  // 切断医生与病人的数据关系
+  router.post('patient', '/api/visit/patient/cut', controller.patient.cutDoctorPatient);
   router.resources('patient', '/api/visit/patient', controller.patient); // index、create、show、destroy
   router.get('/api/visit/patient/:id/info', controller.patient.info);
   router.get('/api/visit/patient/:id/doctors', controller.patient.doctors);

+ 18 - 1
app/service/patient.js

@@ -17,6 +17,7 @@ class PatientService extends CrudService {
     this.chatModel = this.ctx.model.Chat;
     this.remark = this.ctx.model.Remark;
     this.gc = this.ctx.model.Groupchat;
+    this.room = this.ctx.model.Room;
   }
 
   async query({ doctorid, ...query }, { skip, limit }) {
@@ -237,7 +238,23 @@ class PatientService extends CrudService {
   async findByOpenid(data) {
     return await this.model.findOne({ openid: data.openid });
   }
-
+  // 医生移除病人
+  async fromDoctorDelete({ doctorid, patientid } = {}) {
+    console.log(doctorid, patientid);
+    assert(doctorid, '缺少医生信息');
+    assert(patientid, '缺少病人信息');
+    // 切断医生和病人的关系
+    // 删除医生群组下的这个病人
+    const res = await this.pGroups.find({ 'patients.patientid': patientid, doctorid }, '+patients');
+    for (const i of res) {
+      i.patients = i.patients.filter(f => f.patientid !== patientid);
+      await i.save();
+    }
+    // 删除医生和病人的关系,patient_doctor
+    await this.pDocs.deleteMany({ patientid, doctorid });
+    // 删除医生和病人的聊天房间
+    await this.room.deleteMany({ patientid, doctorid });
+  }
 
 }