| 
					
				 | 
			
			
				@ -7,51 +7,31 @@ let configFile = require('../../include/commons').CONFIG_FILE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let config = require('../../resources/config/' + configFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let log = require("../../util/log.js"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let BaseModel = require('../base.model'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let patientRepo = require('../../repository/mysql/patient.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let statsRepo = require("../../repository/mysql/stats.msg.repo.js"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let pmRepo = require('../../repository/mysql/private.msg.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let RedisModel = require('../redis.model'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let objectUtil = require("../../util/objectUtil.js"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let modelUtil = require('../../util/modelUtil'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let wechatUtil = require('../../util/wechatUtil'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let clientCache = require('../socket.io/client.cache').clientCache(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let Doctor = require('../../models/user/doctor'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let DoctorRepo = require('../../repository/mysql/doctor.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let GroupRepo = require('../../repository/mysql/group.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let PatientRepo = require('../../repository/mysql/patient.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let StatsRepo = require("../../repository/mysql/stats.msg.repo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let PmRepo = require('../../repository/mysql/private.msg.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				const CONTENT_TYPES = require('../../include/commons').CONTENT_TYPE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let clientCache = require('../socket.io/client.cache').clientCache(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let DoctorRepo = require('../../repository/mysql/doctor.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let groupRepo = require('../../repository/mysql/group.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let wechatUtil = require('../../util/wechatUtil'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				class Patient extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    constructor() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				class Patient extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    constructor(patientId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        super(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 是否为患者代码。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param passedCallback 测试通过回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param failedCallback 测试失败回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    static isPatientCode(code, passedCallback, failedCallback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        patientRepo.isPatientCode(code, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                log.error('Send message to patient failed: ', err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this._id = patientId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (result[0].c > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                passedCallback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                failedCallback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    get id(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return this._id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -66,14 +46,14 @@ class Patient extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let tempContent = message.contentType === CONTENT_TYPES.Article ? JSON.stringify(message.content) : message.content; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        pmRepo.save(message.to, message.from, message.contentType, tempContent, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        PmRepo.save(message.to, message.from, message.contentType, tempContent, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                modelUtil.emitDbError(self.eventEmitter, 'Save private message failed', err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 结束网络连接,后续操作继续执行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            pmRepo.findOnePatientMessage(result.insertId, function (err, msg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            PmRepo.findOnePatientMessage(result.insertId, function (err, msg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    modelUtil.emitDbError(self.eventEmitter, 'Save private message success, but return last message failed', err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -95,12 +75,12 @@ class Patient extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 更新自身的聊天统计信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            statsRepo.updatePrivateChatSummary(message.from, message.to, message.from, message.contentType, message.content, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            StatsRepo.updatePrivateChatSummary(message.from, message.to, message.from, message.contentType, message.content, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) log.error(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 更新对端的聊天统计信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            statsRepo.updatePrivateChatSummary(message.to, message.from, message.from, message.contentType, message.content, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            StatsRepo.updatePrivateChatSummary(message.to, message.from, message.from, message.contentType, message.content, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) log.error(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -121,7 +101,7 @@ class Patient extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            self.sendConsultWechatReplyTempMsg(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        groupRepo.getOnGroupMsg(message.msgId, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        GroupRepo.getOnGroupMsg(message.msgId, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                modelUtil.emitDbError(self.eventEmitter, "get group msg info failed", err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -184,7 +164,7 @@ class Patient extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 查询居民openid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        patientRepo.getPatientOpenid(message.to, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        PatientRepo.getPatientOpenid(message.to, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                modelUtil.emitDbError(self.eventEmitter, "get patient openid failed", err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -203,7 +183,7 @@ class Patient extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        var name = result[0].name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (message.group) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            groupRepo.getGroupConsultInfo(message.group, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            GroupRepo.getGroupConsultInfo(message.group, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    modelUtil.emitDbError(self.eventEmitter, "get patient and doctor consult info failed", err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -217,7 +197,7 @@ class Patient extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            // 查询医生与居民对应的咨询信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            patientRepo.getPatientDoctorConsult(message.to, message.from, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            PatientRepo.getPatientDoctorConsult(message.to, message.from, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    modelUtil.emitDbError(self.eventEmitter, "get patient and doctor consult info failed", err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    return; 
			 |