package open.dolphin.delegater; import java.beans.XMLDecoder; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.ws.rs.core.MediaType; import open.dolphin.converter.DocumentModelConverter; import open.dolphin.converter.InteractionCodeListConverter; import open.dolphin.infomodel.*; import org.codehaus.jackson.map.ObjectMapper; /** * * @author kazushi Minagawa. */ public class OrcaRestDelegater extends BusinessDelegater implements OrcaDelegater { //------------------------------------------------------------- // 保険医療機関コード & JMARIコードの連結 //------------------------------------------------------------- @Override public String getFacilityCodeBy1001() throws Exception { // PATH String path = "/orca/facilitycode"; // GET String fcode = getEasyText(path, String.class); return fcode; } //------------------------------------------------------------------------- // 併用禁忌チェック // masuda 先生の SqlMiscDao からcheckInteractionポーティング。 //------------------------------------------------------------------------- @Override public List<DrugInteractionModel> checkInteraction(Collection<String> drug1, Collection<String> drug2) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/interaction"); String path = sb.toString(); // Wrapper List<String> codes1 = new ArrayList<>(drug1); List<String> codes2 = new ArrayList<>(drug2); InteractionCodeList warpper = new InteractionCodeList(); warpper.setCodes1(codes1); warpper.setCodes2(codes2); // Converter InteractionCodeListConverter conv = new InteractionCodeListConverter(); conv.setModel(warpper); // JSON ObjectMapper mapper = this.getSerializeMapper(); byte[] data = mapper.writeValueAsBytes(conv); // GET DrugInteractionList result = putEasyJson(path, MediaType.APPLICATION_JSON, data, DrugInteractionList.class); // LIST return result.getList(); } //------------------------------------------------------------- // マスター検索 //------------------------------------------------------------- @Override public List<TensuMaster> getTensuMasterByShinku(String shinku, String now) throws Exception { // ^ とる if (shinku.startsWith("^")) { shinku = shinku.substring(1); } // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/tensu/shinku/"); sb.append(shinku).append(CAMMA).append(now); String path = sb.toString(); // GET TensuList result = getEasyJson(path, TensuList.class); // List return result.getList(); } @Override public List<TensuMaster> getTensuMasterByName(String name, String now, boolean partialMatch) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/tensu/name/"); sb.append(name).append(CAMMA).append(now).append(CAMMA).append(String.valueOf(partialMatch)); String path = sb.toString(); // GET TensuList result = getEasyJson(path, TensuList.class); // List return result.getList(); } @Override public List<TensuMaster> getTensuMasterByCode(String regExp, String now) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/tensu/code/"); sb.append(regExp).append(CAMMA).append(now); String path = sb.toString(); // GET TensuList result = getEasyJson(path, TensuList.class); // List return result.getList(); } @Override public List<TensuMaster> getTensuMasterByTen(String ten, String now) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/tensu/ten/"); sb.append(ten).append(CAMMA).append(now); String path = sb.toString(); // GET TensuList result = getEasyJson(path, TensuList.class); // List return result.getList(); } @Override public List<DiseaseEntry> getDiseaseByName(String name, String now, boolean partialMatch) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/disease/name/"); sb.append(name).append(CAMMA).append(now); sb.append(CAMMA).append(String.valueOf(partialMatch)); String path = sb.toString(); // GET DiseaseList result = getEasyJson(path, DiseaseList.class); // List return result.getList(); } //------------------------------------------------------------- // 一般名検索 //------------------------------------------------------------- @Override public String getGeneralName(String code) throws Exception { // PATH String path = "/orca/general/" + code; // GET CodeNamePack result = getEasyJson(path, CodeNamePack.class); // Name return result.getName(); } //------------------------------------------------------------- // ORCA入力セット //------------------------------------------------------------- @Override public ArrayList<OrcaInputCd> getOrcaInputSet() throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/inputset"); String path = sb.toString(); // GET OrcaInputCdList result = getEasyJson(path, OrcaInputCdList.class); // List return (ArrayList<OrcaInputCd>)result.getList(); } /** * 指定された入力セットコードから診療セットを Stamp にして返す。 * @param inputSetInfo 入力セットの StampInfo * @return 入力セットのStampリスト * @throws java.lang.Exception */ @Override public ArrayList<ModuleModel> getStamp(ModuleInfoBean inputSetInfo) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/stamp/"); sb.append(inputSetInfo.getStampId()); sb.append(CAMMA); sb.append(inputSetInfo.getStampName()); String path = sb.toString(); // GET ModuleList result = getEasyJson(path, ModuleList.class); // List ArrayList<ModuleModel> ret = new ArrayList<>(); List<ModuleModel> list = result.getList(); for (ModuleModel m : list) { byte[] bytes = m.getBeanBytes(); IInfoModel model = (IInfoModel)xmlDecode(bytes); m.setModel(model); m.setBeanBytes(null); ret.add(m); } return ret; } //------------------------------------------------------------- // 病名インポート //------------------------------------------------------------- @Override public ArrayList<RegisteredDiagnosisModel> getOrcaDisease(String patientId, String from, String to, Boolean ascend) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/disease/import/"); sb.append(patientId); sb.append(CAMMA); sb.append(from); sb.append(CAMMA); sb.append(to); sb.append(CAMMA); sb.append(String.valueOf(ascend)); String path = sb.toString(); // GET RegisteredDiagnosisList result = getEasyJson(path, RegisteredDiagnosisList.class); // List return (ArrayList<RegisteredDiagnosisModel>)result.getList(); } @Override public ArrayList<RegisteredDiagnosisModel> getActiveOrcaDisease(String patientId, boolean asc) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/orca/disease/active/"); sb.append(patientId); sb.append(CAMMA); sb.append(String.valueOf(asc)); String path = sb.toString(); // GET RegisteredDiagnosisList result = getEasyJson(path, RegisteredDiagnosisList.class); // List return (ArrayList<RegisteredDiagnosisModel>)result.getList(); } private Object xmlDecode(byte[] bytes) { XMLDecoder d = new XMLDecoder( new BufferedInputStream( new ByteArrayInputStream(bytes))); return d.readObject(); } /** * CLAIM 送信 * @param sendModel * @return * @throws Exception */ public int sendDocument(DocumentModel sendModel) throws Exception { // PATH StringBuilder sb = new StringBuilder(); sb.append("/karte/claim"); String path = sb.toString(); // Converter DocumentModelConverter conv = new DocumentModelConverter(); conv.setModel(sendModel); // JSON ObjectMapper mapper = this.getSerializeMapper(); byte[] data = mapper.writeValueAsBytes(conv); // PUT String entityStr = putEasyJson(path, data, String.class); // Count return Integer.parseInt(entityStr); } //s.oh^ 2014/03/13 傷病名削除診療科対応 @Override public ArrayList<String> getDeptInfo() throws Exception { ArrayList<String> list = new ArrayList<>(0); // PATH String path = "/orca/deptinfo"; // GET String line = getEasyText(path, String.class); String[] tmps = line.split(","); for(String tmp : tmps) { if(tmp.trim().length() > 0) { list.add(tmp); } } return list; } //s.oh$ }