package open.dolphin.adm20.converter; import java.util.ArrayList; import java.util.List; import open.dolphin.infomodel.*; /** * IDocument2 * * 2014/02/06 iPadのFreeText対応 * @author S.Oh@Life Sciences Computing Corporation. */ public class IDocument2 implements java.io.Serializable { // PK private long id; // 確定日時 Date private String confirmed; // 記録の有効開始日時(最初に確定した日)Date private String started; // 記録の終了日時(有効ではなくなった日)Date private String ended; // 記録日時 Date private String recorded; // 親エントリーの PK private long linkId; // 親エントリーとの関係 private String linkRelation; // エントリーのステータス(Final,Modifyed等) private String status; // 記録責任者(システムの利用者) private UserModel userModel; private IUserModel iuser; // カルテへの外部参照 private KarteBean karteBean; // docInfo 変換 private IDocInfo docInfo; // SOA ProgressCourse 変換 private IProgressCourseModule2 soaProgressCourse; // P ProgressCourse 変換 private IProgressCourseModule2 ptextProgressCourse; // 20131206 // SchemaModel 変換 private List<ISchemaModel> schema; // JClaimBundle private List<IBundleModule> bundles; private List<IAttachmentModel> attachments; public IDocument2() { docInfo = new IDocInfo(); } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getConfirmed() { return confirmed; } public void setConfirmed(String confirmed) { this.confirmed = confirmed; } public String getStarted() { return started; } public void setStarted(String started) { this.started = started; } public String getEnded() { return ended; } public void setEnded(String ended) { this.ended = ended; } public String getRecorded() { return recorded; } public void setRecorded(String recorded) { this.recorded = recorded; } public long getLinkId() { return linkId; } public void setLinkId(long linkId) { this.linkId = linkId; } public String getLinkRelation() { return linkRelation; } public void setLinkRelation(String linkRelation) { this.linkRelation = linkRelation; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public UserModel getUserModel() { return userModel; } public void setUserModel(UserModel userModel) { this.userModel = userModel; } public IUserModel getIuser() { return iuser; } public void setIuser(IUserModel iuser) { this.iuser = iuser; } public KarteBean getKarteBean() { return karteBean; } public void setKarteBean(KarteBean karteBean) { this.karteBean = karteBean; } public IDocInfo getDocInfo() { return docInfo; } public void setDocInfo(IDocInfo docInfo) { this.docInfo = docInfo; } public IProgressCourseModule2 getSoaProgressCourse() { return soaProgressCourse; } public void setSoaProgressCourse(IProgressCourseModule2 soaProgressCourse) { this.soaProgressCourse = soaProgressCourse; } // 20131206 add funabashi public IProgressCourseModule2 getPtextProgressCourse() { return ptextProgressCourse; } // 20131206 add funabashi public void setPtextProgressCourse(IProgressCourseModule2 pProgressCourse) { this.ptextProgressCourse = pProgressCourse; } public List<IBundleModule> getBundles() { return bundles; } public void setBundles(List<IBundleModule> bundles) { this.bundles = bundles; } public List<ISchemaModel> getSchema() { return schema; } public void setSchema(List<ISchemaModel> schemas) { this.schema = schemas; } public List<IAttachmentModel> getAttachment() { return attachments; } public void setAttachment(List<IAttachmentModel> attachments) { this.attachments = attachments; } // S.Oh 2014/02/06 Add End public void fromModel(DocumentModel model) { this.setId(model.getId()); this.setStarted(IOSHelper.toDateStr(model.getStarted())); this.setConfirmed(IOSHelper.toDateStr(model.getConfirmed())); this.setRecorded(IOSHelper.toDateStr(model.getRecorded())); this.setEnded(IOSHelper.toDateStr(model.getEnded())); this.setLinkId(model.getLinkId()); this.setLinkRelation(model.getLinkRelation()); this.setStatus(model.getStatus()); // 変換なし //this.setKarteBean(model.getKarteBean()); //this.setUserModel(model.getUserModel()); // DocInfo IDocInfo info = new IDocInfo(); info.fromModel(model.getDocInfoModel()); this.setDocInfo(info); // Module ModuleModel soa = null; ModuleModel p = null; // 20131206 add funabashi if (model.getModules()!=null && model.getModules().size()>0) { List<IBundleModule> list = new ArrayList(); for (ModuleModel module : model.getModules()) { //System.err.println(module.getModuleInfoBean().getEntity()); //System.err.println(module.getModuleInfoBean().getStampRole()); if (module.getModuleInfoBean().getEntity().equals(IInfoModel.MODULE_PROGRESS_COURSE)) { if (module.getModuleInfoBean().getStampRole().equals(IInfoModel.ROLE_SOA_SPEC)) { soa = module; } else if(module.getModuleInfoBean().getStampRole().equals(IInfoModel.ROLE_P_SPEC)) { p = module; // 20131206 add funabashi } else { continue; } } else { IBundleModule ib = new IBundleModule(); ib.fromModel(module); // trick if (module.getModel() instanceof BundleDolphin) { BundleDolphin bd = (BundleDolphin)module.getModel(); ib.getModel().setOrderName(bd.getOrderName()); } else { ib.getModel().setOrderName(module.getModuleInfoBean().getEntity()); } list.add(ib); } } if (!list.isEmpty()) { this.setBundles(list); } } // soa if (soa!=null) { IProgressCourseModule2 ip = new IProgressCourseModule2(); ip.fromModel(soa); this.setSoaProgressCourse(ip); } // p freeText add 20131206 funabashi if(p!=null){ IProgressCourseModule2 ip = new IProgressCourseModule2(); ip.fromModel(p); this.setPtextProgressCourse(ip); } // Schema if (model.getSchema()!=null) { List<ISchemaModel> list = new ArrayList(); this.setSchema(list); for (SchemaModel s : model.getSchema()) { // 変換 ISchemaModel is = new ISchemaModel(); is.fromModel(s); list.add(is); } } if(model.getAttachment() != null) { List<IAttachmentModel> list = new ArrayList(); this.setAttachment(list); for(AttachmentModel a : model.getAttachment()) { IAttachmentModel ia = new IAttachmentModel(); ia.fromModel(a); list.add(ia); } } //minagawa^ カルテのタイトルへ表示 if (model.getUserModel()!=null) { IUserModel u = new IUserModel(); u.setModel(model.getUserModel()); this.setIuser(u); } //mingawa$ } /** * iOSからIDocumentのJSONが送信される。  * パースしたIDocumentをDocumentModelへ変換する。 * @return DocumentModel */ public DocumentModel toModel() { //minagawa^ EHR Touch及び Visit Touch を削除する if (this.getSoaProgressCourse()!=null && this.getSoaProgressCourse().getModel()!=null) { String freeText = this.getSoaProgressCourse().getModel().getFreeText(); if (freeText.equals("EHR Touch") || freeText.equals("Visit Touch")) { this.getSoaProgressCourse().getModel().setFreeText(""); } } //minagawa$ DocumentModel ret = new DocumentModel(); // pk ret.setId(this.getId()); // 確定日 Date ret.setConfirmed(IOSHelper.toDate(this.getConfirmed())); // 開始日 Date ret.setStarted(IOSHelper.toDate(this.getStarted())); // 終了日 Date ret.setEnded(IOSHelper.toDate(this.getEnded())); // 記録日 Date ret.setRecorded(IOSHelper.toDate(this.getRecorded())); // リンクpk ret.setLinkId(this.getLinkId()); // リンクの関連 ret.setLinkRelation(this.getLinkRelation()); // ステータス ret.setStatus(this.getStatus()); // UserModel 変換なし ret.setUserModel(this.getUserModel()); // KarteBean 変換なし ret.setKarte(this.getKarteBean()); // DocInfo 変換 ret.setDocInfoModel(this.docInfo.toModel()); int number = 0; // Schema if (this.getSchema()!=null && this.getSchema().size()>0) { for (ISchemaModel s : this.schema) { // 変換 SchemaModel sm = s.toModel(); // 関係構築 sm.setDocumentModel(ret); ret.addSchema(sm); } int len = this.getSchema().size(); StringBuilder sb = new StringBuilder(); sb.append("<section>"); if (this.getSoaProgressCourse()!=null && this.getSoaProgressCourse().getModel()!=null) { sb.append("<paragraph>"); sb.append("<content>"); sb.append("<text>"); sb.append(this.getSoaProgressCourse().getModel().getFreeText()); sb.append("</text>"); sb.append("</content>"); sb.append("<content><text>\n</text></content>"); // CR sb.append("</paragraph>"); } for (int i = 0; i < len; i++) { sb.append("<paragraph>"); sb.append("<content><text>\n</text></content>"); sb.append("</paragraph>"); sb.append("<paragraph>"); sb.append("<component component=").append("\"").append(i).append("\"").append(" name=\"schemaHolder\">").append("</component>"); sb.append("<content><text></text></content>"); sb.append("<content><text>\n</text></content>"); // CR sb.append("</paragraph>"); } sb.append("</section>"); String soaText = sb.toString(); //minagawa^ BUG SOAがない時は落ちる-iPhone側でdummy text 挿入 // freeText を変更 //this.getSoaProgressCourse().getModel().setFreeText(soaText); //minagawa$ // Modelへ変換する ModuleModel module = this.getSoaProgressCourse().toModel(); module.setDocumentModel(ret); module.getModuleInfoBean().setStampNumber(number++); ret.addModule(module); } else if (this.getSoaProgressCourse()!=null) { // freeText -> soaSpec //this.getSoaProgressCourse().getModel().toSoaSpec(); ModuleModel module = this.getSoaProgressCourse().toModel(); module.setDocumentModel(ret); module.getModuleInfoBean().setStampNumber(number++); ret.addModule(module); } // PModule //s.oh^ 2013/12/09 //if (this.getBundles()!=null && this.getBundles().size()>0) { if(this.docInfo != null && this.docInfo.getDocType() != null && this.docInfo.getDocType().equals(IInfoModel.DOCTYPE_S_KARTE)) { // s_karteここ // 今は何もしない }else if (this.getBundles()!=null && this.getBundles().size()>0) { //s.oh$ for (IBundleModule bundle : this.bundles) { // 変換 ModuleModel module = bundle.toModel(); //System.err.println(module.toString()); // 関係構築 module.setDocumentModel(ret); module.getModuleInfoBean().setStampNumber(number++); ret.addModule(module); } ModuleModel infoToSet = ret.getModules().get(0); // PSpecを追加する int len = this.getBundles().size(); StringBuilder sb = new StringBuilder(); sb.append("<section>"); for (int i = 0; i < len; i++) { // Stamp の間隔をあける if (i != 0) { // CR sb.append("<paragraph>"); sb.append("<content><text>\n</text></content>"); sb.append("</paragraph>"); } sb.append("<paragraph>"); sb.append("<component component=").append("\"").append(i).append("\"").append(" name=\"stampHolder\">").append("</component>"); sb.append("<content><text></text></content>"); sb.append("<content><text>\n</text></content>"); sb.append("</paragraph>"); } // funabashi insert start 20131206 System.out.println(this.ptextProgressCourse); if(this.ptextProgressCourse!=null){ sb.append("<paragraph>"); sb.append("<content><text>"); sb.append(this.ptextProgressCourse.getModel().getFreeText()); sb.append("</text></content>"); sb.append("</paragraph>"); } // funabashi insert end 20131206 sb.append("</section>"); String pText = sb.toString(); ProgressCourse pProgress = new ProgressCourse(); //pProgress.setFreeText(pText); if(this.ptextProgressCourse != null && this.ptextProgressCourse.getModel() != null && this.ptextProgressCourse.getModel().getFreeText().length() > 0) { pProgress.setFreeText(this.ptextProgressCourse.getModel().getFreeText()); } ModuleModel pSpecModule = new ModuleModel(); pSpecModule.setBeanBytes(IOSHelper.toXMLBytes(pProgress)); pSpecModule.setConfirmed(infoToSet.getConfirmed()); pSpecModule.setStarted(infoToSet.getStarted()); pSpecModule.setRecorded(infoToSet.getRecorded()); pSpecModule.setStatus(infoToSet.getStatus()); pSpecModule.setUserModel(infoToSet.getUserModel()); pSpecModule.setKarteBean(infoToSet.getKarteBean()); pSpecModule.getModuleInfoBean().setStampName("progressCourse"); pSpecModule.getModuleInfoBean().setStampRole("pSpec"); pSpecModule.getModuleInfoBean().setEntity("progressCourse"); pSpecModule.getModuleInfoBean().setStampNumber(number++); pSpecModule.setDocumentModel(ret); ret.addModule(pSpecModule); } // modules==0 else { StringBuilder sb = new StringBuilder(); sb.append("<section>"); sb.append("<paragraph>"); //sb.append("<content><text>\n</text></content>"); // del 20131206 funabashi // funabashi insert start 20131206 sb.append("<content><text>"); sb.append((this.ptextProgressCourse!=null) ? this.ptextProgressCourse.getModel().getFreeText() : "\n"); sb.append("</text></content>"); // funabashi insert end 20131206 sb.append("</paragraph>"); sb.append("</section>"); String pText = sb.toString(); ProgressCourse pProgress = new ProgressCourse(); //pProgress.setFreeText(pText); if(this.ptextProgressCourse != null && this.ptextProgressCourse.getModel() != null && this.ptextProgressCourse.getModel().getFreeText().length() > 0) { pProgress.setFreeText(this.ptextProgressCourse.getModel().getFreeText()); } ModuleModel pSpecModule = new ModuleModel(); pSpecModule.setBeanBytes(IOSHelper.toXMLBytes(pProgress)); pSpecModule.setConfirmed(ret.getConfirmed()); pSpecModule.setStarted(ret.getStarted()); pSpecModule.setRecorded(ret.getRecorded()); pSpecModule.setStatus(ret.getStatus()); pSpecModule.setUserModel(ret.getUserModel()); pSpecModule.setKarteBean(ret.getKarteBean()); pSpecModule.getModuleInfoBean().setStampName("progressCourse"); pSpecModule.getModuleInfoBean().setStampRole("pSpec"); pSpecModule.getModuleInfoBean().setEntity("progressCourse"); pSpecModule.getModuleInfoBean().setStampNumber(0); pSpecModule.setDocumentModel(ret); ret.addModule(pSpecModule); } return ret; } }