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$ }