package com.yihu.jw.entity.patient;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.iot.gateway.IdEntity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;

/**
 * 系统消息
 *
 * @author George
 */
@Entity
@Table(name = "wlyy_message")
public class Message extends IdEntity {
    private static final long serialVersionUID = -9034295139612066823L;

    private String code;// 消息标识
    private String receiver;// 消息接收人（微信平台为患者标识，医生APP平台为医生标识）
    private String receiverName;
    private String sender;// 消息发送人标识
    private String senderName;
    private String senderPhoto;
    private String data;// 群组标识\网络咨询标识\问卷随访标识\type=7时，data=teamCode
    private String title;// 消息标题
    private String content;// 消息内容
    /** type
     *  消息类型（1.是家庭签约信息  2.体征消息  3分配健管师 4.随访提醒 5.咨询回复提醒,6.续方咨询待审核提醒,7.续方消息待取药
     *  8.续方支付成功后团队长分配健管师,9线下调整完成,10意见反馈 11账号申诉，12.协同服务 13.孕检提醒 14.文章提交审核消息  15、健康文章审核结果
     *  16.专科医生申请签约消息,17、家庭医生转诊预约消息,18、专科医生共管通知，:19 受理提醒，20 待办工作提醒 21 服务进展提醒-已完成 22 服务进展提醒-未完成
     *  23 服务进展提醒-待完成 24 收到协同任务 25 在线助手已接收 26 在线助手已退回 27 协同服务已完成  28 居民生日提醒 29 康复计划-中止消息 30 健康文章审核不通过
     *  31 在线复诊咨询待审核提醒 33 续方支付完成提醒医生 34 远程协诊提醒医生 35疾病筛查通知
     *  101患者申请取消签约、102患者同意取消签约、103患者拒绝取消签约、104患者填写了血糖记录、105患者填写了血压记录、106患者填写了体重记录、
     *  107患者填写了腰围记录、108患者填写了运动记录、109患者填写了用药记录、110患者填写了饮食记录、111患者提交了问卷随访、112请求添加好友消息、
     *  113入群消息、114群解散消息、115踢出群消息、116新的网络咨询、117网络咨询追问、
     *  201医生拒绝签约、202医生同意签约、203医生申请取消签约、204医生同意取消签约、205医生拒绝取消签约、206新的问卷随访、207新的健康干预、
     *  208请求添加好友消息、209入群消息、210群解散消息、211踢出群消息、212聊天消息提醒、213群聊天消息、214医生回复了网络咨询、215请求添加为家人）
     *	301解绑消息 302解绑审核消息
     * 	401居民资质审核-调度员
     * 上门服务工单- 首页 -调度员：
     * 			402 服务工单派单（新增预约）403 代预约服务工单重新派单
     * 			404 服务工单拒单待重新派单
     * 上门服务工单-医生：
     * 			407 服务工单待接单
     * 上门服务工单-派单-实时工单消息-调度员：
     *          430 居民提交工单申请                -- 张三提交了服务工单12345678申请
     *          431 调度员派单（派给本社区医生）      -- 李四已将服务工单12345678指派给王五医生
     *          432 调度员拒单                      -- 李四拒绝了张三的服务工单12345678
     *          433 调度员派单（转给其他机构）        -- 李四已将服务工单12345678]转给中山医院
     *          434 医生接单                        -- 王五接受了服务工单12345678
     *          435 医生拒单                        -- 王五拒绝了服务工单12345678
     *          408居民资质审核-家医
     *          409 ca认证消息
     *  500 发起协同门诊
     *  600 病情跟踪
     */
    private Integer type;
    private Integer platform;// 消息平台，1微信端/患者端，2医生APP端
    private Integer state;// 消息状态，1已发送，0待发送，-1发送失败
    private Integer read;// 查看状态，1未读，0已读
    private Integer readonly;// 只读消息：1否，0是
    private Integer consultNum;//待回复咨询数
    private String sessionId;//im会话id
    private String sessionName;//im会话名称
    private Date czrq;// 消息时间
    private Date createTime;//创建时间，czrq会自动更新
    private String del;// 是否作废，1正常，0作废
    private String signStatus;//签约状态 如果是签约 1新的签约，2签约成功，3签约失败，4解约申请，5解约成功，6解约失败，7签约到期,8咨询提醒
    private String reason;
    private String over;//是否操作结束 是否操作结束 1否，0是
    private Double value1;// 当前值/收缩压，正数为高，负数为低
    private Double value2;// 上次值/舒张压，正数为高，负数为低
    //(type=14、15的时候，即健康文章消息类型，tzType表示健康文章发送给同个医生哪个角色下等同roleType)
    private String tzType;//体征类别
    private String tzCode;//体征code
    private Integer sex;//患者性别

