Package com.krminc.phr.ws.client

Source Code of com.krminc.phr.ws.client.RpmsService

/**
* Copyright (C) 2012 KRM Associates, Inc. healtheme@krminc.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*         http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.krminc.phr.ws.client;

import com.krminc.phr.dao.PersistenceService;
import com.krminc.phr.domain.clinical.Resource;
import com.krminc.phr.ws.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.xml.namespace.QName;
import org.apache.log4j.Logger;

/**
* RPMS Soap Service Client
*
* @author Daniel Shaw (dshaw.com)
*/
public class RpmsService {

    private static final Logger logger = Logger.getLogger(RpmsService.class);

    private Long resourceId;


    public RpmsService(Long resourceId) {
        this.resourceId = resourceId;
    }


    public void setResourceId(Long resourceId) {
        this.resourceId = resourceId;
    }

    public List<FMPatient> getPatientList(String hrn) {
        Resource resource = null;
        EntityManager em = PersistenceService.getInstance().getEntityManager();
        try {
            resource = em.find(Resource.class, resourceId);
        } catch (NoResultException ex) {
            logger.warn(ex);
        }

        // TODO: Why are credentials a list
        logger.debug("hrn " + hrn);
        logger.debug(resource.getResourceLocationPath());
        logger.debug(resource.getResourceCredentials().get(0).getUsername());
        logger.debug(resource.getResourceNamespace());
        logger.debug(resource.getResourceLocalPart());
        long startTime, endTime;
        startTime = System.currentTimeMillis();

        PhrCcrService service = null;
        QName qName = null;
        try {
            service = new PhrCcrService(
                new URL(resource.getResourceLocationPath()),
                new QName(resource.getResourceNamespace(), resource.getResourceLocalPart())
            );
        } catch (MalformedURLException ex) {
            logger.warn(ex);
        }       
//        boolean response = false;
//        try {
//            ((BindingProvider) serviceProxy).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
//                response = serviceProxy.ccrServiceLogin(
//                    resource.getResourceCredentials().get(0).getUsername(),
//                    resource.getResourceCredentials().get(0).getPassword()
//                );
//            logger.debug("login response:" + response);
//        } catch (AuthenticationServiceException_Exception ex) {
//            logger.debug(ex);
//        }
        endTime = System.currentTimeMillis();
        logger.debug("Time to login:" + (endTime - startTime) + " milliseconds");
        try {
            CCRServiceSoap serviceProxy = service.getCCRServiceSoap();
            startTime = System.currentTimeMillis();
            // Christopher says pick a number between 1 and 50000
            // `100 is a "programmers trick" to get by DFN
            // so this will fetch record for IEN=100, not by the ID
            // if you put in 100, you will get a list of records where the ID starts with 100
            List<FMPatient> patients = serviceProxy.lookupPatientsByID(resource.getResourceCredentials().get(0).getUsername(), resource.getResourceCredentials().get(0).getPassword(), hrn);

            if (patients == null) {
                return Collections.EMPTY_LIST;
            }

            logger.info("patient count:" + patients.size());
            endTime = System.currentTimeMillis();
            for (FMPatient patient : patients) {
                logger.debug("patient:" + patient);
                logger.debug("patient name:" + patient.getName());
                logger.debug("patient gender:" + patient.getGender());
                //logger.debug("patient age:" + patient.getAge());
                logger.debug("patient dob:" + patient.getDOB());
                logger.debug("patient Address Line 1:" + patient.getAddressLine1());
                logger.debug("patient Address Line 2:" + patient.getAddressLine2());
                logger.debug("patient Address Line 3:" + patient.getAddressLine3());
                logger.debug("patient Address Line 3:" + patient.getAddressLine3());
                logger.debug("patient City, State Zip:" + patient.getCity() + ", " +
                        patient.getState() + " " + patient.getZip());
                logger.debug("patient id (hrn):" + patient.getID());
                logger.debug("patient ien:" + patient.getIEN());
                logger.debug("patient iens?:" + patient.getIENS());
                if (patient.getParent() != null )
                    logger.debug("parent record:" + patient.getParent().toString());
                System.out.println("fetch time:" + (endTime - startTime) + " milliseconds");

                return patients;
            }
        } catch (Exception ex) {
            logger.warn(ex);
        } /*finally {
        endTime = System.currentTimeMillis();
        System.out.println("<======================== time:" + (endTime - startTime) + " milliseconds");
        System.out.println("<======================== End Processing");

        }*/
        return Collections.EMPTY_LIST;
    }
}
TOP

Related Classes of com.krminc.phr.ws.client.RpmsService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.