/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package open.dolphin.utilities.utility;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
/**
* FCR連携
* @author S.Oh@Life Sciences Computing Corporation.
*/
public class FCRLink {
private static final String FILE_NAME = "Ekarte.xml";
private static final String ELEMENT_ROOT = "imageinfo";
private static final String ELEMENT_PATIENTID = "patientid";
private static final String ELEMENT_STUDYDATE = "studydate";
private static final String ELEMENT_MODE = "mode";
private static final String ELEMENT_STARTSTUDYDATE = "startstudydate";
private static final String ELEMENT_ENDSTUDYDATE = "endstudydate";
private static final String MODE_IMAGE = "0";
private static final String MODE_LIST = "1";
private static final String XML_ENCODE = "Shift_JIS";
private String fullPath;
/**
* コンストラクタ
* @param path 出力パス
*/
public FCRLink(String path) {
StringBuilder sb = new StringBuilder();
sb.append(path);
if(path.endsWith(File.separator) == false) {
sb.append(File.separator).append(FILE_NAME);
}else{
sb.append(FILE_NAME);
}
fullPath = sb.toString();
}
/**
* リストの表示
* @param pID 患者ID
* @throws ParserConfigurationException
* @throws TransformerConfigurationException
* @throws TransformerException
*/
public void linkList(String pID) throws ParserConfigurationException, TransformerConfigurationException, TransformerException {
//outputXmlForFCR(pID, "", MODE_LIST);
outputTextForFCR(pID, "", MODE_LIST);
}
/**
* 画像の表示
* @param pID 患者ID
* @throws ParserConfigurationException
* @throws TransformerConfigurationException
* @throws TransformerException
*/
public void linkImage(String pID) throws ParserConfigurationException, TransformerConfigurationException, TransformerException {
//outputXmlForFCR(pID, "", MODE_IMAGE);
outputTextForFCR(pID, "", MODE_IMAGE);
}
/**
* 全画像の表示
* @param pID 患者ID
* @param date 日付
* @throws ParserConfigurationException
* @throws TransformerConfigurationException
* @throws TransformerException
*/
public void linkImage(String pID, String date) throws ParserConfigurationException, TransformerConfigurationException, TransformerException {
//outputXmlForFCR(pID, date, MODE_IMAGE);
outputTextForFCR(pID, date, MODE_IMAGE);
}
/**
* XMLファイルの作成
* @param pID 患者ID
* @param date 日付
* @param mode モード
* @throws ParserConfigurationException
* @throws TransformerConfigurationException
* @throws TransformerException
*/
private void outputXmlForFCR(String pID, String date, String mode) throws ParserConfigurationException, TransformerConfigurationException, TransformerException {
XmlReadWrite xml = new XmlReadWrite();
xml.create(ELEMENT_ROOT);
xml.addElement(xml.getRoot(), ELEMENT_PATIENTID, pID);
xml.addElement(xml.getRoot(), ELEMENT_STUDYDATE, date);
xml.addElement(xml.getRoot(), ELEMENT_MODE, mode);
xml.addElement(xml.getRoot(), ELEMENT_STARTSTUDYDATE, "");
xml.addElement(xml.getRoot(), ELEMENT_ENDSTUDYDATE, "");
xml.save(fullPath, XML_ENCODE);
}
/**
* XMLファイルの作成
* @param pID 患者ID
* @param date 日付
* @param mode モード
*/
private void outputTextForFCR(String pID, String date, String mode) {
FileOutputStream fos = null;
OutputStreamWriter osw = null;
try {
PrintWriter pw = null;
StringBuilder sb = new StringBuilder();
File file = new File(fullPath);
fos = new FileOutputStream(file);
osw = new OutputStreamWriter(fos, XML_ENCODE);
pw = new PrintWriter(osw);
sb.append("<?xml version=\"1.0\" encoding=\"").append(XML_ENCODE).append("\"?>");
sb.append("<imageinfo>");
sb.append("<patientid>").append(pID).append("</patientid>");
if(date == null || date.length() <= 0) {
sb.append("<studydate/>");
}else{
sb.append("<studydate>").append(date).append("</studydate>");
}
sb.append("<mode>").append(mode).append("</mode>");
sb.append("<startstudydate/>");
sb.append("<endstudydate/>");
sb.append("</imageinfo>");
pw.write(sb.toString());
pw.close();
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(FCRLink.class.getName()).log(Level.SEVERE, null, ex);
} catch (FileNotFoundException ex) {
Logger.getLogger(FCRLink.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
fos.close();
} catch (IOException ex) {
Logger.getLogger(FCRLink.class.getName()).log(Level.SEVERE, null, ex);
}
try {
osw.close();
} catch (IOException ex) {
Logger.getLogger(FCRLink.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}