package open.dolphin.infomodel;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
/**
* PatientModel
*
* @author Minagawa,kazushi
* -
*/
@Entity
@Table(name = "d_patient")
public class PatientModel extends InfoModel implements java.io.Serializable {
//PK
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long id;
// 施設ID
@Column(nullable=false)
private String facilityId;
// 施設内の患者ID
@Column(nullable=false)
private String patientId;
// 姓
private String familyName;
// 名
private String givenName;
// 姓名
@Column(nullable=false)
private String fullName;
// 姓カナ
private String kanaFamilyName;
// 名カナ
private String kanaGivenName;
// 姓名カナ
private String kanaName;
// ローマ字姓
private String romanFamilyName;
// ローマ字名
private String romanGivenName;
// ローマ字姓名
private String romanName;
// 性別コード値
@Column(nullable=false)
private String gender;
// 性別表記
private String genderDesc;
// 性別コード体系
@Transient
private String genderCodeSys;
// 生年月日 yyyy-MM-dd
private String birthday;
// 国籍コード値
private String nationality;
// 国籍表記
@Transient
private String nationalityDesc;
// 国籍コード体系
@Transient
private String nationalityCodeSys;
// 婚姻状況コード値
private String maritalStatus;
// 婚姻状況表記
@Transient
private String maritalStatusDesc;
// 婚姻状況コード体系
@Transient
private String maritalStatusCodeSys;
// JPEG形式写真データ
@Lob
private byte[] jpegPhoto;
// メモ
private String memo;
// 連絡先住所
@Embedded
private SimpleAddressModel address;
// 電話番号
private String telephone;
// 携帯番号
private String mobilePhone;
// 電子メールアドレス
private String email;
// 家族等
private String relations;
// 健康保険 DBへへ保存されているPVTHealthInsuranceModel
@OneToMany(mappedBy="patient", cascade={CascadeType.PERSIST, CascadeType.REMOVE})
private List<HealthInsuranceModel> healthInsurances;
// 健康保険 クライント等が使用
@Transient
private List<PVTHealthInsuranceModel> pvtHealthInsurances;
// 住所
@Transient
private Collection<AddressModel> addresses;
// 電話番号
@Transient
private Collection<TelephoneModel> telephones;
//masuda^
// 受診日。患者検索で使用
@Transient
private String pvtDate;
//s.oh^ 2014/08/19 施設患者一括表示機能
private String appMemo;
//s.oh$
//s.oh^ 2014/08/29 患者情報の追加
private String reserve1;
private String reserve2;
private String reserve3;
private String reserve4;
private String reserve5;
private String reserve6;
//s.oh$
public String getPvtDate() {
return pvtDate;
}
public void setPvtDate(String pvtDate) {
this.pvtDate = pvtDate;
}
public String getPvtDateTrimTime() {
return ModelUtils.trimTime(pvtDate);
}
public String getPvtDateTrimDate() {
return ModelUtils.trimDate(pvtDate);
}
//masuda^ 排他処理関連
private String ownerUUID; // 現在の所有者UUID
public void setOwnerUUID(String uuid) {
ownerUUID = uuid;
}
public String getOwnerUUID() {
return ownerUUID;
}
public boolean isOpened() {
return ownerUUID != null;
}
//masuda$
//minagawa^ 新患検索用に初診日=(カルテ作成日)を追加 for ios7 対応
//PC用コンバータでは不要
@Transient
private Date firstVisited;
public Date getFirstVisited() {
return firstVisited;
}
public void setFirstVisited(Date firstVisited) {
this.firstVisited = firstVisited;
}
//minagawa$
/** 患者オブジェクトを生成する。*/
public PatientModel() {
}
/**
* Database Pk を返す。
* @return Database Pk
*/
public long getId() {
return id;
}
/**
* Database Pk を設定する。
* @param id Database Pk
*/
public void setId(long id) {
this.id = id;
}
/**
* 施設IDを返す。
* @return 施設ID
*/
public String getFacilityId() {
return facilityId;
}
/**
* 施設IDを設定する。
* @param facilityId 施設ID
*/
public void setFacilityId(String facilityId) {
this.facilityId = facilityId;
}
/**
* 患者IDを設定する。
* @param patientId 患者ID
*/
public void setPatientId(String patientId) {
this.patientId = patientId;
}
/**
* 患者IDを返す。
* @return 患者ID
*/
public String getPatientId() {
return patientId;
}
/**
* 姓名を設定する。
* @param sirName 姓名
*/
public void setFamilyName(String sirName) {
this.familyName = sirName;
}
/**
* 姓名を返す。
* @return 姓名
*/
public String getFamilyName() {
return familyName;
}
/**
* 名前を設定する。
* @param givenName 名前
*/
public void setGivenName(String givenName) {
this.givenName = givenName;
}
/**
* 名前を返す。
* @return 名前
*/
public String getGivenName() {
return givenName;
}
/**
* フルネームを設定する。
* @param name フルネーム
*/
public void setFullName(String name) {
this.fullName = name;
}
/**
* フルネームを返す。
* @return フルネーム
*/
public String getFullName() {
return fullName;
}
/**
* カナ家族名を設定する。
* @param kanaSirName カナ家族名
*/
public void setKanaFamilyName(String kanaSirName) {
this.kanaFamilyName = kanaSirName;
}
/**
* カナ家族名を返す。
* @return カナ家族名
*/
public String getKanaFamilyName() {
return kanaFamilyName;
}
/**
* カナGivenName を設定する。
* @param kanaGivenName カナGivenName
*/
public void setKanaGivenName(String kanaGivenName) {
this.kanaGivenName = kanaGivenName;
}
/**
* カナGivenName を返す。
* @return カナGivenName
*/
public String getKanaGivenName() {
return kanaGivenName;
}
/**
* カナフルネームを設定する。
* @param kanaName カナフルネーム
*/
public void setKanaName(String kanaName) {
this.kanaName = kanaName;
}
/**
* カナフルネームを返す。
* @return カナフルネーム
*/
public String getKanaName() {
return kanaName;
}
/**
* ローマ字名字を設定する。
* @param romanSirName ローマ字名字
*/
public void setRomanFamilyName(String romanSirName) {
this.romanFamilyName = romanSirName;
}
/**
* ローマ字名字を返す。
* @return ローマ字名
*/
public String getRomanFamilyName() {
return romanFamilyName;
}
/**
* ローマ字名を設定する。
* @param romanGivenName ローマ字名
*/
public void setRomanGivenName(String romanGivenName) {
this.romanGivenName = romanGivenName;
}
/**
* ローマ字名を返す。
* @return ローマ字名
*/
public String getRomanGivenName() {
return romanGivenName;
}
/**
* ローマ字フルネームを設定する。
* @param romanName ローマ字フルネーム
*/
public void setRomanName(String romanName) {
this.romanName = romanName;
}
/**
* ローマ字フルネームを返す。
* @return ローマ字フルネーム
*/
public String getRomanName() {
return romanName;
}
/**
* 性別を設定する。
* @param gender 性別
*/
public void setGender(String gender) {
this.gender = gender;
}
/**
* 性別を返す。
* @return 性別
*/
public String getGender() {
return gender;
}
/**
* 性別説明を設定する。
* @param genderDesc 性別説明
*/
public void setGenderDesc(String genderDesc) {
this.genderDesc = genderDesc;
}
/**
* 性別説明を返す。
* @return 性別説明
*/
public String getGenderDesc() {
return genderDesc != null
? genderDesc
: ModelUtils.getGenderDesc(gender);
}
/**
* 性別説明体系を設定する。
* @param genderCodeSys 性別説明体系
*/
public void setGenderCodeSys(String genderCodeSys) {
this.genderCodeSys = genderCodeSys;
}
/**
* 性別説明体系を返す。
* @return 性別説明体系
*/
public String getGenderCodeSys() {
return genderCodeSys;
}
/**
* 生年月日を設定する。
* @param birthday 生年月日 yyyy-MM-dd
*/
public void setBirthday(String birthday) {
this.birthday = birthday;
}
/**
* 生年月日を返す。
* @return 生年月日 yyyy-MM-dd
*/
public String getBirthday() {
return birthday;
}
/**
* 年齢と生年月日を返す。
* @return age(yyyy-MM-dd)
*/
public String getAgeBirthday() {
return ModelUtils.getAgeBirthday(birthday);
}
/**
* 国籍を設定する。
* @param nationality 国籍
*/
public void setNationality(String nationality) {
this.nationality = nationality;
}
/**
* 国籍を返す。
* @return 国籍
*/
public String getNationality() {
return nationality;
}
/**
* 国籍説明を設定する。
* @param nationalityDesc 国籍説明
*/
public void setNationalityDesc(String nationalityDesc) {
this.nationalityDesc = nationalityDesc;
}
/**
* 国籍説明を返す。
* @return 国籍説明
*/
public String getNationalityDesc() {
return nationalityDesc;
}
/**
* 国籍体系を設定する。
* @param nationalityCodeSys 国籍体系
*/
public void setNationalityCodeSys(String nationalityCodeSys) {
this.nationalityCodeSys = nationalityCodeSys;
}
/**
* 国籍体系を返す。
* @return 国籍体系
*/
public String getNationalityCodeSys() {
return nationalityCodeSys;
}
/**
* 婚姻状況を設定する。
* @param maritalStatus 婚姻状況
*/
public void setMaritalStatus(String maritalStatus) {
this.maritalStatus = maritalStatus;
}
/**
* 婚姻状況を返す。
* @return 婚姻状況
*/
public String getMaritalStatus() {
return maritalStatus;
}
/**
* 婚姻状況説明を設定する。
* @param maritalStatusDesc 婚姻状況説明を設定する。
*/
public void setMaritalStatusDesc(String maritalStatusDesc) {
this.maritalStatusDesc = maritalStatusDesc;
}
/**
* 婚姻状況説明を返す。
* @return 婚姻状況説明
*/
public String getMaritalStatusDesc() {
return maritalStatusDesc;
}
/**
* 婚姻状況体系を設定する
* @param maritalStatusCodeSys 婚姻状況体系
*/
public void setMaritalStatusCodeSys(String maritalStatusCodeSys) {
this.maritalStatusCodeSys = maritalStatusCodeSys;
}
/**
* 婚姻状況体系を返す。
* @return 婚姻状況体系
*/
public String getMaritalStatusCodeSys() {
return maritalStatusCodeSys;
}
/**
* 写真を設定する。
* @param jpegPhoto JPEG 画像のバイト配列
*/
public void setJpegPhoto(byte[] jpegPhoto) {
this.jpegPhoto = jpegPhoto;
}
/**
* 写真を返す。
* @return JPEG 画像のバイト配列
*/
public byte[] getJpegPhoto() {
return jpegPhoto;
}
/**
* 患者メモを設定する。
* @param memo 患者メモ
*/
public void setMemo(String memo) {
this.memo = memo;
}
/**
* 患者メモを返す。
* @return 患者メモ
*/
public String getMemo() {
return memo;
}
/**
* 住所モデルを返す。
* @return 住所モエル
*/
public SimpleAddressModel getSimpleAddressModel() {
return address;
}
/**
* 住所モデルを設定する。
* @param address 住所モデル
*/
public void setSimpleAddressModel(SimpleAddressModel address) {
this.address = address;
}
/**
* 郵便番号を返す。
* @return 郵便番号
*/
public String contactZipCode() {
return (address!=null) ? address.getZipCode() : null;
}
/**
* 住所を返す。
* @return 住所
*/
public String contactAddress() {
return (address!=null) ? address.getAddress() : null;
}
/**
* 足場コード
* @return 住所
*/
public String getHomeAddress() {
return (address!=null) ? address.getAddress() : null;
}
/**
* 電話番号を返す。
* @return 電話番号
*/
public String getTelephone() {
return telephone;
}
/**
* 電話番号を設定する。
* @param telephone 電話番号
*/
public void setTelephone(String telephone) {
this.telephone = telephone;
}
/**
*携帯電話の番号を返す。
* @return 携帯電話の番号
*/
public String getMobilePhone() {
return mobilePhone;
}
/**
*携帯電話の番号を設定する。
*@param mobilePhone 携帯電話の番号
*/
public void setMobilePhone(String mobilePhone) {
this.mobilePhone = mobilePhone;
}
/**
* 電子メールアドレスを返す。
* @return 電子メールアドレス
*/
public String getEmail() {
return email;
}
/**
* 電子メールアドレスを設定する。
* @param email 電子メールアドレス
*/
public void setEmail(String email) {
this.email = email;
}
/**
* 健康保険を設定する。
* @param healthInsurances 健康保険
*/
public void setHealthInsurances(
List<HealthInsuranceModel> healthInsurances) {
this.healthInsurances = healthInsurances;
}
/**
* 健康保険を返す。
* @return 健康保険
*/
public List<HealthInsuranceModel> getHealthInsurances() {
return healthInsurances;
}
/**
* 健康保険を追加する。
* @param value 健康保険
*/
public void addHealthInsurance(HealthInsuranceModel value) {
if (healthInsurances == null) {
healthInsurances = new ArrayList<HealthInsuranceModel>(2);
}
healthInsurances.add(value);
}
public List<PVTHealthInsuranceModel> getPvtHealthInsurances() {
return pvtHealthInsurances;
}
public void setPvtHealthInsurances(
List<PVTHealthInsuranceModel> pvtHealthInsurances) {
this.pvtHealthInsurances = pvtHealthInsurances;
}
public void addPvtHealthInsurance(PVTHealthInsuranceModel model) {
if (pvtHealthInsurances == null) {
pvtHealthInsurances = new ArrayList<PVTHealthInsuranceModel>(2);
}
pvtHealthInsurances.add(model);
}
public Collection<AddressModel> getAddresses() {
return addresses;
}
public void setAddresses(Collection<AddressModel> addresses) {
this.addresses = addresses;
}
public void addAddress(AddressModel address) {
if (addresses == null) {
addresses = new ArrayList<AddressModel>(1);
}
addresses.add(address);
}
public Collection<TelephoneModel> getTelephones() {
return telephones;
}
public void setTelephones(Collection<TelephoneModel> telephones) {
this.telephones = telephones;
}
public void addTelephone(TelephoneModel telephone) {
if (telephones == null) {
telephones = new ArrayList<TelephoneModel>(1);
}
telephones.add(telephone);
}
//s.oh^ 2014/08/19 施設患者一括表示機能
public void setAppMemo(String appMemo) {
this.appMemo = appMemo;
}
public String getAppMemo() {
return appMemo;
}
//s.oh$
/**
* 患者簡易情報を返す。
*
* @return 患者簡易情報
*/
public PatientLiteModel patientAsLiteModel() {
PatientLiteModel model = new PatientLiteModel();
model.setPatientId(getPatientId());
model.setFullName(getFullName());
model.setKanaName(getKanaName());
model.setGender(getGender());
model.setGenderDesc(getGenderDesc());
model.setBirthday(getBirthday());
return model;
}
@Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + (int) (id ^ (id >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final PatientModel other = (PatientModel) obj;
if (id != other.id) {
return false;
}
return true;
}
//-------------------------------------------------------------
public SimpleAddressModel getAddress() {
return getSimpleAddressModel();
}
public void setAddress(SimpleAddressModel address) {
setSimpleAddressModel(address);
}
//-------------------------------------------------------------
public String getRelations() {
return relations;
}
public void setRelations(String relations) {
this.relations = relations;
}
//s.oh^ 2014/08/29 患者情報の追加
public String getReserve1() {
return reserve1;
}
public void setReserve1(String reserve1) {
this.reserve1 = reserve1;
}
public String getReserve2() {
return reserve2;
}
public void setReserve2(String reserve2) {
this.reserve2 = reserve2;
}
public String getReserve3() {
return reserve3;
}
public void setReserve3(String reserve3) {
this.reserve3 = reserve3;
}
public String getReserve4() {
return reserve4;
}
public void setReserve4(String reserve4) {
this.reserve4 = reserve4;
}
public String getReserve5() {
return reserve5;
}
public void setReserve5(String reserve5) {
this.reserve5 = reserve5;
}
public String getReserve6() {
return reserve6;
}
public void setReserve6(String reserve6) {
this.reserve6 = reserve6;
}
//s.oh$
}