package open.dolphin.relay; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.*; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import javax.swing.SwingWorker; import open.dolphin.client.ChartEventHandler; import open.dolphin.infomodel.ChartEventModel; import open.dolphin.infomodel.PatientVisitModel; import open.dolphin.project.Project; /** * フクダ電子心電図ファイリングFEV-70に患者情報を送る * * @author masuda, Masuda Naika */ public class FEV70Relay implements PropertyChangeListener { @Override public void propertyChange(PropertyChangeEvent pce) { if (!pce.getPropertyName().equals(ChartEventHandler.CHART_EVENT_PROP)) { return; } ChartEventModel evt = (ChartEventModel)pce.getNewValue(); if (evt.getEventType()!=ChartEventModel.PVT_ADD) { return; } final PatientVisitModel model = evt.getPatientVisitModel(); if (model==null) { return; } SwingWorker worker = new SwingWorker<Void, Void>() { @Override protected Void doInBackground() throws Exception { doRelay(model); return null; } }; worker.execute(); } private void doRelay(PatientVisitModel model) { try { // shared path String sharePath = Project.getString(Project.PVT_RELAY_DIRECTORY); if (!sharePath.endsWith(File.separator)) { sharePath = sharePath + File.separator; } // CSV data String patientId = model.getPatientModel().getPatientId(); String patientName = model.getPatientModel().getFullName(); String patientSex = "1"; if (model.getPatientModel().getGender().toLowerCase().startsWith("f")) { patientSex = "2"; } String patientBD = model.getPatientBirthday().replace("-", "/"); StringBuilder sb = new StringBuilder(); sb.append(patientId); sb.append(","); sb.append(patientName); sb.append(","); sb.append(patientSex); sb.append(","); sb.append(patientBD); sb.append(",,,,,,,,\n"); String pvtData = sb.toString(); List<String> lineData = new ArrayList<>(); lineData.add(pvtData); String fileName = "ID_" + patientId; String tmpName = fileName + ".cs_"; String destName = fileName + ".CSV"; Path destPath = Paths.get(sharePath, tmpName); Files.write(destPath, lineData, Charset.forName("SHIT-JIS")); Files.move(destPath, destPath.resolveSibling(destName)); } catch (Exception e) { e.printStackTrace(System.err); } } }