package open.dolphin.rest; import java.io.IOException; import java.util.Collection; import java.util.List; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import open.dolphin.converter.PatientVisitListConverter; import open.dolphin.infomodel.HealthInsuranceModel; import open.dolphin.infomodel.PatientVisitList; import open.dolphin.infomodel.PatientVisitModel; import open.dolphin.session.PVTServiceBean; import org.codehaus.jackson.map.DeserializationConfig; import org.codehaus.jackson.map.ObjectMapper; /** * REST Web Service * * @author kazushi */ @Path("/pvt") public class PVTResource extends AbstractResource { @Inject private PVTServiceBean pVTServiceBean; /** Creates a new instance of PatientsResource */ public PVTResource() { } @GET @Path("/{param}") @Produces(MediaType.APPLICATION_JSON) public PatientVisitListConverter getPvt(@Context HttpServletRequest servletReq, @PathParam("param") String param) { // 施設 String fid = getRemoteFacility(servletReq.getRemoteUser()); debug(fid); List<PatientVisitModel> result; String[] params = param.split(CAMMA); if (params.length==4) { String pvtDate = params[0]; int firstResult = Integer.parseInt(params[1]); String appoDateFrom = params[2]; String appoDateTo = params[3]; result = pVTServiceBean.getPvt(fid, pvtDate, firstResult, appoDateFrom, appoDateTo); } else { String did = params[0]; String unassigned = params[1]; String pvtDate = params[2]; int firstResult = Integer.parseInt(params[3]); String appoDateFrom = params[4]; String appoDateTo = params[5]; result = pVTServiceBean.getPvt(fid, did, unassigned, pvtDate, firstResult, appoDateFrom, appoDateTo); } PatientVisitList list = new PatientVisitList(); list.setList(result); PatientVisitListConverter conv = new PatientVisitListConverter(); conv.setModel(list); return conv; } @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String postPvt(@Context HttpServletRequest servletReq, String json) throws IOException { ObjectMapper mapper = new ObjectMapper(); // 2013/06/24 mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); PatientVisitModel model = mapper.readValue(json, PatientVisitModel.class); // 関係構築 String fid = getRemoteFacility(servletReq.getRemoteUser()); model.setFacilityId(fid); model.getPatientModel().setFacilityId(fid); Collection<HealthInsuranceModel> c = model.getPatientModel().getHealthInsurances(); if (c!= null && c.size() > 0) { for (HealthInsuranceModel hm : c) { hm.setPatient(model.getPatientModel()); } } int result = pVTServiceBean.addPvt(model); String cntStr = String.valueOf(result); debug(cntStr); return cntStr; } @PUT @Path("/{param}") @Produces(MediaType.TEXT_PLAIN) public String putPvtState(@PathParam("param") String param) { String[] params = param.split(CAMMA); long pvtPK = Long.parseLong(params[0]); int state = Integer.parseInt(params[1]); int cnt = pVTServiceBean.updatePvtState(pvtPK, state); String cntStr = String.valueOf(cnt); debug(cntStr); return cntStr; } @PUT @Path("/memo/{param}") @Produces(MediaType.TEXT_PLAIN) public String putMemo(@PathParam("param") String param) { String[] params = param.split(CAMMA); long pvtPK = Long.parseLong(params[0]); // ステータス連携 //String memo = params[1]; String memo = (params != null && params.length>1) ? params[1] : ""; // chg funabashi (空白対応) int cnt = pVTServiceBean.updateMemo(pvtPK, memo); String cntStr = String.valueOf(cnt); debug(cntStr); return cntStr; } @DELETE @Path("/{pvtPK}") public void deletePvt(@PathParam("pvtPK") String pkStr) { long pvtPK = Long.parseLong(pkStr); int cnt = pVTServiceBean.removePvt(pvtPK); debug(String.valueOf(cnt)); } }