    //业务关联code，type=6时为咨询code,type=7、8、9时为续方code type = 10\11时为申诉和反馈ID 12.协同服务code,14和15是文章审核功能是（0未认证1已认证2未通过）16.专科医生申请签约消息 301.为患者code 21.wlyy_specialist里的wlyy_rehabilitation_plan_detail的id
    //type=29时为wlyy_patient_rehabilitation_plan的id
    private String relationCode;
    private String prescriptionStatus;//type=6续方审核状态 0待审核，1审核通过，2审核失败，3居民取消|type=7续方状态 0待取药，1已取药

    private Integer isRefinementConsult;//是否为精选问答 0不是 1是

    private Integer refinementStatus;//精选问答认证结果 0未认证 1认证通过 2认证不通过

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getReceiver() {
        return receiver;
    }

    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }

    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getPlatform() {
        return platform;
    }

    public void setPlatform(Integer platform) {
        this.platform = platform;
    }

    @Column(name="consult_num")
    public Integer getConsultNum() {
        return consultNum;
    }

    public void setConsultNum(Integer consultNum) {
        this.consultNum = consultNum;
    }

    @Column(name="session_id")
    public String getSessionId() {
        return sessionId;
    }

    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }

    @Column(name="session_name")
    public String getSessionName() {
        return sessionName;
    }

    public void setSessionName(String sessionName) {
        this.sessionName = sessionName;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    @Column(name="has_read")
    public Integer getRead() {
        return read;
    }

    public void setRead(Integer read) {
        this.read = read;
    }

    public Integer getReadonly() {
        return readonly;
    }

    public void setReadonly(Integer readonly) {
        this.readonly = readonly;
    }

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCzrq() {
        return czrq;
    }

    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name="create_time")
    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getDel() {
        return del;
    }

    public void setDel(String del) {
        this.del = del;
    }

    @Column(name = "receiver_name", length = 200)
    public String getReceiverName() {
        return receiverName;
    }

    public void setReceiverName(String receiverName) {
        this.receiverName = receiverName;
    }

    @Column(name = "sender_name", length = 200)
    public String getSenderName() {
        return senderName;
    }

    public void setSenderName(String senderName) {
        this.senderName = senderName;
    }

    @Column(name = "sender_photo", length = 1000)
    public String getSenderPhoto() {
        return senderPhoto;
    }

    public void setSenderPhoto(String senderPhoto) {
        this.senderPhoto = senderPhoto;
    }

    @Column(name = "sign_status", length = 1000)
    public String getSignStatus() {
        return signStatus;
    }

    public void setSignStatus(String signStatus) {
        this.signStatus = signStatus;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public String getOver() {
        return over;
    }

    public void setOver(String over) {
        this.over = over;
    }

    public Double getValue1() {
        return value1;
    }

    public void setValue1(Double value1) {
        this.value1 = value1;
    }

    public Double getValue2() {
        return value2;
    }

    public void setValue2(Double value2) {
        this.value2 = value2;
    }

    @Column(name = "tz_type", length = 10)
    public String getTzType() {
        return tzType;
    }

    public void setTzType(String tzType) {
        this.tzType = tzType;
    }

    @Column(name = "tz_code", length = 100)
    public String getTzCode() {
        return tzCode;
    }

    public void setTzCode(String tzCode) {
        this.tzCode = tzCode;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getRelationCode() {
        return relationCode;
    }

    public void setRelationCode(String relationCode) {
        this.relationCode = relationCode;
    }

    public String getPrescriptionStatus() {
        return prescriptionStatus;
    }

    public void setPrescriptionStatus(String prescriptionStatus) {
        this.prescriptionStatus = prescriptionStatus;
    }

    public Integer getIsRefinementConsult() {
        return isRefinementConsult;
    }

    public void setIsRefinementConsult(Integer isRefinementConsult) {
        this.isRefinementConsult = isRefinementConsult;
    }

    public Integer getRefinementStatus() {
        return refinementStatus;
    }

    public void setRefinementStatus(Integer refinementStatus) {
        this.refinementStatus = refinementStatus;
    }
}
