package edu.ualberta.med.biobank.tools.pnumberprob;
import jargs.gnu.CmdLineParser;
import jargs.gnu.CmdLineParser.Option;
import jargs.gnu.CmdLineParser.OptionException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Pattern;
public class PnumberProb {
private static String USAGE = "Usage: pnumberprob PNUMBER1 PNUMBER2 ... PNUMBERn";
@SuppressWarnings("unused")
private boolean verbose = false;
private static Map<String, Double> pnumberProbMap;
static {
Map<String, Double> aMap = new HashMap<String, Double>();
aMap.put("1111", 0.1284599006);
aMap.put("1115", 0.0007097232);
aMap.put("1151", 0.2079488999);
aMap.put("1155", 0.0070972321);
aMap.put("1191", 0.1163946061);
aMap.put("1195", 0.0021291696);
aMap.put("1511", 0.1930447126);
aMap.put("1515", 0.003548616);
aMap.put("1551", 0.1845280341);
aMap.put("1555", 0.0021291696);
aMap.put("1591", 0.0014194464);
aMap.put("1911", 0.1071682044);
aMap.put("1915", 0.0007097232);
aMap.put("5111", 0.0085166785);
aMap.put("5151", 0.0056777857);
aMap.put("5191", 0.0049680625);
aMap.put("5511", 0.0092264017);
aMap.put("5551", 0.0099361249);
aMap.put("5911", 0.0056777857);
aMap.put("9551", 0.0007097232);
pnumberProbMap = Collections.unmodifiableMap(aMap);
}
public PnumberProb(String argv[]) {
CmdLineParser parser = new CmdLineParser();
Option verboseOpt = parser.addBooleanOption('v', "verbose");
try {
parser.parse(argv);
} catch (OptionException e) {
System.out.println(e.getMessage());
System.exit(-1);
}
Boolean boleanOptVal = (Boolean) parser.getOptionValue(verboseOpt);
if (boleanOptVal != null) {
verbose = boleanOptVal.booleanValue();
}
String[] args = parser.getRemainingArgs();
if (args.length < 1) {
System.out.println("Error: invalid arguments\n" + USAGE);
System.exit(-1);
}
for (String pnumber : args) {
String pnumberRegEx = pnumber.replace("x", ".");
Pattern pattern = Pattern.compile(pnumberRegEx);
Map<Double, String> results = new TreeMap<Double, String>();
for (String key : pnumberProbMap.keySet()) {
if (pattern.matcher(key).matches()) {
results.put(pnumberProbMap.get(key), key);
}
}
if (results.isEmpty()) {
System.out.println("no results for this patient number");
System.exit(-1);
}
System.out.println("the probabilities for " + pnumber
+ " are (starting at lowest):");
for (Double key : results.keySet()) {
System.out.println("\t" + results.get(key) + "\t" + key);
}
System.out.println();
}
}
public static void main(String argv[]) throws Exception {
new PnumberProb(argv);
}
}