bing пре 4 година
родитељ
комит
e139e82a4e

+ 3 - 2
src/server/endpoints/v2/message.endpoint.js

@ -42,10 +42,11 @@ router.post(APIv2.Message.DoctorSystemMessage, function (req, res) {
    if (!message) {
        throw {httpStatus: 406, message: 'Missing message.'};
    }
    ControllerUtil.regModelEventHandler(wechatClient, res);
    ControllerUtil.regModelEventHandler(WechatClient, res);
    //推送MDT,医生外层新消息
    WechatClient.sendMDTSocketMessageToDoctor(targetUserId,JSON.parse(message));
    WechatClient.cloudSendMDTSocketMessageToDoctor(targetUserId,JSON.parse(message),null);
});
router.get(APIv2.Message.DataMessage, function (req, res) {

+ 1 - 0
src/server/include/commons.js

@ -157,6 +157,7 @@ const CONTENT_TYPES = {
    ChangeDoorDoctor: 2103,//上门服务-变更工单医生信息
    ChangeDoorPackageItems:2104, //上门服务-变更工单服务项信息
    InformedConsent:2105,//知情通知书
    emergencyAssistance:40,//医疗云-紧急救助
    typeToDescription: function (type, defaultDescription) {
        if (CONTENT_TYPES.Image == type) {
            return '[图片]';

+ 140 - 30
src/server/models/client/wechat.client.js

@ -406,43 +406,153 @@ class WechatClient extends RedisModel {
        if(!doctorSYSTEMClient){
            log.warn("target system doctor is not online!");
        }else{
            doctorSYSTEMClient.socket.emit('message', {
                id: message.id,
                session_id: 'system',
                sender_id: message.sender_id,
                sender_name: message.sender_name,
                content_type: 1,
                content: {"socket_sms_type":4},
                timestamp: ObjectUtil.timestampToLong(message.timestamp),
                type: message.content_type,          // legacy support
                name: message.sender_name,
                patient_name:message.patient_name,
                patient_age:message.patient_age,
                patient_sex:message.patient_sex,
                extend:message.extend
            });
            if (message.content_type==CONTENT_TYPES.emergencyAssistance){
                doctorSYSTEMClient.socket.emit('message', {
                    session_id:message.session_id,
                    sender_name: message.sender_name,
                    order_id:message.order_id,
                    type: message.content_type,
                    extend:message.extend
                });
            }else {
                doctorSYSTEMClient.socket.emit('message', {
                    id: message.id,
                    session_id: 'system',
                    sender_id: message.sender_id,
                    sender_name: message.sender_name,
                    content_type: 1,
                    content: {"socket_sms_type":4},
                    timestamp: ObjectUtil.timestampToLong(message.timestamp),
                    type: message.content_type,          // legacy support
                    name: message.sender_name,
                    patient_name:message.patient_name,
                    patient_age:message.patient_age,
                    patient_sex:message.patient_sex,
                    extend:message.extend
                });
            }
        }
        if(!doctorAPPSYSTEMClient){
            log.warn("target system app doctor is not online!");
        }else{
            doctorAPPSYSTEMClient.socket.emit('message', {
                id: message.id,
                session_id: 'system',
                sender_id: message.sender_id,
                sender_name: message.sender_name,
                content_type: 1,
                content: {"socket_sms_type":4},
                timestamp: ObjectUtil.timestampToLong(message.timestamp),
                type: message.content_type,          // legacy support
                name: message.sender_name,
                patient_name:message.patient_name,
                patient_age:message.patient_age,
                patient_sex:message.patient_sex,
                extend:message.extend
            });
            if (message.content_type+""==CONTENT_TYPES.emergencyAssistance){
                doctorAPPSYSTEMClient.socket.emit('message', {
                    session_id:message.session_id,
                    sender_name: message.sender_name,
                    order_id:message.order_id,
                    type: message.content_type,
                    extend:message.extend
                });
            }else {
                doctorAPPSYSTEMClient.socket.emit('message', {
                    id: message.id,
                    session_id: 'system',
                    sender_id: message.sender_id,
                    sender_name: message.sender_name,
                    content_type: 1,
                    content: {"socket_sms_type":4},
                    timestamp: ObjectUtil.timestampToLong(message.timestamp),
                    type: message.content_type,          // legacy support
                    name: message.sender_name,
                    patient_name:message.patient_name,
                    patient_age:message.patient_age,
                    patient_sex:message.patient_sex,
                    extend:message.extend
                });
            }
        }
    }
    /**
     * 医疗云 医生外层新消息
     * @param doctorId
     * @param message
     * @param response
     */
    static cloudSendMDTSocketMessageToDoctor(doctorId, message,response) {
        log.info("doctor======="+doctorId)
        // let doctorMDTClient = clientCache.findByIdAndType("pcim_"+doctorId,SOCKET_TYPES.PCIM_DOCTOR);
        let doctorSYSTEMClient = clientCache.findByIdAndType("pc_system_"+doctorId,SOCKET_TYPES.PC_DOCTOR_SYSTEM);
        let doctorAPPSYSTEMClient = clientCache.findByIdAndType("doctor_system_"+doctorId,SOCKET_TYPES.DOCTOR_SYSTEM);
        //外层
        if(!doctorSYSTEMClient){
            log.warn("target system doctor is not online!");
            return null;
        }else{
            if (message.content_type==CONTENT_TYPES.emergencyAssistance){
                doctorSYSTEMClient.socket.emit('message', {
                    session_id:message.session_id,
                    sender_name: message.sender_name,
                    order_id:message.order_id,
                    type: message.content_type,
                    extend:message.extend
                });
            }else {
                doctorSYSTEMClient.socket.emit('message', {
                    id: message.id,
                    session_id: 'system',
                    sender_id: message.sender_id,
                    sender_name: message.sender_name,
                    content_type: 1,
                    content: {"socket_sms_type":4},
                    timestamp: ObjectUtil.timestampToLong(message.timestamp),
                    type: message.content_type,          // legacy support
                    name: message.sender_name,
                    patient_name:message.patient_name,
                    patient_age:message.patient_age,
                    patient_sex:message.patient_sex,
                    extend:message.extend
                });
            }
        }
        if(!doctorAPPSYSTEMClient){
            log.warn("target system app doctor is not online!");
            return null;
        }else{
            if (message.content_type+""==CONTENT_TYPES.emergencyAssistance){
                doctorAPPSYSTEMClient.socket.emit('message', {
                    session_id:message.session_id,
                    sender_name: message.sender_name,
                    order_id:message.order_id,
                    type: message.content_type,
                    extend:message.extend
                });
            }else {
                doctorAPPSYSTEMClient.socket.emit('message', {
                    id: message.id,
                    session_id: 'system',
                    sender_id: message.sender_id,
                    sender_name: message.sender_name,
                    content_type: 1,
                    content: {"socket_sms_type":4},
                    timestamp: ObjectUtil.timestampToLong(message.timestamp),
                    type: message.content_type,          // legacy support
                    name: message.sender_name,
                    patient_name:message.patient_name,
                    patient_age:message.patient_age,
                    patient_sex:message.patient_sex,
                    extend:message.extend
                });
            }
        }
        function callback(err, res) {
            if (err) {
                handler != null ? handler(err, res) : ModelUtil.emitError(self.eventEmitter, err);
            } else {
                if (null == res) {
                    handler != null ? handler(err, res) : ModelUtil.emitOK(self.eventEmitter, {});
                } else {
                    let ended = res[0].status == TOPIC_STATUS.ENDED;
                    handler != null ? handler(err, res) : ModelUtil.emitOK(self.eventEmitter, res[0]);
                }
            }
        }
    }

+ 3 - 3
src/server/util/controller.util.js

@ -15,15 +15,15 @@ class ControllerUtil {
    constructor(){}
    static regModelEventHandler(model, response) {
        model.on(MODEL_EVENTS.OK, function (data) {
        model.bind(MODEL_EVENTS.OK, function (data) {
            response.status(200).json(data);
        });
        model.on(MODEL_EVENTS.DataNotFound, function (data) {
        model.bind(MODEL_EVENTS.DataNotFound, function (data) {
            response.status(404).json(data);
        });
        model.on(MODEL_EVENTS.Error, function (data) {
        model.bind(MODEL_EVENTS.Error, function (data) {
            response.status(500).json(data);
        });
    }