123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568 |
- package service
-
- import (
- "Xcx_New/models"
- "crypto/aes"
- "crypto/cipher"
- "encoding/base64"
- "encoding/json"
- "errors"
- "fmt"
- "github.com/jinzhu/gorm"
- "time"
- )
-
- func GetXcxMobileInformation(mobile string) (*models.XcxAdminUserRole, error) {
- role := models.XcxAdminUserRole{}
-
- err := UserReadDB().Model(&role).Where("mobile = ? and status = 1", mobile).Find(&role).Error
- if err == gorm.ErrRecordNotFound {
- return nil, err
- }
-
- if err != nil {
- return nil, err
- }
- return &role, nil
- }
-
- func CreateXcxAdminUser(role models.XcxAdminUserRole) error {
-
- err := UserReadDB().Create(&role).Error
- return err
- }
-
- func GetLoginInfor(mobile string) (models.XcxAdminUserRole, error) {
- role := models.XcxAdminUserRole{}
- err := UserReadDB().Model(&role).Where("mobile = ? and status = 1", mobile).Find(&role).Error
- return role, err
- }
-
- func GetMobilePatientInfo(mobile string) (models.XcxPatients, error) {
-
- patients := models.XcxPatients{}
- err := XTReadDB().Model(&patients).Where("(phone = ? or home_telephone = ? ) and status = 1", mobile, mobile).Find(&patients).Error
- return patients, err
- }
-
- func GetPatientListByPatientId(id int64) (models.XcxPatients, error) {
-
- patients := models.XcxPatients{}
- err := XTReadDB().Model(&patients).Where("id = ? and status = 1", id).Find(&patients).Error
- return patients, err
- }
-
- func DecryptData(app_id, session_key, iv, encrypted_data string) (map[string]interface{}, error) {
-
- aesKey, err := base64.StdEncoding.DecodeString(session_key)
- if err != nil {
- return nil, err
- }
-
- ivKey, err := base64.StdEncoding.DecodeString(iv)
- if err != nil {
- return nil, err
- }
-
- decodeData, err := base64.StdEncoding.DecodeString(encrypted_data)
- if err != nil {
- return nil, err
- }
-
- dataBytes, err := AesDecrypt(decodeData, aesKey, ivKey)
-
- if err != nil {
- return nil, err
- }
-
- var result map[string]interface{}
- err = json.Unmarshal(dataBytes, &result)
-
- watermark := result["watermark"].(map[string]interface{})
- if watermark["appid"] != app_id {
- return nil, errors.New("Invalid appid data!")
- }
-
- return result, err
-
- }
-
- func AesDecrypt(crypted, key, iv []byte) ([]byte, error) {
- block, err := aes.NewCipher(key)
- fmt.Println("w2222", err)
- if err != nil {
- return nil, err
- }
-
- blockMode := cipher.NewCBCDecrypter(block, iv)
- origData := make([]byte, len(crypted))
- blockMode.CryptBlocks(origData, crypted)
-
- // 去除填充
- length := len(origData)
- unp := int(origData[length-1])
- return origData[:(length - unp)], nil
-
- }
-
- func GetFirstDateOfWeek() (weekMonday string) {
- now := time.Now()
- offset := int(time.Monday - now.Weekday())
- if offset > 0 {
- offset = -6
- }
- weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
- weekMonday = weekStartDate.Format("2006-01-02")
- return
- }
-
- func GetWeekDayOfWeek() (weekMonday string) {
- now := time.Now()
- offset := int(time.Monday - now.Weekday())
- if offset > 0 {
- offset = -6
- }
- weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
- weekMonday = weekStartDate.Format("2006-01-02")
- return
- }
-
- func GetMobilePatient(mobile string, idcard string) (*models.XcxPatients, error) {
-
- patient := models.XcxPatients{}
- err := XTReadDB().Model(&patient).Where("(phone = ? or relative_phone =?) and id_card_no =?", mobile, mobile, idcard).Find(&patient).Error
- //err := XTReadDB().Model(&patient).Where("id_card_no = ? and status = 1", mobile).Find(&patient).Error
- if err == gorm.ErrRecordNotFound {
- return nil, err
- }
-
- if err != nil {
- return nil, err
- }
- return &patient, nil
-
- }
-
- func GetMobilePatientOne(mobile string) (*models.XcxAdminUserRole, error) {
-
- patient := models.XcxAdminUserRole{}
- err := XTReadDB().Model(&patient).Where("mobile = ? and status = 1", mobile).Find(&patient).Error
- if err == gorm.ErrRecordNotFound {
- return nil, err
- }
-
- if err != nil {
- return nil, err
- }
- return &patient, nil
-
- }
-
- func Dncrypt(rawData, key, iv string) (string, error) {
- data, err := base64.StdEncoding.DecodeString(rawData)
- key_b, err_1 := base64.StdEncoding.DecodeString(key)
- iv_b, _ := base64.StdEncoding.DecodeString(iv)
- if err != nil {
- return "", err
- }
- if err_1 != nil {
- return "", err_1
- }
- dnData, err := AesCBCDncrypt(data, key_b, iv_b)
- if err != nil {
- return "", err
- }
- return string(dnData), nil
- }
-
- // 解密
- func AesCBCDncrypt(encryptData, key, iv []byte) ([]byte, error) {
- block, err := aes.NewCipher(key)
- if err != nil {
- panic(err)
- }
- blockSize := block.BlockSize()
- if len(encryptData) < blockSize {
- panic("ciphertext too short")
- }
- if len(encryptData)%blockSize != 0 {
- panic("ciphertext is not a multiple of the block size")
- }
- mode := cipher.NewCBCDecrypter(block, iv)
- mode.CryptBlocks(encryptData, encryptData)
- // 解填充
- encryptData = PKCS7UnPadding(encryptData)
- return encryptData, nil
- }
-
- //去除填充
- func PKCS7UnPadding(origData []byte) []byte {
- length := len(origData)
- unpadding := int(origData[length-1])
- if length-unpadding < 0 {
- return origData[:0]
- }
- fmt.Println("changdu", length)
- fmt.Println("data", unpadding)
- return origData[:(length - unpadding)]
- }
-
- func GetScheduleInfo(startime int64, endtime int64, patient_id int64) (schedule []*models.VmBloodSchedule, err error) {
-
- db := XTReadDB().Table("xt_schedule as x").Where("x.status = 1")
- table := XTReadDB().Table("xt_patients as t").Where("t.status = 1")
- fmt.Println(table)
-
- if startime > 0 {
- db = db.Where("x.schedule_date >=?", startime)
- }
- if endtime > 0 {
- db = db.Where("x.schedule_date <=?", endtime)
- }
- if patient_id > 0 {
- db = db.Where("x.patient_id = ?", patient_id)
- }
-
- err = db.Select("x.schedule_date,x.schedule_type,x.schedule_week,x.mode_id,t.name").Joins("left join xt_patients as t on t.id = x.patient_id").Scan(&schedule).Error
- return schedule, err
- }
-
- func GetTodayDialysis(recordDate int64, patient_id int64) (models.XcXDialysisOrder, error) {
-
- order := models.XcXDialysisOrder{}
- err := XTReadDB().Model(&order).Where("dialysis_date = ? and patient_id = ? and status = 1", recordDate, patient_id).Find(&order).Error
- return order, err
- }
-
- func GetTodayPrescription(recordDate int64, patient_id int64) (models.XcxXtDialysisPrescription, error) {
-
- prescription := models.XcxXtDialysisPrescription{}
- err := XTReadDB().Model(&prescription).Where("record_date = ? and patient_id = ? and status = 1", recordDate, patient_id).Find(&prescription).Error
- return prescription, err
- }
-
- func GetNextPatientSchedule(patient_id int64, dialysis_date int64) (models.BloodSchedule, error) {
- schedule := models.BloodSchedule{}
-
- //err := XTReadDB().Model(&schedule).Where("patient_id = ? and status = 1 and schedule_date>?", patient_id, dialysis_date).Order("schedule_date asc").First(&schedule).Error
- //return schedule, err
- db := XTReadDB().Table("xt_schedule as x").Where("x.status = 1")
- table := XTReadDB().Table("xt_device_zone as z").Where("z.status =1")
- tables := XTReadDB().Table("xt_device_number as n").Where("n.status =1")
- fmt.Println(table, tables)
- if patient_id > 0 {
- db = db.Where("x.patient_id = ?", patient_id)
- }
- if dialysis_date > 0 {
- db = db.Where("x.schedule_date >?", dialysis_date)
- }
- err := db.Select("x.patient_id,x.schedule_type,x.schedule_date,x.mode_id,z.name,n.number").Joins("left join xt_device_zone as z on z.id = x.partition_id").Joins("left join xt_device_number as n on n.id = x.bed_id").Order("x.schedule_date asc").Limit(1).Scan(&schedule).Error
- return schedule, err
- }
-
- func GetXcxPatientInfo(patient_id int64) (models.XcxPatients, error) {
-
- patients := models.XcxPatients{}
- err := XTReadDB().Model(&patients).Where("id = ? and status = 1", patient_id).Find(&patients).Error
- return patients, err
- }
-
- func GetOrgInfo(id int64) (models.XcxSgjUserOrg, error) {
- org := models.XcxSgjUserOrg{}
- err := UserReadDB().Model(&org).Where("id = ? and status= 1", id).Find(&org).Error
- return org, err
- }
-
- func GetEducationList(startime int64, endtime int64, patient_id int64) (treatment []*models.XcxTreatmentSummary, err error) {
-
- err = XTReadDB().Model(&treatment).Where("assessment_date>=? and assessment_date<=? and patient_id = ? and status =1", startime, endtime, patient_id).Order("assessment_date desc").Find(&treatment).Error
- return treatment, err
- }
-
- func GetDoctorAdviceConfig(orgid int64) (models.XcxDoctorAdviceConfig, error) {
-
- config := models.XcxDoctorAdviceConfig{}
- err := XTReadDB().Model(&config).Where("user_org_id = ? and status = 1", orgid).Find(&config).Error
- return config, err
- }
-
- func GetDoctorAdviceGroup(patient_id int64, startime int64, endtime int64) (advice []*models.XcxDoctorAdvice, err error) {
-
- err = XTReadDB().Where("patient_id = ? and advice_date >=? and advice_date<=? and status = 1", patient_id, startime, endtime).Group("advice_date").Order("advice_date desc").Find(&advice).Error
- return advice, err
- }
-
- func GetHisDoctorAdviceGroup(patient_id int64, startime int64, endtime int64) (advice []*models.XcxHisDoctorAdviceInfo, err error) {
- err = XTReadDB().Where("patient_id = ? and advice_date >=? and advice_date<=? and status = 1", patient_id, startime, endtime).Group("advice_date").Order("advice_date desc").Find(&advice).Error
- return advice, err
- }
-
- func GetDoctorAdvice(patient_id int64, startime int64, endtime int64) (advice []*models.XcxDoctorAdvice, err error) {
-
- err = XTReadDB().Where("patient_id = ? and advice_date >=? and advice_date<=? and status = 1", patient_id, startime, endtime).Find(&advice).Error
- return advice, err
- }
-
- func GetHisDoctorAdvice(patient_id int64, startime int64, endtime int64) (advice []*models.XcxHisDoctorAdviceInfo, err error) {
-
- err = XTReadDB().Where("patient_id = ? and advice_date >=? and advice_date<=? and status = 1", patient_id, startime, endtime).Find(&advice).Error
- return advice, err
- }
-
- // 用户排班信息
- func MobileGetSchedualDetailOne(orgID int64, patientID int64) (*MDialysisScheduleVM, error) {
- var vm MDialysisScheduleVM
- err := readDb.
- Table("xt_schedule").
- Preload("DeviceNumber", "status = 1 AND org_id = ?", orgID).
- Where("status = 1 AND user_org_id = ? AND patient_id = ?", orgID, patientID).
- First(&vm).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &vm, err
- }
-
- // 接诊评估
- func MobileGetReceiverTreatmentAccessRecordOne(orgID int64, patientID int64) (*models.ReceiveTreatmentAsses, error) {
- var record models.ReceiveTreatmentAsses
- err = readDb.Model(&models.ReceiveTreatmentAsses{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- // 透前评估
- func MobileGetPredialysisEvaluationOne(orgID int64, patientID int64) (*models.PredialysisEvaluation, error) {
- var record models.PredialysisEvaluation
- err := readDb.Model(&models.PredialysisEvaluation{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- // 获取 maxDate 之前一次的透前评估记录
- func MobileGetLastTimePredialysisEvaluationOne(orgID int64, patientID int64) (*models.PredialysisEvaluation, error) {
- var record models.PredialysisEvaluation
- err := readDb.Model(&models.PredialysisEvaluation{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Order("assessment_date desc").Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- func MobileGetDoctorAdvicesByGroupsOne(orgID int64, patientID int64) ([]*models.DoctorAdvice, error) {
- var records []*models.DoctorAdvice
- err := readDb.
- Model(&models.DoctorAdvice{}).
- Where("patient_id = ? and user_org_id = ? and status = 1 and (advice_type = 2 || advice_type = 3)", patientID, orgID).
- Select("id, user_org_id, patient_id, advice_type, advice_date, record_date, start_time, advice_name,advice_desc, reminder_date, drug_spec, drug_spec_unit, single_dose, single_dose_unit, prescribing_number, prescribing_number_unit, delivery_way, execution_frequency, advice_doctor, status, created_time,updated_time, advice_affirm, remark, stop_time, stop_reason, stop_doctor, stop_state, parent_id, execution_time, execution_staff, execution_state, checker, check_state, check_time, groupno,way,drug_id,drug_name_id, IF(parent_id > 0, parent_id, id) as advice_order").
- Order("start_time asc, groupno desc, advice_order desc, id asc").
- Scan(&records).Error
-
- if err != nil {
- return nil, err
- }
- return records, nil
- }
-
- // 透析记录
- func MobileGetSchedualDialysisRecordOne(orgID int64, patientID int64) (*models.DialysisOrder, error) {
- var record models.DialysisOrder
- err := readDb.Model(&models.DialysisOrder{}).Preload("DeviceNumber", "org_id = ? AND status = 1", orgID).Where("user_org_id = ? AND patient_id = ?", orgID, patientID).Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- // 双人核对
- func MobileGetDoubleCheckOne(orgID int64, patientID int64) (*models.DoubleCheck, error) {
- var record models.DoubleCheck
- err := readDb.Model(&models.DoubleCheck{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- // 透析监测记录
- func MobileGetMonitorRecordsOne(orgID int64, patientID int64) ([]*models.MonitoringRecord, error) {
- var records []*models.MonitoringRecord
- err := readDb.Model(&models.MonitoringRecord{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Order("operate_time asc").Last(&records).Error
- if err != nil {
- return nil, err
- }
- return records, nil
- }
-
- func MobileGetLastMonitorRecordOne(orgID int64, patientID int64) (*models.MonitoringRecord, error) {
- var record models.MonitoringRecord
- err := readDb.Model(&models.MonitoringRecord{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Order("operate_time desc").Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- // 透后评估
- func MobileGetAssessmentAfterDislysisOne(orgID int64, patientID int64) (*models.AssessmentAfterDislysis, error) {
- var record models.AssessmentAfterDislysis
- err := readDb.Model(&models.AssessmentAfterDislysis{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- // 治疗小结
- func MobileGetTreatmentSummaryOne(orgID int64, patientID int64) (*models.TreatmentSummary, error) {
- var record models.TreatmentSummary
- err := readDb.Model(&models.TreatmentSummary{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- // 透析处方
- func MobileGetDialysisPrescribeByModeIdSix(orgID int64, patientID int64, mode_id int64) (*models.DialysisPrescription, error) {
- var record models.DialysisPrescription
- err := readDb.Model(&models.DialysisPrescription{}).Where("patient_id = ? and user_org_id = ? and status = 1 AND mode_id = ?", patientID, orgID, mode_id).Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- func GetHisPrescriptionProjectsOne(user_org_id int64, patient_id int64) (projects []*models.HisPrescriptionProject, err error) {
- err = readDb.Model(&models.HisPrescriptionProject{}).Preload("HisProject", "status = 1").Preload("GoodInfo", "status = 1").Where("user_org_id = ? AND patient_id = ? AND status = 1", user_org_id, patient_id).Find(&projects).Error
- return
- }
-
- func GetDialyStockOutOne(orgid int64, patientId int64) (prepare []*models.XtDialysisBeforePrepare, err error) {
-
- db := XTReadDB().Table("dialysis_before_prepare as x").Where("x.status = 1")
- if orgid > 0 {
- db = db.Where("x.user_org_id = ?", orgid)
- }
-
- if patientId > 0 {
- db = db.Where("x.patient_id = ?", patientId)
- }
- err = db.Select("x.id,x.user_org_id,x.patient_id,x.record_date,x.good_id,x.good_type_id,x.count,x.commdity_code,t.specification_name").Joins("left join xt_good_information as t on t.id = x.good_id and t.org_id = ? and t.status = 1", orgid).Scan(&prepare).Error
- return prepare, err
- }
-
- func MobileGetDialysisPrescribeByModeIdFive(orgID int64, patientID int64) (*models.DialysisPrescription, error) {
- var record models.DialysisPrescription
- err := readDb.Model(&models.DialysisPrescription{}).Where("patient_id = ? and user_org_id = ? and status = 1", patientID, orgID).Last(&record).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &record, nil
- }
-
- func GetAllHisDoctorAdviceOne(orgid int64, patientid int64) (his []*models.HisDoctorAdviceInfo, err error) {
- err = readDb.Model(&models.DialysisBeforePrepare{}).Where("patient_id = ? AND user_org_id = ? AND status=1", patientid, orgid).Last(&his).Error
- return
-
- }
-
- func GetDoctorName(orgid int64) (role []*models.XcxSgjUserAdminRole, err error) {
-
- err = UserReadDB().Where("org_id = ? and status = 1", orgid).Find(&role).Error
- return role, err
- }
-
- func GetPrescripionFieldConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
-
- err = XTReadDB().Model(&list).Where("org_id = ? and module = 1 ", orgid).Find(&list).Error
- return list, err
- }
-
- func GetReceiveTreatmentAssess(orgid int64) (list []*models.XcxFiledConfig, err error) {
-
- err = XTReadDB().Model(&list).Where("org_id = ? and module = 2 ", orgid).Find(&list).Error
- return list, err
- }
-
- func GetDialysisBefor(orgid int64) (list []*models.XcxFiledConfig, err error) {
- err = XTReadDB().Model(&list).Where("org_id = ? and module = 3", orgid).Find(&list).Error
- return list, err
- }
-
- func GetDialysisOrderConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
-
- err = XTReadDB().Model(&list).Where("org_id = ? and module = 7"+
- "", orgid).Find(&list).Error
- return list, err
- }
-
- func GetMonitorRecordConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
- err = XTReadDB().Model(&list).Where("org_id = ? and module = 4", orgid).Find(&list).Error
- return list, err
- }
-
- func GetDialysisAfeterConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
- err = XTReadDB().Model(&list).Where("org_id = ? and module = 5", orgid).Find(&list).Error
- return list, err
- }
-
- func GetTreatMentConfig(orgid int64) (list []*models.XcxFiledConfig, err error) {
- err = XTReadDB().Model(&list).Where("org_id = ? and module = 6", orgid).Find(&list).Error
- return list, err
- }
-
- func GetDataConfig(orgid int64) (list []*models.XcxDataConfig, err error) {
-
- err = XTReadDB().Model(&list).Where("org_id = ? and org_id = 0 and status = 1", orgid).Find(&list).Error
- return list, err
- }
|