package org.sana.android.db;
import java.util.Date;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;
/**
* A wrapper around patient information.
*
* @author Sana Development Team
*
*/
public class PatientInfo implements Parcelable {
private static final String TAG = PatientInfo.class.toString();
boolean isConfirmed = false;
private String patientIdentifier = "";
private String patientFirstName = "";
private String patientLastName = "";
private String patientGender = "";
private Date patientBirthdate = new Date();
/**
* Default Constructor
*/
public PatientInfo() {
Log.v(TAG, "PatientInfo()");
}
/**
* Constructs a new PatientInfo object from a parcel
* @param p the parcel to read from.
*/
private PatientInfo(Parcel p) {
Log.v(TAG, "PatientInfo(Parcel)");
readFromParcel(p);
}
/**
* Gets the value of an attribute by name.
* @param id the name of the attribute.
* @return the value or an empty string.
*/
public String getAnswerForId(String id) {
if ("patientGender".equals(id))
return patientGender;
else if ("patientFirstName".equals(id))
return patientFirstName;
else if ("patientLastName".equals(id))
return patientLastName;
else if ("patientBirthdateYear".equals(id) && patientBirthdate != null)
return Integer.toString(patientBirthdate.getYear());
else if ("patientBirthdateMonth".equals(id) && patientBirthdate != null)
return Integer.toString(patientBirthdate.getMonth());
else if ("patientBirthdateDay".equals(id) && patientBirthdate != null)
return Integer.toString(patientBirthdate.getDay());
return "";
}
/**
* True if this patient identifier is registered with the emr.
* @return
*/
public boolean isConfirmed() {
return isConfirmed;
}
/**
* Updates the confirmation status.
* @param confirmed the new status.
*/
public void setConfirmed(boolean confirmed) {
isConfirmed = confirmed;
}
/**
* Gets the patient identifier.
* @return an identifier.
*/
public String getPatientIdentifier() {
return patientIdentifier;
}
/**
* Updates the identifier.
* @param patientIdentifier the new value.
*/
public void setPatientIdentifier(String patientIdentifier) {
this.patientIdentifier = patientIdentifier;
}
/**
* Gets the gender.
* @return
*/
public String getPatientGender() {
return patientGender;
}
/**
* Updates the gender.
* @param patientGender the new value.
*/
public void setPatientGender(String patientGender) {
this.patientGender = patientGender;
}
/**
* Get the given name.
* @return
*/
public String getPatientFirstName() {
return patientFirstName;
}
/**
* Updates the given name.
* @param patientFirstName the new value.
*/
public void setPatientFirstName(String patientFirstName) {
this.patientFirstName = patientFirstName;
}
/**
* Gets the family name.
* @return
*/
public String getPatientLastName() {
return patientLastName;
}
/**
* Updates the family name.
* @param patientLastName the new value.
*/
public void setPatientLastName(String patientLastName) {
this.patientLastName = patientLastName;
}
/**
* Gets the birthdate.
* @return
*/
public Date getPatientBirthdate() {
return patientBirthdate;
}
/**
* Updates the birthdate.
* @param patientBirthdate the new value.
*/
public void setPatientBirthdate(Date patientBirthdate) {
this.patientBirthdate = patientBirthdate;
}
/** {@inheritDoc} */
@Override
public int describeContents() {
return 0;
}
/** Required for the Parcelable interface. */
public static final Parcelable.Creator<PatientInfo> CREATOR = new
Parcelable.Creator<PatientInfo>() {
/** {@inheritDoc} */
@Override
public PatientInfo createFromParcel(Parcel source) {
return new PatientInfo(source);
}
/** {@inheritDoc} */
@Override
public PatientInfo[] newArray(int size) {
return new PatientInfo[size];
}
};
private void readFromParcel(Parcel p) {
Log.v(TAG, "readFromParcel");
try {
boolean[] confirmedArray = p.createBooleanArray();
isConfirmed = confirmedArray[0];
patientIdentifier = p.readString();
patientFirstName = p.readString();
patientLastName = p.readString();
patientGender = p.readString();
patientBirthdate = new Date(p.readString());
} catch (Exception e) {
Log.e(TAG, "While reading PatientInfo from Parcel, got exception: "
+ e.toString());
e.printStackTrace();
}
}
/** {@inheritDoc} */
@Override
public void writeToParcel(Parcel dest, int flags) {
Log.v(TAG, "writeToParcel");
dest.writeBooleanArray(new boolean[] {isConfirmed});
dest.writeString(patientIdentifier);
dest.writeString(patientFirstName);
dest.writeString(patientLastName);
dest.writeString(patientGender);
dest.writeString(patientBirthdate.toString());
}
}