package open.dolphin.client; import java.util.Collection; import java.util.Date; import java.util.logging.Level; import open.dolphin.infomodel.*; import open.dolphin.message.ClaimHelper; import open.dolphin.message.MessageBuilder; import open.dolphin.project.Project; import open.dolphin.util.ZenkakuUtils; /** * Karte と Diagnosis の CLAIM を送る * KarteEditor の sendClaim を独立させた * DiagnosisDocument の CLAIM 送信部分もここにまとめた * @author pns */ public class ClaimSender implements IKarteSender { // Context private Chart context; // CLAIM 送信リスナ private ClaimMessageListener claimListener; //minagawa^ UUIDの変わりに保険情報モジュールを送信する private PVTHealthInsuranceModel insuranceToApply; // Logger private static final boolean DEBUG = false; private static final java.util.logging.Logger logger; static { logger = java.util.logging.Logger.getLogger(ClaimSender.class.getName()); logger.setLevel(DEBUG ? Level.FINE : Level.INFO); } private boolean send; public ClaimSender() { } @Override public Chart getContext() { return context; } @Override public void setContext(Chart context) { this.context = context; } @Override public void prepare(DocumentModel data) { //minagawa^ 2012-07 claimConnectionを追加 send = (Project.claimSenderIsClient() && data!=null && data.getDocInfoModel().isSendClaim()); if (send) { insuranceToApply = context.getHealthInsuranceToApply(data.getDocInfoModel().getHealthInsuranceGUID()); claimListener = context.getCLAIMListener(); } send = send && (insuranceToApply!=null); send = send && (claimListener!=null); } /** * DocumentModel の CLAIM 送信を行う。 * @param sendModel */ @Override public void send(DocumentModel sendModel) { //minagawa^ 2012-07 claimConnectionを追加 if (!send) { return; } // ヘルパークラスを生成しVelocityが使用するためのパラメータを設定する ClaimHelper helper = new ClaimHelper(); //minagawa^ //DocInfoModel docInfo = sendModel.getDocInfo(); DocInfoModel docInfo = sendModel.getDocInfoModel(); Collection<ModuleModel> modules = sendModel.getModules(); //minagawa$ //minagawa^ CLAIM送信 日をまたいだが、前日で送る必要がある場合等(予定カルテ対応) //String confirmedStr = ModelUtils.getDateTimeAsString(docInfo.getFirstConfirmDate()); Date sendDate = docInfo.getClaimDate()!=null ? docInfo.getClaimDate() : docInfo.getFirstConfirmDate(); String confirmedStr = ModelUtils.getDateTimeAsString(sendDate); helper.setConfirmDate(confirmedStr); //minagawa$ //--------------------------------------------- DG helper.setConfirmDate(confirmedStr); logger.finer(confirmedStr); String deptName = docInfo.getDepartmentName(); String deptCode = docInfo.getDepartmentCode(); String doctorName = docInfo.getAssignedDoctorName(); if (doctorName == null) { doctorName = Project.getUserModel().getCommonName(); } String doctorId = docInfo.getAssignedDoctorId(); if (doctorId == null) { doctorId = Project.getUserModel().getOrcaId()!=null ? Project.getUserModel().getOrcaId() : Project.getUserModel().getUserId(); } String jamriCode = docInfo.getJMARICode(); if (jamriCode == null) { jamriCode = Project.getString(Project.JMARI_CODE); } logger.finer(deptName); logger.finer(deptCode); logger.finer(doctorName); logger.finer(doctorId); logger.finer(jamriCode); helper.setCreatorDeptDesc(deptName); helper.setCreatorDept(deptCode); helper.setCreatorName(doctorName); helper.setCreatorId(doctorId); helper.setCreatorLicense(Project.getUserModel().getLicenseModel().getLicense()); helper.setJmariCode(jamriCode); helper.setFacilityName(Project.getUserModel().getFacilityModel().getFacilityName()); //DG ------------------------------------------- //helper.setPatientId(sendModel.getKarte().getPatient().getPatientId()); //helper.setPatientId(sendModel.getKarteBean().getPatientModel().getPatientId()); helper.setPatientId(context.getPatient().getPatientId()); //--------------------------------------------- DG helper.setGenerationPurpose(docInfo.getPurpose()); helper.setDocId(docInfo.getDocId()); helper.setHealthInsuranceGUID(docInfo.getHealthInsuranceGUID()); helper.setHealthInsuranceClassCode(docInfo.getHealthInsurance()); helper.setHealthInsuranceDesc(docInfo.getHealthInsuranceDesc()); //DG ----------------------------------------------- // 2010-11-10 UUIDの変わりに保険情報モジュールを送信する helper.setSelectedInsurance(insuranceToApply); //-------------------------------------------------- DG logger.finer(helper.getHealthInsuranceGUID()); logger.finer(helper.getHealthInsuranceClassCode()); logger.finer(helper.getHealthInsuranceDesc()); // 保存する KarteModel の全モジュールをチェックし // それが ClaimBundle ならヘルパーへ追加する for (ModuleModel module : modules) { IInfoModel m = module.getModel(); if (m instanceof ClaimBundle) { //DG----------------------------------- ClaimBundle bundle = (ClaimBundle) m; ClaimItem[] items = bundle.getClaimItem(); if (items!=null && items.length>0) { for (ClaimItem cl : items) { cl.setName(ZenkakuUtils.utf8Replace(cl.getName())); } } //-------------------------------------DG helper.addClaimBundle(bundle); } } MessageBuilder mb = new MessageBuilder(); String claimMessage = mb.build(helper); ClaimMessageEvent cvt = new ClaimMessageEvent(this); cvt.setClaimInstance(claimMessage); //DG ---------------------------------------------- //cvt.setPatientId(sendModel.getKarte().getPatient().getPatientId()); //cvt.setPatientName(sendModel.getKarte().getPatient().getFullName()); //cvt.setPatientSex(sendModel.getKarte().getPatient().getGender()); //cvt.setTitle(sendModel.getDocInfo().getTitle()); cvt.setPatientId(context.getPatient().getPatientId()); cvt.setPatientName(context.getPatient().getFullName()); cvt.setPatientSex(context.getPatient().getGender()); cvt.setTitle(sendModel.getDocInfoModel().getTitle()); //---------------------------------------------- DG cvt.setConfirmDate(confirmedStr); // debug 出力を行う logger.finer(cvt.getClaimInsutance()); claimListener.claimMessageEvent(cvt); } }