#ifndef DBFORRMATE_H
#define DBFORRMATE_H

#include <QDateTime>
#include <QVariantMap>
//用户信息
typedef struct
{
    uint32_t ID;                    //自增性ID,由系统分配控制
    QString name;                   //患者姓名 必填
    QString phone;                  //患者电话
    int sex;                        //0-男性 1-女性
    QDate birthday;                 //生日
    int bodyIndex;                  //训练部位选择 0-下肢  1-上肢 2-上下肢
    QString markMsg;                //备注信息
    int age;                        //患者年龄
}ST_PatientMsg;

//训练记录,
typedef struct
{
    QString UUID;
    int ID;                         //用户ID
    QDateTime startTime;            //开始训练时间-用于排序
    QString startTimeStr;           //训练时间字符串版-用于显示
    int trainTime;                  //训练时长 (min)
    int score;                      //游戏得分 距离*3
    QString bodyPart;               //训练部位
    QString trainMode;               //训练模式
}ST_TrainRecord;


//训练报告
typedef struct
{
    QString UUID;
    int ID;                 //系统ID
    QString name;           //患者姓名
    int sex;                //0-male 1-female
    QString phone;          //手机
    int age;                //年龄
    int trainMode;          //训练模式
    int bodyIndex;          //训练部位
    QString markMsg;        //备注
    int trainTime;          //本次训练时长(分钟)
    int leftBalance;        //左平衡
    int rightBalance;       //右平衡
    float upLimpLength;     //上肢距离
    float downLimpLength;   //下肢距离
    int activeTime;         //主动时间 /s
    int passiveTime;        //被动时间 /s
    int spasmTimes;         //痉挛次数
    float maxResistance;    //最大阻力
    float averangeResistance;//平均阻力
    float minResistance;     //最小阻力
    QString startTimeStr;    //训练时间 字符串版-查看检索
    int averageSpeed;     //平均速度
    int maxSpeed;        //最大速度
}ST_TrainReport;

typedef struct
{
    int ID;                   //训练用户的ID
    int trainLimp;            //训练肢体,0代表上肢、1代表下肢、2代表四肢
    int trainMode;            //训练模式
    int trainTime;            //训练时间
    int trainResistance;      //训练阻力
    int trainSpeed;           //训练速度
    int trainDirection;        //训练方向,0正向,1逆向
    int spasmProtect;         //痉挛保护
    int spasmLevel;           //痉挛等级
    int gameID;                 //游戏的ID
}ST_TrainParam;

//电刺激数据
typedef struct
{
    int deviceNo;     //设备号
    QString deviceMac;//设备Mac地址
}ST_BLEDevice;

extern ST_PatientMsg variantMapToPatientMsg(QVariantMap vMap);
extern ST_TrainReport variantMapToTrainReport(QVariantMap vMap);
extern ST_TrainRecord variantMapToTrainRecord(QVariantMap vMap);
extern ST_BLEDevice variantMapToBLEDevice(QVariantMap vMap);
extern ST_TrainParam variantMapToTrainParam(QVariantMap vMap);

extern QVariantMap patientMsgToVariantMap(const ST_PatientMsg&);
extern QVariantMap trainReportToVariantMap(const ST_TrainReport&);
extern QVariantMap trainRecordToVariantMap(const ST_TrainRecord&);
extern QVariantMap BLEDeviceToVariantMap(const ST_BLEDevice&);
extern QVariantMap TrainParamToVariantMap(const ST_TrainParam&);
#endif // DBFORRMATE_H