27 July, 2011

Simple Midlet application in J2ME

package healthPackage;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


/*
* @author Syed Imran Hossen
*/
public class mainMIDlet extends MIDlet implements CommandListener{
//Declaration of all controls
private Display display;
private TextField age;
private ChoiceGroup gender=new ChoiceGroup("Gender:", Choice.POPUP); //Male or Female
private TextField tc;
private TextField hdlc;
private ChoiceGroup smoker=new ChoiceGroup("Smoker:", Choice.POPUP); //Yes or No
private TextField sbp;
private ChoiceGroup isBPMedication=new ChoiceGroup("Taking BP Medication:", Choice.POPUP); //Yes or No
private Form form;
private Form splashScreen;
private Command exit;
private Command ok;
private ImageItem imageItem;
private Image image;


private int result=0;
private int riskPercentage=0;
private int output=0;
private int valid=0;

public mainMIDlet() {
//initialization of all controls
form = new Form("Cardiac Risk Calculator");
splashScreen = new Form("Novartis (Bangladesh) Limited.");

age = new TextField("Age(Yr):", "", 10, TextField.DECIMAL);

gender.append("Male", null);
gender.append("Female", null);

tc = new TextField("TC(mg/dl):", "", 10, TextField.DECIMAL);
hdlc = new TextField("HDL-C(mg/dl):", "", 10, TextField.DECIMAL);

smoker.append("No", null);
smoker.append("Yes", null);

sbp = new TextField("SBP(mg/hg):", "", 10, TextField.DECIMAL);

isBPMedication.append("No", null);
isBPMedication.append("Yes", null);

exit = new Command("Exit", Command.EXIT, 1);
ok = new Command("OK", Command.OK, 0);

try{
image = Image.createImage("/sandozLogo.jpg");
} catch (Exception e){ }
imageItem = new ImageItem("",image, ImageItem.LAYOUT_CENTER, "");

}

public void startApp() {
//add controls to the form
display = Display.getDisplay(this);

//Splash screen for 5 second
splashScreen.append(imageItem);
splashScreen.setCommandListener(this);
display.setCurrent(splashScreen);
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
}
//End splash screen after 5 seconds
form.append(age);
form.append(gender);
form.append(tc);
form.append(hdlc);
form.append(smoker);
form.append(sbp);
form.append(isBPMedication);
form.addCommand(exit);
form.addCommand(ok);
form.setCommandListener(this);
display.setCurrent(form);
}
public void pauseApp() {
}
public int validationForm() // Value is not null or empty and more than 0
{
valid=1;
if(age.getString() == null || age.getString().equals("") || Integer.parseInt(age.getString())<1 )
{
Alert check = new Alert("ERROR!!","Age must be provided...", null, AlertType.WARNING);
check.setTimeout(Alert.FOREVER);
display.setCurrent(check, form);
valid=0;
}
else if(tc.getString() == null || tc.getString().equals("") || Integer.parseInt(tc.getString())<1)
{
Alert check = new Alert("ERROR!!","Total Cholesterol (TC) must be provided..", null, AlertType.WARNING);
check.setTimeout(Alert.FOREVER);
display.setCurrent(check, form);
valid=0;
}
else if(hdlc.getString() == null || hdlc.getString().equals("") || Integer.parseInt(hdlc.getString())<1)
{
Alert check = new Alert("ERROR!!","High-density lipoprotein (HDL) cholesterol must be provided..", null, AlertType.WARNING);
check.setTimeout(Alert.FOREVER);
display.setCurrent(check, form);
valid=0;
}
else if(sbp.getString() == null || sbp.getString().equals("") || Integer.parseInt(sbp.getString())<1)
{
Alert check = new Alert("ERROR!!","Systolic BP (SBP) must be provided..", null, AlertType.WARNING);
check.setTimeout(Alert.FOREVER);
display.setCurrent(check, form);
valid=0;
}

return valid;
}
public void destroyApp(boolean unconditional) {
notifyDestroyed();
}

//Get result for corresponding data provided
public int result()
{
riskPercentage=0;
result=0;
//========================================MALE=====================================================
if(gender.getSelectedIndex()==0) //male
{
//Calculation for age-male
if(Integer.parseInt(age.getString())<=34)
result+=-9;
else if(Integer.parseInt(age.getString())>=35 && Integer.parseInt(age.getString())<=39)
result+=-4;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=44)
result+=0;
else if(Integer.parseInt(age.getString())>=45 && Integer.parseInt(age.getString())<=49)
result+=3;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=54)
result+=6;
else if(Integer.parseInt(age.getString())>=55 && Integer.parseInt(age.getString())<=59)
result+=8;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=64)
result+=10;
else if(Integer.parseInt(age.getString())>=65 && Integer.parseInt(age.getString())<=69)
result+=11;
else if(Integer.parseInt(age.getString())>=70 && Integer.parseInt(age.getString())<=74)
result+=12;
else if(Integer.parseInt(age.getString())>=75)
result+=13;

