gov.nih.nci.eagle.util.PatientGroupManager.java Source code

Java tutorial

Introduction

Here is the source code for gov.nih.nci.eagle.util.PatientGroupManager.java

Source

/*L
 *  Copyright SAIC
 *
 *  Distributed under the OSI-approved BSD 3-Clause License.
 *  See http://ncip.github.com/eagle/LICENSE.txt for details.
 */

package gov.nih.nci.eagle.util;

import org.apache.commons.lang.StringUtils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PatientGroupManager {

    public String patientFileName;
    public Map<String, Map> patientMap;

    public String getPatientFileName() {
        return patientFileName;
    }

    public void setPatientFileName(String patientFileName) {
        this.patientFileName = patientFileName;
    }

    public List getPatientInfo(List<String> patientIds) {
        if (patientMap == null) {
            buildPatientMap();
        }
        List patients = new ArrayList<HashMap>();
        for (String id : patientIds) {
            patients.add(patientMap.get(id));
        }
        return patients;
    }

    public Map getPatientInfo(String patientId) {
        if (patientMap == null) {
            buildPatientMap();
        }
        return patientMap.get(patientId);
    }

    private void buildPatientMap() {
        patientMap = new HashMap<String, Map>();
        File inFile = new File(patientFileName);
        BufferedReader br;
        try {
            br = new BufferedReader(new InputStreamReader(new FileInputStream(inFile)));
            String line = br.readLine();
            while (line != null) {
                String[] values = StringUtils.split(line, ",");
                HashMap<String, String> patient = new HashMap<String, String>();
                if (values == null || values.length < 1) {
                    line = br.readLine();
                    continue;
                }
                patient.put("patientId", values[0]);
                String sex = null;
                if (values[1].equals("1.00")) {
                    sex = "M";
                } else {
                    sex = "F";
                }
                patient.put("sex", sex);
                String smoke = null;
                if (values[2].equals("0.00")) {
                    smoke = "NEVER";
                } else if (values[2].equals("1.00")) {
                    smoke = "FORMER";
                } else if (values[2].equals("2.00")) {
                    smoke = "CURRENT";
                } else { //some are 9.0 == n/a
                    smoke = "N/A";
                }

                patient.put("smoking_status", smoke);
                patient.put("age", values[3]);
                if (values.length > 4) {
                    patient.put("grade", values[4]);
                } else {
                    patient.put("grade", "N/A"); //no grade for these  
                }
                patientMap.put(values[0], patient);
                line = br.readLine();
            }
            br.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}