package com.ynxbd.common.dao ;
import com.ynxbd.common.bean.Patient ;
import com.ynxbd.common.bean.PatientLink ;
import com.ynxbd.common.bean.enums.HCardTypeEnum ;
import com.ynxbd.common.config.db.DataBase ;
import java.util.ArrayList ;
import java.util.List ;
/ * *
* 患者表操作
*
* @Author wsq
* @Date 2020 / 9 / 25 11 : 08
* @Copyright @ 2020 云南新八达科技有限公司 All rights reserved .
* /
public class PatientDao {
/ * *
* 根据openid查询绑定健康卡的用户
*
* @param openid openid
* @return 患者集合
* /
public List < Patient > selectHealthCardListByOpenid ( String openid ) {
String sql = "select * from patientBase where openid= ? and deletedState = 0 and healthCardId is not null" ;
return DataBase . select ( sql , Patient . class , ps - > {
ps . setString ( 1 , openid ) ;
} ) ;
}
/ * *
* 根据openid查询患者
*
* @param openid openid
* @return 患者列表
* /
public List < Patient > selectListByToken ( String openid , String unionId ) {
if ( unionId = = null | | "" . equals ( unionId ) ) {
return selectListByOpenid ( openid ) ;
}
String sql = "select * from patientBase where openid = ? and deletedState = 0 order by isDefault desc" ;
return DataBase . select ( sql , Patient . class , ps - > {
ps . setString ( 1 , openid ) ;
} ) ;
}
/ * *
* 根据openid查询患者
*
* @param openid openid
* @return 患者列表
* /
public List < Patient > selectListByOpenid ( String openid ) {
String sql = "select * from patientBase where openid = ? and deletedState = 0 order by isDefault desc" ;
return DataBase . select ( sql , Patient . class , ps - > {
ps . setString ( 1 , openid ) ;
} ) ;
}
/ * *
* 根据openid查询患者 部分信息 用作外部对接
*
* @param openid openid
* @return 患者列表
* /
public List < PatientLink > selectPatientsByOpenid ( String openid ) {
String sql = "select OpenID,PatientID,Name,Sex,IDCardNo,Age,Birthday,Address,Nation from patientBase where openid = ? and deletedState = 0 order by isDefault desc" ;
return DataBase . select ( sql , PatientLink . class , ps - > {
ps . setString ( 1 , openid ) ;
} ) ;
}
/ * *
* 根据openid查询患者 部分信息 用作外部对接 不回传openId
*
* @param openid
* @return
* /
public List < PatientLink > selectPatientsByEncOpenid ( String openid ) {
String sql = "select PatientID,Name,Sex,IDCardNo,Age,Birthday,Address,Nation from patientBase where openid = ? and deletedState = 0 order by isDefault desc" ;
return DataBase . select ( sql , PatientLink . class , ps - > {
ps . setString ( 1 , openid ) ;
} ) ;
}
/ * *
* 根据身份证查询患者
*
* @param openid openid
* @param idCardNo 身份证号
* @return 患者信息
* /
public Patient selectByIdCardNo ( String openid , String idCardNo ) {
String sql = "select * from patientBase where openid= ? and idCardNo= ?" ;
List < Patient > resultList = DataBase . select ( sql , Patient . class , ps - > {
ps . setString ( 1 , openid ) ;
ps . setString ( 2 , idCardNo ) ;
} ) ;
return resultList . size ( ) > 0 ? resultList . get ( 0 ) : null ;
}
/ * *
* 根据身份证查询患者
*
* @param openid openid
* @param patientId 患者ID
* @return 患者信息
* /
public boolean hasPatient ( String openid , String patientId ) {
return selectByOpenidAndPatientId ( openid , patientId ) ! = null ;
}
/ * *
* 查询患者本人
*
* @param openid openid
* @return 患者信息
* /
public Patient selectMyself ( String openid ) {
String sql = "select * from patientBase where openid= ? and isMyself = 1" ;
List < Patient > resultList = DataBase . select ( sql , Patient . class , ps - > {
ps . setString ( 1 , openid ) ;
} ) ;
return ! resultList . isEmpty ( ) ? resultList . get ( 0 ) : null ;
}
/ * *
* 根据身份证查询患者
*
* @param openid openid
* @param patientId 患者ID
* @return 患者信息
* /
public Patient selectByOpenidAndPatientId ( String openid , String patientId ) {
String sql = "select * from patientBase where openid= ? and patientId= ? and deletedState = 0" ;
List < Patient > dataList = DataBase . select ( sql , Patient . class , ps - > {
ps . setString ( 1 , openid ) ;
ps . setString ( 2 , patientId ) ;
} ) ;
return ! dataList . isEmpty ( ) ? dataList . get ( 0 ) : null ;
}
/ * *
* 查询患者本人
*
* @param openId openId
* @return 患者信息
* /
public List < Patient > selectPatientsByOpenId ( String openId ) {
String sql = "select patientId, name, sex, birthday, idCardNo, tel from patientBase where openId= ? and deletedState = 0 order by isDefault desc" ;
return DataBase . select ( sql , Patient . class , ps - > {
ps . setString ( 1 , openId ) ;
} ) ;
}
/ * *
* 健康卡解绑
*
* @param openid openid
* @param patientId 身份证号
* @return 是否成功
* /
public boolean removePatient ( String openid , String patientId ) {
String sql = "update patientBase set updateTime=now(), deletedState=1 where openid=? and patientId=?" ;
return DataBase . update ( sql , ps - > {
ps . setString ( 1 , openid ) ;
ps . setString ( 2 , patientId ) ;
} ) > 0 ;
}
/ * *
* 更新用户信息
*
* @param openid openid
* @param idCardNo idCardNo
* @param healthCardId 健康卡id
* @param name 姓名
* @param nation 民族
* @param tel 电话
* @param address 地址
* @return 是否成功
* /
public boolean updateInfo ( String openid , String idCardNo , String patientId , String healthCardId , String name , String nation , String tel , String uuid , String address , String areaCode , String areaAddress ) {
String sql = "update patientBase set deletedState=0, healthCardId=?, name=?, nation=?, tel=?, address=?, uuid=?, areaCode=?, areaAddress=?, patientId=? where openid=? and idCardNo=?" ;
return DataBase . update ( sql , ps - > {
ps . setString ( 1 , healthCardId ) ;
ps . setString ( 2 , name ) ;
ps . setString ( 3 , nation ) ;
ps . setString ( 4 , tel ) ;
ps . setString ( 5 , address ) ;
ps . setString ( 6 , uuid ) ;
ps . setString ( 7 , areaCode ) ;
ps . setString ( 8 , areaAddress ) ;
ps . setString ( 9 , patientId ) ;
// 条件
ps . setString ( 10 , openid ) ;
ps . setString ( 11 , idCardNo ) ;
} ) > 0 ;
}
/ * *
* [ 患者 ] 绑定身份证 ( 成人 )
*
* @param healthCardId 健康卡ID
* @param openid openid
* @param patientId 患者ID
* @param hisTransNo hisTransNo
* @param name 姓名
* @param sex 性别
* @param idCardNo 身份证
* @param tel 电话
* @param address 地址
* @param birthday 生日
* @param nation 民族
* /
public boolean insertCard ( boolean isMyself , String healthCardId , String openid , String patientId , String hisTransNo ,
String name , String sex , String idCardNo , HCardTypeEnum cardTypeEnum , String birthday , String age ,
String nation , String tel , String uuid , String address , String areaCode , String areaAddress ) {
return insert ( isMyself , healthCardId , openid , patientId , hisTransNo , name , sex , idCardNo , cardTypeEnum , birthday , age , nation , tel , uuid , address , areaCode , areaAddress , null , null , null , null , null , null ) ;
}
/ * *
* [ 患者 ] 绑定身份证
*
* @param isMyself 是否为自己
* @param healthCardId 健康卡ID
* @param openid openid
* @param patientId 患者ID
* @param hisTransNo hisTransNo
* @param name 姓名
* @param sex 性别
* @param idCardNo 身份证
* @param cardTypeEnum 证件类型
* @param birthday 生日
* @param age 年龄
* @param address 详细地址
* @param nation 民族
* @param tel 电话
* @param uuid uuid
* @param areaCode 地区编码
* @param areaAddress 地区地址
* @param fName 父亲姓名
* @param fTel 父亲电话
* @param fIDCardNo 父亲身份证
* @param mName 母亲姓名
* @param mTel 母亲电话
* @param mIDCardNo 母亲身份证号
* @return bool
* /
public boolean insert ( boolean isMyself , String healthCardId , String openid , String patientId , String hisTransNo ,
String name , String sex , String idCardNo , HCardTypeEnum cardTypeEnum , String birthday , String age ,
String nation , String tel , String uuid , String address , String areaCode , String areaAddress ,
String fName , String fTel , String fIDCardNo ,
String mName , String mTel , String mIDCardNo ) {
String sql = "insert into patientBase(bindDate, openid, patientId, hisTransNo, name, sex, idCardNo, tel, birthday, nation, healthCardId, age, uuid, fatherName, fatherTel, fatherIDCardNo, motherName, motherTel, motherIDCardNo, address, areaCode, areaAddress, isMyself, cardType) " +
" values(now(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" ;
return DataBase . insert ( sql , ps - > {
ps . setString ( 1 , openid ) ;
ps . setString ( 2 , patientId ) ;
ps . setString ( 3 , hisTransNo ) ;
ps . setString ( 4 , name ) ;
ps . setString ( 5 , sex ) ;
ps . setString ( 6 , idCardNo ) ;
ps . setString ( 7 , tel ) ;
ps . setString ( 8 , birthday ) ;
ps . setString ( 9 , nation ) ;
ps . setString ( 10 , healthCardId ) ;
ps . setString ( 11 , age ) ;
ps . setString ( 12 , uuid ) ;
//
ps . setString ( 13 , fName ) ;
ps . setString ( 14 , fTel ) ;
ps . setString ( 15 , fIDCardNo ) ;
ps . setString ( 16 , mName ) ;
ps . setString ( 17 , mTel ) ;
ps . setString ( 18 , mIDCardNo ) ;
ps . setString ( 19 , address ) ;
ps . setString ( 20 , areaCode ) ;
ps . setString ( 21 , areaAddress ) ;
ps . setBoolean ( 22 , isMyself ) ;
ps . setString ( 23 , cardTypeEnum . WX_CODE ) ;
} ) > 0 ;
}
/ * *
* 查询所有未领取健康卡的用户信息 , 民族 、 电话不能为空 , 一次读取15条信息
* /
public List < Patient > selectPatient4BatchUpdateHealthCard ( ) {
String sql = "select * from patientBase where HealthCardID is null and ifNull(idCardNo,'') <> '' " +
"and ifNull(nation,'') <> '' and ifNull(tel, '') <> '' and callFlag=0 LIMIT 15" ;
return DataBase . select ( sql , Patient . class ) ;
}
/ * *
* 批量领卡后 , 更新健康卡ID
*
* @param healthCardId 健康卡id
* @param idCardNo 身份证
* /
public boolean updateHealthCard ( String healthCardId , String idCardNo ) {
String sql = "update patientBase set healthCardId = ? where idCardNo = ?" ;
return DataBase . update ( sql , ps - > {
ps . setString ( 1 , healthCardId ) ;
ps . setString ( 2 , idCardNo ) ;
} ) > 0 ;
}
/ * *
* 批量领卡调用标记 ( 领取成功与否都更新为1 )
*
* @param idCardNo 身份证
* @return
* /
public boolean updateCallFlag ( String idCardNo ) {
String sql = "update patientBase set callFlag = 1 where idCardNo = ?" ;
return DataBase . update ( sql , ps - > {
ps . setString ( 1 , idCardNo ) ;
} ) > 0 ;
}
public List < Patient > selectOpenIdsByPatientId ( String patientId ) {
List < Patient > dataList = DataBase . select ( "select bindDate, openid from patientBase where patientId= ? and deletedState = 0 and openid is not null and length(openid) > 20 order by bindDate desc" , Patient . class , ps - > {
ps . setString ( 1 , patientId ) ;
} ) ;
if ( dataList . isEmpty ( ) ) {
return new ArrayList < > ( ) ;
}
return dataList ;
}
public List < Patient > selectOpenIdsByCardNo ( String cardNo ) {
List < Patient > dataList = DataBase . select ( "select bindDate, openid from patientBase where idCardNo= ? and deletedState = 0 and openid is not null and length(openid) > 20 order by bindDate desc" , Patient . class , ps - > {
ps . setString ( 1 , cardNo ) ;
} ) ;
if ( dataList . isEmpty ( ) ) {
return new ArrayList < > ( ) ;
}
return dataList ;
}
public List < Patient > selectListByPatientId ( String patientId ) {
List < Patient > dataList = DataBase . select ( "select * from patientBase where patientId= ? and deletedState = 0 order by bindDate desc" , Patient . class , ps - > {
ps . setString ( 1 , patientId ) ;
} ) ;
if ( dataList . isEmpty ( ) ) {
return new ArrayList < > ( ) ;
}
return dataList ;
}
public boolean updateMyself ( String openid , String idCardNo , String patientId , String name , String address , String areaCode , String nation , String tel ) {
if ( idCardNo = = null ) {
return false ;
}
idCardNo = "'" + idCardNo + "'" ;
String sql = "update patientBase set isMyself = (CASE idCardNo WHEN " + idCardNo + " THEN 1 else 0 end)," +
" deletedState = (CASE idCardNo WHEN " + idCardNo + " THEN 0 else deletedState end)," +
" areaCode = (CASE idCardNo WHEN " + idCardNo + " THEN ? else areaCode end)," +
" address = (CASE idCardNo WHEN " + idCardNo + " THEN ? else address end)," +
" patientId = (CASE idCardNo WHEN " + idCardNo + " THEN ? else patientId end)," +
" name = (CASE idCardNo WHEN " + idCardNo + " THEN ? else name end)," +
" tel = (CASE idCardNo WHEN " + idCardNo + " THEN ? else tel end)," +
" nation = (CASE idCardNo WHEN " + idCardNo + " THEN ? else nation end)" +
" where openid = ?" ;
return DataBase . update ( sql , ps - > {
ps . setString ( 1 , areaCode ) ;
ps . setString ( 2 , address ) ;
ps . setString ( 3 , patientId ) ;
ps . setString ( 4 , name ) ;
ps . setString ( 5 , tel ) ;
ps . setString ( 6 , nation ) ;
//---------------------------------------
ps . setString ( 7 , openid ) ;
} ) > 0 ;
}
}