//Calculation for smoker-male
if(smoker.getSelectedIndex()==1) //yes=1 and No=0
{
if(Integer.parseInt(age.getString())<=39)
result+=8;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=5;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=3;
else if(Integer.parseInt(age.getString())>=60)
result+=1;
}

//Systolic BP (mmhg)-SBP calculation -male
if(Integer.parseInt(sbp.getString())<120)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=0;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=0;
}
else if(Integer.parseInt(sbp.getString())>=120 && Integer.parseInt(sbp.getString())<=129)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=0;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=1;
}
else if(Integer.parseInt(sbp.getString())>=130 && Integer.parseInt(sbp.getString())<=139)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=1;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=2;
}
else if(Integer.parseInt(sbp.getString())>=140 && Integer.parseInt(sbp.getString())<=159)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=1;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=2;
}
else if(Integer.parseInt(sbp.getString())>=160)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=2;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=3;
}


//HDL-C calculation -male
if(Integer.parseInt(hdlc.getString())<40)
{
result+=2;
}
else if(Integer.parseInt(hdlc.getString())>=40 && Integer.parseInt(hdlc.getString())<=49)
{
result+=1;
}
else if(Integer.parseInt(hdlc.getString())>=50 && Integer.parseInt(hdlc.getString())<=59)
{
result+=0;
}
else if(Integer.parseInt(hdlc.getString())>=60)
{
result+=-1;
}

//Total Cholesterol TC -male
if(Integer.parseInt(tc.getString())<160)
{
if(Integer.parseInt(age.getString())<=39)
result+=0;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=0;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=0;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=0;
else if(Integer.parseInt(age.getString())>=70)
result+=0;
}
else if(Integer.parseInt(tc.getString())>=160 && Integer.parseInt(tc.getString())<=199)
{
if(Integer.parseInt(age.getString())<=39)
result+=4;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=3;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=2;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=1;
else if(Integer.parseInt(age.getString())>=70)
result+=0;
}
else if(Integer.parseInt(tc.getString())>=200 && Integer.parseInt(tc.getString())<=239)
{
if(Integer.parseInt(age.getString())<=39)
result+=7;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=5;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=3;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=1;
else if(Integer.parseInt(age.getString())>=70)
result+=0;
}
else if(Integer.parseInt(tc.getString())>=240 && Integer.parseInt(tc.getString())<=279)
{
if(Integer.parseInt(age.getString())<=39)
result+=9;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=6;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=4;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=2;
else if(Integer.parseInt(age.getString())>=70)
result+=1;
}
else if(Integer.parseInt(tc.getString())>=280)
{
if(Integer.parseInt(age.getString())<=39)
result+=11;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=8;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=5;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=3;
else if(Integer.parseInt(age.getString())>=70)
result+=1;
}

//Cardiac Risk calculation of male percentage
if(result<0)
riskPercentage=0; //less than 1
else if(result==0)
riskPercentage=1;
else if(result==1)
riskPercentage=1;
else if(result==2)
riskPercentage=1;
else if(result==3)
riskPercentage=1;
else if(result==4)
riskPercentage=1;
else if(result==5)
riskPercentage=2;
else if(result==6)
riskPercentage=2;
else if(result==7)
riskPercentage=3;
else if(result==8)
riskPercentage=4;
else if(result==9)
riskPercentage=5;
else if(result==10)
riskPercentage=6;
else if(result==11)
riskPercentage=8;
else if(result==12)
riskPercentage=10;
else if(result==13)
riskPercentage=12;
else if(result==14)
riskPercentage=16;
else if(result==15)
riskPercentage=20;
else if(result==16)
riskPercentage=25;
else if(result>=17)
riskPercentage=30; //More than 30

}
//========================================FEMALE=====================================================
else if(gender.getSelectedIndex() == 1) //female
{
//Calculation for age - female
if(Integer.parseInt(age.getString())<=34)
result+=-7;
else if(Integer.parseInt(age.getString())>=35 && Integer.parseInt(age.getString())<=39)
result+=-3;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=44)
result+=0;
else if(Integer.parseInt(age.getString())>=45 && Integer.parseInt(age.getString())<=49)
result+=3;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=54)
result+=6;
else if(Integer.parseInt(age.getString())>=55 && Integer.parseInt(age.getString())<=59)
result+=8;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=64)
result+=10;
else if(Integer.parseInt(age.getString())>=65 && Integer.parseInt(age.getString())<=69)
result+=12;
else if(Integer.parseInt(age.getString())>=70 && Integer.parseInt(age.getString())<=74)
result+=14;
else if(Integer.parseInt(age.getString())>=75)
result+=16;

//Calculation for smoker -female
if(smoker.getSelectedIndex()==1) //yes=1 and No=0
{
if(Integer.parseInt(age.getString())<=39)
result+=9;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=7;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=4;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=2;
else if(Integer.parseInt(age.getString())>=70)
result+=1;
}

