package open.dolphin.delegater; import java.util.List; import open.dolphin.converter.NLaboModuleConverter; import open.dolphin.infomodel.*; import org.codehaus.jackson.map.ObjectMapper; /** * Labo 関連の Delegater クラス。 * * @author Kazushi Minagawa, Digital Globe, Inc. */ public final class LaboDelegater extends BusinessDelegater { //========================================================= // 新 LabMozule //========================================================= public List<PatientLiteModel> getConstrainedPatients(List<String> idList) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/lab/patient/"); for (String pid : idList) { sb.append(pid); sb.append(CAMMA); } int len = sb.length(); sb.setLength(len-1); String path = sb.toString(); // GET PatientLiteList result = null; try { result = getEasyJson(path, PatientLiteList.class); } catch (Exception e) { e.printStackTrace(System.err); } // List return result!=null ? result.getList() : null; } /** * 検査結果を追加する。 * @param value 追加する検査モジュール * @return * @throws java.lang.Exception */ public PatientModel putNLaboModule(NLaboModule value) throws Exception { // PATH String path = "/lab/module"; // Converter NLaboModuleConverter conv = new NLaboModuleConverter(); conv.setModel(value); // JSON ObjectMapper mapper = this.getSerializeMapper(); byte[] data = mapper.writeValueAsBytes(conv); // POST PatientModel patient = postEasyJson(path, data, PatientModel.class); return patient; } /** * ラボモジュールを検索する。 * @param patientId 対象患者のID * @param firstResult 取得結果リストの最初の番号 * @param maxResult 取得する件数の最大値 * @return * @throws java.lang.Exception */ public List<NLaboModule> getLaboTest(String patientId, int firstResult, int maxResult) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/lab/module/"); sb.append(patientId); sb.append(CAMMA); sb.append(String.valueOf(firstResult)); sb.append(CAMMA); sb.append(String.valueOf(maxResult)); String path = sb.toString(); // GET NLaboModuleList result = getEasyJson(path, NLaboModuleList.class); // List return result.getList(); } //s.oh^ 2013/09/18 ラボデータの高速化 public String getLaboTestCount(String pid) { // PATH String path = "/lab/module/count/"; path += pid; // GET String entityStr = getEasyText(path, String.class); return entityStr; } //s.oh$ /** * 指定された検査コードの結果を取得する。 * @param patientId 対象患者 * @param firstResult 全件数のなかで最初に返す番号 * @param maxResult 戻す最大件数 * @param itemCode 検索する検査コード * @return 検査結果項目を採取日で降順に格納したリスト * @throws java.lang.Exception */ public List<NLaboItem> getLaboTestItem(String patientId, int firstResult, int maxResult, String itemCode) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/lab/item/"); sb.append(patientId); sb.append(CAMMA); sb.append(String.valueOf(firstResult)); sb.append(CAMMA); sb.append(String.valueOf(maxResult)); sb.append(CAMMA); sb.append(itemCode); String path = sb.toString(); // GET NLaboItemList result = getEasyJson(path, NLaboItemList.class); // List return result.getList(); } // ラボデータの削除 2013/06/24 public int deleteLabTest(long moduleId) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/lab/module/"); sb.append(moduleId); String path = sb.toString(); // DELETE deleteEasy(path); // Count return 1; } }