package open.dolphin.infomodel; import javax.persistence.*; /** * 診断履歴クラス。 * * @author Kazushi Minagawa, Digital Globe,Inc. */ @Entity @Table(name = "d_diagnosis") public class RegisteredDiagnosisModel extends KarteEntryBean implements java.io.Serializable { // 疾患名 @Column(nullable=false) private String diagnosis; // 疾患コード private String diagnosisCode; // 疾患コード体系名 private String diagnosisCodeSystem; // 病名分類モデル @Embedded private DiagnosisCategoryModel diagnosisCategoryModel; // 転帰モデル @Embedded private DiagnosisOutcomeModel diagnosisOutcomeModel; // 疾患の初診日 private String firstEncounterDate; // 関連健康保険情報 private String relatedHealthInsurance; // 患者情報 @Transient private PatientLiteModel patientLiteModel; // 担当医情報(=ログインユーザー) @Transient private UserLiteModel userLiteModel; //s.oh^ 2014/03/13 傷病名削除診療科対応 private String department; private String departmentDesc; //s.oh$ /** * Creates new RegisteredDiagnosisModule */ public RegisteredDiagnosisModel() { } /** * 有効なモデルかどうかを返す。 * @return 有効なモデルの時 true */ public boolean isValidMML() { return getDiagnosis() != null ? true : false; } /** * 疾患名を返す。 * @return 疾患名 */ public String getDiagnosis() { return diagnosis; } /** * 疾患名を設定する。 * @param diagnosis 疾患名 */ public void setDiagnosis(String diagnosis) { this.diagnosis = diagnosis; } /** * 疾患コードを返す。 * @return 疾患コード */ public String getDiagnosisCode() { return diagnosisCode; } /** * 疾患コードを設定する。 * @param diagnosisCode 疾患コード */ public void setDiagnosisCode(String diagnosisCode) { this.diagnosisCode = diagnosisCode; } /** * 疾患コード体系名を返す。 * @return 疾患コード体系名 */ public String getDiagnosisCodeSystem() { return diagnosisCodeSystem; } /** * 疾患コード体系名を設定する。 * @param diagnosisCodeSystem 疾患コード体系名 */ public void setDiagnosisCodeSystem(String diagnosisCodeSystem) { this.diagnosisCodeSystem = diagnosisCodeSystem; } /** * 分類名を返す。 * @return 分類名 */ public String getCategory() { return diagnosisCategoryModel != null ? diagnosisCategoryModel.getDiagnosisCategory() : null; } /** * 分類名を設定する。 * @param category 分類名 */ public void setCategory(String category) { if (diagnosisCategoryModel == null) { diagnosisCategoryModel = new DiagnosisCategoryModel(); } this.diagnosisCategoryModel.setDiagnosisCategory(category); } /** * 分類説明を返す。 * @return 分類説明 */ public String getCategoryDesc() { return diagnosisCategoryModel != null ? diagnosisCategoryModel.getDiagnosisCategoryDesc() : null; } /** * 分類説明を設定する。 * @param categoryDesc 分類説明 */ public void setCategoryDesc(String categoryDesc) { if (diagnosisCategoryModel == null) { diagnosisCategoryModel = new DiagnosisCategoryModel(); } this.diagnosisCategoryModel.setDiagnosisCategoryDesc(categoryDesc); } /** * 分類体系名を返す。 * @return 分類体系名 */ public String getCategoryCodeSys() { return diagnosisCategoryModel != null ? diagnosisCategoryModel.getDiagnosisCategoryCodeSys() : null; } /** * 分類体系名を設定する。 * @param categoryTable 分類体系名 */ public void setCategoryCodeSys(String categoryTable) { if (diagnosisCategoryModel == null) { diagnosisCategoryModel = new DiagnosisCategoryModel(); } this.diagnosisCategoryModel.setDiagnosisCategoryCodeSys(categoryTable); } /** * 疾患初診日を返す。 * @return 疾患初診日 */ public String getFirstEncounterDate() { return firstEncounterDate; } /** * 疾患初診日を設定する。 * @param firstEncounterDate 疾患初診日 */ public void setFirstEncounterDate(String firstEncounterDate) { this.firstEncounterDate = firstEncounterDate; } /** * 疾患開始日を返す。 * @return 疾患開始日 */ public String getStartDate() { if (getStarted() != null) { return ModelUtils.getDateAsString(getStarted()); } return null; } /** * 疾患開始日を設定する。 * @param startDate 疾患開始日 */ public void setStartDate(String startDate) { if (startDate != null) { int index = startDate.indexOf('T'); if (index < 0) { startDate += "T00:00:00"; } //System.out.println(startDate); setStarted(ModelUtils.getDateTimeAsObject(startDate)); } } /** * 疾患終了日を返す。 * @return 疾患終了日 */ public String getEndDate() { if (getEnded() != null) { return ModelUtils.getDateAsString(getEnded()); } return null; } /** * 疾患終了日を設定する。 * @param endDate 疾患終了日 */ public void setEndDate(String endDate) { if (endDate != null && (!endDate.equals(""))) { int index = endDate.indexOf('T'); if (index < 0) { endDate += "T00:00:00"; } setEnded(ModelUtils.getDateTimeAsObject(endDate)); } else { setEnded(null); } } /** * 転帰を返す。 * @return 転帰 */ public String getOutcome() { return diagnosisOutcomeModel != null ? diagnosisOutcomeModel.getOutcome() : null; } /** * 転帰を設定する。 * @param outcome 転帰 */ public void setOutcome(String outcome) { if (diagnosisOutcomeModel == null) { diagnosisOutcomeModel = new DiagnosisOutcomeModel(); } this.diagnosisOutcomeModel.setOutcome(outcome); } /** * 転帰説明を返す。 * @return 転帰説明 */ public String getOutcomeDesc() { return diagnosisOutcomeModel != null ? diagnosisOutcomeModel.getOutcomeDesc() : null; } /** * 転帰説明を設定する。 * @param outcomeDesc 転帰説明を設定 */ public void setOutcomeDesc(String outcomeDesc) { if (diagnosisOutcomeModel == null) { diagnosisOutcomeModel = new DiagnosisOutcomeModel(); } this.diagnosisOutcomeModel.setOutcomeDesc(outcomeDesc); } /** * 転帰体系を返す。 * @return 転帰体系 */ public String getOutcomeCodeSys() { return diagnosisOutcomeModel != null ? diagnosisOutcomeModel.getOutcomeCodeSys() : null; } /** * 転帰体系を設定する。 * @param outcomeTable */ public void setOutcomeCodeSys(String outcomeTable) { if (diagnosisOutcomeModel == null) { diagnosisOutcomeModel = new DiagnosisOutcomeModel(); } this.diagnosisOutcomeModel.setOutcomeCodeSys(outcomeTable); } /** * 関連健康保険情報を返す。 * @return 関連健康保険情報 */ public String getRelatedHealthInsurance() { return relatedHealthInsurance; } /** * 関連健康保険情報を設定する。 * @param relatedHealthInsurance 関連健康保険情報 */ public void setRelatedHealthInsurance(String relatedHealthInsurance) { this.relatedHealthInsurance = relatedHealthInsurance; } /** * カテゴリモデルを返す。 * @return カテゴリモデル */ public DiagnosisCategoryModel getDiagnosisCategoryModel() { return diagnosisCategoryModel; } /** * カテゴリモデルを設定する。 * @param diagnosisOutcomeModel カテゴリモデル */ public void setDiagnosisCategoryModel( DiagnosisCategoryModel diagnosisCategoryModel) { this.diagnosisCategoryModel = diagnosisCategoryModel; } /** * 転帰モデルを設定する。 * @return 転帰モデル */ public DiagnosisOutcomeModel getDiagnosisOutcomeModel() { return diagnosisOutcomeModel; } /** * 転帰モデルを返す。 * @param diagnosisOutcomeModel 転帰モデル */ public void setDiagnosisOutcomeModel( DiagnosisOutcomeModel diagnosisOutcomeModel) { this.diagnosisOutcomeModel = diagnosisOutcomeModel; } public PatientLiteModel getPatientLiteModel() { return patientLiteModel; } public void setPatientLiteModel(PatientLiteModel patientLiteModel) { this.patientLiteModel = patientLiteModel; } public UserLiteModel getUserLiteModel() { return userLiteModel; } public void setUserLiteModel(UserLiteModel userLiteModel) { this.userLiteModel = userLiteModel; } //s.oh^ 2014/03/13 傷病名削除診療科対応 public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getDepartmentDesc() { return departmentDesc; } public void setDepartmentDesc(String departmentDesc) { this.departmentDesc = departmentDesc; } //s.oh$ private static String[] splitDiagnosis(String diagnosis) { if (diagnosis == null) { return null; } String[] ret = null; try { ret = diagnosis.split("\\s*,\\s*"); } catch (Exception e) { } return ret; } public String getDiagnosisName() { String[] splits = splitDiagnosis(this.diagnosis); return (splits != null && splits.length == 2 && splits[0] != null) ? splits[0] : this.diagnosis; } public String getDiagnosisAlias() { String[] splits = splitDiagnosis(this.diagnosis); return (splits != null && splits.length == 2 && splits[1] != null) ? splits[1] : null; } public String getAliasOrName() { String[] aliasOrName = splitDiagnosis(this.diagnosis); if (aliasOrName != null && aliasOrName.length == 2 && aliasOrName[1] != null) { return aliasOrName[1]; } return this.diagnosis; } public String toClipboard() { StringBuilder sb = new StringBuilder(); sb.append(this.getDiagnosis()); if (this.getStartDate() != null) { sb.append(",").append("疾患開始日:").append(this.getStartDate()); } if (this.getEndDate() != null) { sb.append(",").append("疾患終了日:").append(this.getEndDate()); } return sb.toString(); } }