//Systolic BP (mmhg)-SBP calculation -female
if(Integer.parseInt(sbp.getString())<120)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=0;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=0;
}
else if(Integer.parseInt(sbp.getString())>=120 && Integer.parseInt(sbp.getString())<=129)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=1;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=3;
}
else if(Integer.parseInt(sbp.getString())>=130 && Integer.parseInt(sbp.getString())<=139)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=2;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=4;
}
else if(Integer.parseInt(sbp.getString())>=140 && Integer.parseInt(sbp.getString())<=159)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=3;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=5;
}
else if(Integer.parseInt(sbp.getString())>=160)
{
if(isBPMedication.getSelectedIndex()==0) //No
result+=4;
else if(isBPMedication.getSelectedIndex() == 1) //No
result+=6;
}

//HDL-C calculation -female
if(Integer.parseInt(hdlc.getString())<40)
{
result+=2;
}
else if(Integer.parseInt(hdlc.getString())>=40 && Integer.parseInt(hdlc.getString())<=49)
{
result+=1;
}
else if(Integer.parseInt(hdlc.getString())>=50 && Integer.parseInt(hdlc.getString())<=59)
{
result+=0;
}
else if(Integer.parseInt(hdlc.getString())>=60)
{
result+=-1;
}


//Total Cholesterol TC -female
if(Integer.parseInt(tc.getString())<160)
{
if(Integer.parseInt(age.getString())<=39)
result+=0;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=0;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=0;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=0;
else if(Integer.parseInt(age.getString())>=70)
result+=0;
}
else if(Integer.parseInt(tc.getString())>=160 && Integer.parseInt(tc.getString())<=199)
{
if(Integer.parseInt(age.getString())<=39)
result+=4;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=3;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=2;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=1;
else if(Integer.parseInt(age.getString())>=70)
result+=1;
}
else if(Integer.parseInt(tc.getString())>=200 && Integer.parseInt(tc.getString())<=239)
{
if(Integer.parseInt(age.getString())<=39)
result+=8;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=6;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=4;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=2;
else if(Integer.parseInt(age.getString())>=70)
result+=1;
}
else if(Integer.parseInt(tc.getString())>=240 && Integer.parseInt(tc.getString())<=279)
{
if(Integer.parseInt(age.getString())<=39)
result+=11;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=8;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=5;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=3;
else if(Integer.parseInt(age.getString())>=70)
result+=2;
}
else if(Integer.parseInt(tc.getString())>=280)
{
if(Integer.parseInt(age.getString())<=39)
result+=13;
else if(Integer.parseInt(age.getString())>=40 && Integer.parseInt(age.getString())<=49)
result+=10;
else if(Integer.parseInt(age.getString())>=50 && Integer.parseInt(age.getString())<=59)
result+=7;
else if(Integer.parseInt(age.getString())>=60 && Integer.parseInt(age.getString())<=69)
result+=4;
else if(Integer.parseInt(age.getString())>=70)
result+=2;
}

//Cardiac Risk calculation of female percentage
if(result<9)
riskPercentage=0; //less than 1
else if(result==9)
riskPercentage=1;
else if(result==10)
riskPercentage=1;
else if(result==11)
riskPercentage=1;
else if(result==12)
riskPercentage=1;
else if(result==13)
riskPercentage=1;
else if(result==14)
riskPercentage=2;
else if(result==15)
riskPercentage=3;
else if(result==16)
riskPercentage=4;
else if(result==17)
riskPercentage=5;
else if(result==18)
riskPercentage=6;
else if(result==19)
riskPercentage=8;
else if(result==20)
riskPercentage=11;
else if(result==21)
riskPercentage=14;
else if(result==22)
riskPercentage=17;
else if(result==23)
riskPercentage=22;
else if(result==24)
riskPercentage=27;
else if(result>=25)
riskPercentage=30; //More than 30

}
return riskPercentage;
}

public void commandAction(Command c, Displayable d) {
//set commad execution
if(c == exit) {
destroyApp(false);
}
else if(c==ok)
{
if(validationForm()>0)
{
output=0;
output=result();
if(output < 1)
{
Alert calculation = new Alert("Result...","10 Year Risk of hard CHD Less Than 1 %", null, AlertType.INFO);
calculation.setTimeout(5000);
//calculation.setTimeout(Alert.FOREVER);
display.setCurrent(calculation, form);
}
else if(output >= 30)
{
Alert calculation = new Alert("Result...","10 Year Risk of hard CHD More Than "+output+" %", null, AlertType.INFO);
calculation.setTimeout(5000);
//calculation.setTimeout(Alert.FOREVER);
display.setCurrent(calculation, form);
}
else
{
Alert calculation = new Alert("Result...","10 Year Risk of hard CHD is "+output+" %", null, AlertType.INFO);
calculation.setTimeout(5000);
//calculation.setTimeout(Alert.FOREVER);
display.setCurrent(calculation, form);
}
}
}
}
}

No comments:

Post a Comment