Example #1
0
 ///<summary>This can only be run once when the form first opens.  After that, the rows are just edited.</summary>
 private void FillRows()
 {
     rows=new List<SheetImportRow>();
     SheetImportRow row;
     string fieldVal;
     row=new SheetImportRow();
     row.FieldName="Personal";
     row.IsSeparator=true;
     rows.Add(row);
     #region personal
     //LName---------------------------------------------
     fieldVal=GetInputValue("LName");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="LName";
         row.OldValDisplay=pat.LName;
         row.OldValObj=pat.LName;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //FName---------------------------------------------
     fieldVal=GetInputValue("FName");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="FName";
         row.OldValDisplay=pat.FName;
         row.OldValObj=pat.FName;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //MiddleI---------------------------------------------
     fieldVal=GetInputValue("MiddleI");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="MiddleI";
         row.OldValDisplay=pat.MiddleI;
         row.OldValObj=pat.MiddleI;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //Preferred---------------------------------------------
     fieldVal=GetInputValue("Preferred");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="Preferred";
         row.OldValDisplay=pat.Preferred;
         row.OldValObj=pat.Preferred;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //Gender---------------------------------------------
     fieldVal=GetRadioValue("Gender");
     if(fieldVal!=null) {//field exists on form
         row=new SheetImportRow();
         row.FieldName="Gender";
         row.OldValDisplay=Lan.g("enumPatientGender",pat.Gender.ToString());
         row.OldValObj=pat.Gender;
         if(fieldVal=="") {//no box was checked
             row.NewValDisplay="";
             row.NewValObj=null;
         }
         else {
             try {
                 PatientGender gender=(PatientGender)Enum.Parse(typeof(PatientGender),fieldVal);
                 row.NewValDisplay=Lan.g("enumPatientGender",gender.ToString());
                 row.NewValObj=gender;
             }
             catch {
                 MessageBox.Show(fieldVal+Lan.g(this," is not a valid gender."));
             }
         }
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(PatientGender);
         if(row.NewValObj!=null && (PatientGender)row.NewValObj!=pat.Gender) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //Position---------------------------------------------
     fieldVal=GetRadioValue("Position");
     if(fieldVal!=null) {//field exists on form
         row=new SheetImportRow();
         row.FieldName="Position";
         row.OldValDisplay=Lan.g("enumPatientPositionr",pat.Position.ToString());
         row.OldValObj=pat.Position;
         if(fieldVal=="") {//no box was checked
             row.NewValDisplay="";
             row.NewValObj=null;
         }
         else {
             try {
                 PatientPosition position=(PatientPosition)Enum.Parse(typeof(PatientPosition),fieldVal);
                 row.NewValDisplay=Lan.g("enumPatientPosition",position.ToString());
                 row.NewValObj=position;
             }
             catch {
                 MessageBox.Show(fieldVal+Lan.g(this," is not a valid PatientPosition."));
             }
         }
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(PatientPosition);
         if(row.NewValObj!=null && (PatientPosition)row.NewValObj!=pat.Position) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //Birthdate---------------------------------------------
     fieldVal=GetInputValue("Birthdate");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="Birthdate";
         if(pat.Birthdate.Year<1880) {
             row.OldValDisplay="";
         }
         else {
             row.OldValDisplay=pat.Birthdate.ToShortDateString();
         }
         row.OldValObj=pat.Birthdate;
         row.NewValObj=PIn.Date(fieldVal);
         if(((DateTime)row.NewValObj).Year<1880) {
             row.NewValDisplay="";
         }
         else {
             row.NewValDisplay=((DateTime)row.NewValObj).ToShortDateString();
         }
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(DateTime);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //SSN---------------------------------------------
     fieldVal=GetInputValue("SSN");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="SSN";
         row.OldValDisplay=pat.SSN;
         row.OldValObj=pat.SSN;
         row.NewValDisplay=fieldVal.Replace("-","");//quickly strip dashes
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //WkPhone---------------------------------------------
     fieldVal=GetInputValue("WkPhone");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="WkPhone";
         row.OldValDisplay=pat.WkPhone;
         row.OldValObj=pat.WkPhone;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //WirelessPhone---------------------------------------------
     fieldVal=GetInputValue("WirelessPhone");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="WirelessPhone";
         row.OldValDisplay=pat.WirelessPhone;
         row.OldValObj=pat.WirelessPhone;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //wirelessCarrier---------------------------------------------
     fieldVal=GetInputValue("wirelessCarrier");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="wirelessCarrier";
         row.OldValDisplay="";
         row.OldValObj="";
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         row.DoImport=false;
         row.IsFlagged=true;//if user entered nothing, the red text won't show anyway.
         rows.Add(row);
     }
     //Email---------------------------------------------
     fieldVal=GetInputValue("Email");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="Email";
         row.OldValDisplay=pat.Email;
         row.OldValObj=pat.Email;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //PreferContactMethod---------------------------------------------
     fieldVal=GetRadioValue("PreferContactMethod");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="PreferContactMethod";
         row.OldValDisplay=Lan.g("enumContactMethod",pat.PreferContactMethod.ToString());
         row.OldValObj=pat.PreferContactMethod;
         if(fieldVal=="") {
             row.NewValDisplay="";
             row.NewValObj=null;
         }
         else {
             try {
                 ContactMethod cmeth=(ContactMethod)Enum.Parse(typeof(ContactMethod),fieldVal);
                 row.NewValDisplay=Lan.g("enumContactMethod",cmeth.ToString());
                 row.NewValObj=cmeth;
             }
             catch {
                 MessageBox.Show(fieldVal+Lan.g(this," is not a valid ContactMethod."));
             }
         }
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(ContactMethod);
         if(row.NewValObj!=null && (ContactMethod)row.NewValObj!=pat.PreferContactMethod) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //PreferConfirmMethod---------------------------------------------
     fieldVal=GetRadioValue("PreferConfirmMethod");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="PreferConfirmMethod";
         row.OldValDisplay=Lan.g("enumContactMethod",pat.PreferConfirmMethod.ToString());
         row.OldValObj=pat.PreferConfirmMethod;
         if(fieldVal=="") {
             row.NewValDisplay="";
             row.NewValObj=null;
         }
         else {
             try {
                 ContactMethod cmeth=(ContactMethod)Enum.Parse(typeof(ContactMethod),fieldVal);
                 row.NewValDisplay=Lan.g("enumContactMethod",cmeth.ToString());
                 row.NewValObj=cmeth;
             }
             catch {
                 MessageBox.Show(fieldVal+Lan.g(this," is not a valid ContactMethod."));
             }
         }
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(ContactMethod);
         if(row.NewValObj!=null && (ContactMethod)row.NewValObj!=pat.PreferConfirmMethod) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //PreferRecallMethod---------------------------------------------
     fieldVal=GetRadioValue("PreferRecallMethod");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="PreferRecallMethod";
         row.OldValDisplay=Lan.g("enumContactMethod",pat.PreferRecallMethod.ToString());
         row.OldValObj=pat.PreferRecallMethod;
         if(fieldVal=="") {
             row.NewValDisplay="";
             row.NewValObj=null;
         }
         else {
             try {
                 ContactMethod cmeth=(ContactMethod)Enum.Parse(typeof(ContactMethod),fieldVal);
                 row.NewValDisplay=Lan.g("enumContactMethod",cmeth.ToString());
                 row.NewValObj=cmeth;
             }
             catch {
                 MessageBox.Show(fieldVal+Lan.g(this," is not a valid ContactMethod."));
             }
         }
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(ContactMethod);
         if(row.NewValObj!=null && (ContactMethod)row.NewValObj!=pat.PreferRecallMethod) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //referredFrom---------------------------------------------
     fieldVal=GetInputValue("referredFrom");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="referredFrom";
         Referral refer=Referrals.GetReferralForPat(pat.PatNum);
         if(refer==null) {//there was no existing referral
             row.OldValDisplay="";
             row.OldValObj=null;
             row.NewValDisplay=fieldVal;
             row.NewValObj=null;
             if(row.NewValDisplay!="") {//user did enter a referral
                 row.ImpValDisplay=Lan.g(this,"[double click to pick]");
                 row.ImpValObj=null;
                 row.IsFlaggedImp=true;
                 row.DoImport=false;//this will change to true after they pick a referral
             }
             else {//user still did not enter a referral
                 row.ImpValDisplay="";
                 row.ImpValObj=null;
                 row.DoImport=false;
             }
         }
         else {//there was an existing referral. We don't allow changing from here since mostly for new patients.
             row.OldValDisplay=refer.GetNameFL();
             row.OldValObj=refer;
             row.NewValDisplay=fieldVal;
             row.NewValObj=null;
             row.ImpValDisplay="";
             row.ImpValObj=null;
             row.DoImport=false;
             if(row.OldValDisplay!=row.NewValDisplay) {//if patient changed an existing referral, at least let user know.
                 row.IsFlagged=true;//although they won't be able to do anything about it here
             }
         }
         row.ObjType=typeof(Referral);
         rows.Add(row);
     }
     #endregion personal
     //Separator-------------------------------------------
     row=new SheetImportRow();
     row.FieldName="Address and Home Phone";
     row.IsSeparator=true;
     rows.Add(row);
     #region address
     //SameForEntireFamily-------------------------------------------
     if(ContainsOneOfFields("addressAndHmPhoneIsSameEntireFamily")) {
         row=new SheetImportRow();
         row.FieldName="addressAndHmPhoneIsSameEntireFamily";
         row.FieldDisplay="Same for entire family";
         if(AddressSameForFam) {//remember we calculated this in the form constructor.
             row.OldValDisplay="X";
             row.OldValObj="X";
         }
         else {
             row.OldValDisplay="";
             row.OldValObj="";
         }
         //And now, we will revise AddressSameForFam based on user input
         AddressSameForFam=IsChecked("addressAndHmPhoneIsSameEntireFamily");
         if(AddressSameForFam) {
             row.NewValDisplay="X";
             row.NewValObj="X";
             row.ImpValDisplay="X";
             row.ImpValObj="X";
         }
         else {
             row.NewValDisplay="";
             row.NewValObj="";
             row.ImpValDisplay="";
             row.ImpValObj="";
         }
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //Address---------------------------------------------
     fieldVal=GetInputValue("Address");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="Address";
         row.OldValDisplay=pat.Address;
         row.OldValObj=pat.Address;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //Address2---------------------------------------------
     fieldVal=GetInputValue("Address2");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="Address2";
         row.OldValDisplay=pat.Address2;
         row.OldValObj=pat.Address2;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //City---------------------------------------------
     fieldVal=GetInputValue("City");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="City";
         row.OldValDisplay=pat.City;
         row.OldValObj=pat.City;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //State---------------------------------------------
     fieldVal=GetInputValue("State");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="State";
         row.OldValDisplay=pat.State;
         row.OldValObj=pat.State;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //Zip---------------------------------------------
     fieldVal=GetInputValue("Zip");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="Zip";
         row.OldValDisplay=pat.Zip;
         row.OldValObj=pat.Zip;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     //HmPhone---------------------------------------------
     fieldVal=GetInputValue("HmPhone");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="HmPhone";
         row.OldValDisplay=pat.HmPhone;
         row.OldValObj=pat.HmPhone;
         row.NewValDisplay=fieldVal;
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay=row.NewValDisplay;
         row.ImpValObj=row.NewValObj;
         row.ObjType=typeof(string);
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.DoImport=true;
         }
         rows.Add(row);
     }
     #endregion address
     //Separator-------------------------------------------
     row=new SheetImportRow();
     row.FieldName="Insurance Policy 1";
     row.IsSeparator=true;
     rows.Add(row);
     #region ins1
     //It turns out that importing insurance is crazy complicated if we want it to be perfect.
     //So it's better to table that plan for now.
     //The new strategy is simply to show them what the user entered and notify them if it seems different.
     //ins1Relat------------------------------------------------------------
     fieldVal=GetRadioValue("ins1Relat");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins1Relat";
         row.FieldDisplay="Relationship";
         row.OldValDisplay=Lan.g("enumRelat",ins1Relat.ToString());
         row.OldValObj=ins1Relat;
         if(fieldVal=="") {
             row.NewValDisplay="";
             row.NewValObj=null;
         }
         else {
             try {
                 Relat relat=(Relat)Enum.Parse(typeof(Relat),fieldVal);
                 row.NewValDisplay=Lan.g("enumRelat",relat.ToString());
                 row.NewValObj=relat;
             }
             catch {
                 MessageBox.Show(fieldVal+Lan.g(this," is not a valid Relationship."));
             }
         }
         row.ImpValDisplay="";
         row.ImpValObj=null;
         row.ObjType=typeof(Relat);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins1Subscriber---------------------------------------------
     fieldVal=GetInputValue("ins1SubscriberNameF");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins1Subscriber";
         row.FieldDisplay="Subscriber";
         if(plan1!=null) {
             row.OldValDisplay=fam.GetNameInFamFirst(sub1.Subscriber);
             row.OldValObj=sub1.Subscriber;
         }
         else {
             row.OldValDisplay="";
             row.OldValObj=null;
         }
         row.NewValDisplay=fieldVal;//whether it's empty or has a value
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins1SubscriberID---------------------------------------------
     fieldVal=GetInputValue("ins1SubscriberID");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins1SubscriberID";
         row.FieldDisplay="Subscriber ID";
         if(plan1!=null) {
             row.OldValDisplay=sub1.SubscriberID;
             row.OldValObj="";
         }
         else {
             row.OldValDisplay="";
             row.OldValObj="";
         }
         row.NewValDisplay=fieldVal;//whether it's empty or has a value
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins1CarrierName---------------------------------------------
     fieldVal=GetInputValue("ins1CarrierName");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins1CarrierName";
         row.FieldDisplay="Carrier";
         if(carrier1!=null) {
             row.OldValDisplay=carrier1.CarrierName;
             row.OldValObj="";
         }
         else {
             row.OldValDisplay="";
             row.OldValObj="";
         }
         row.NewValDisplay=fieldVal;//whether it's empty or has a value
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins1CarrierPhone---------------------------------------------
     fieldVal=GetInputValue("ins1CarrierPhone");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins1CarrierPhone";
         row.FieldDisplay="Phone";
         if(carrier1!=null) {
             row.OldValDisplay=carrier1.Phone;
             row.OldValObj="";
         }
         else {
             row.OldValDisplay="";
             row.OldValObj="";
         }
         row.NewValDisplay=fieldVal;//whether it's empty or has a value
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins1EmployerName---------------------------------------------
     fieldVal=GetInputValue("ins1EmployerName");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins1EmployerName";
         row.FieldDisplay="Employer";
         if(plan1==null){
             row.OldValDisplay="";
         }
         else{
             row.OldValDisplay=Employers.GetName(plan1.EmployerNum);
         }
         row.OldValObj="";
         row.NewValDisplay=fieldVal;
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins1GroupName---------------------------------------------
     fieldVal=GetInputValue("ins1GroupName");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins1GroupName";
         row.FieldDisplay="Group Name";
         if(plan1!=null) {
             row.OldValDisplay=plan1.GroupName;
         }
         else {
             row.OldValDisplay="";
         }
         row.OldValObj="";
         row.NewValDisplay=fieldVal;
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins1GroupNum---------------------------------------------
     fieldVal=GetInputValue("ins1GroupNum");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins1GroupNum";
         row.FieldDisplay="Group Num";
         if(plan1!=null) {
             row.OldValDisplay=plan1.GroupNum;
         }
         else {
             row.OldValDisplay="";
         }
         row.OldValObj="";
         row.NewValDisplay=fieldVal;
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     #endregion ins1
     //Separator-------------------------------------------
     row=new SheetImportRow();
     row.FieldName="Insurance Policy 2";
     row.IsSeparator=true;
     rows.Add(row);
     #region ins2
     //It turns out that importing insurance is crazy complicated if want it to be perfect.
     //So it's better to table that plan for now.
     //The new strategy is simply to show them what the user entered and notify them if it seems different.
     //ins2Relat------------------------------------------------------------
     fieldVal=GetRadioValue("ins2Relat");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins2Relat";
         row.FieldDisplay="Relationship";
         row.OldValDisplay=Lan.g("enumRelat",ins2Relat.ToString());
         row.OldValObj=ins2Relat;
         if(fieldVal=="") {
             row.NewValDisplay="";
             row.NewValObj=null;
         }
         else {
             try {
                 Relat relat=(Relat)Enum.Parse(typeof(Relat),fieldVal);
                 row.NewValDisplay=Lan.g("enumRelat",relat.ToString());
                 row.NewValObj=relat;
             }
             catch {
                 MessageBox.Show(fieldVal+Lan.g(this," is not a valid Relationship."));
             }
         }
         row.ImpValDisplay="";
         row.ImpValObj=null;
         row.ObjType=typeof(Relat);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins2Subscriber---------------------------------------------
     fieldVal=GetInputValue("ins2SubscriberNameF");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins2Subscriber";
         row.FieldDisplay="Subscriber";
         if(plan2!=null) {
             row.OldValDisplay=fam.GetNameInFamFirst(sub2.Subscriber);
             row.OldValObj=sub2.Subscriber;
         }
         else {
             row.OldValDisplay="";
             row.OldValObj=null;
         }
         row.NewValDisplay=fieldVal;//whether it's empty or has a value
         row.NewValObj=row.NewValDisplay;
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins2SubscriberID---------------------------------------------
     fieldVal=GetInputValue("ins2SubscriberID");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins2SubscriberID";
         row.FieldDisplay="Subscriber ID";
         if(plan2!=null) {
             row.OldValDisplay=sub2.SubscriberID;
             row.OldValObj="";
         }
         else {
             row.OldValDisplay="";
             row.OldValObj="";
         }
         row.NewValDisplay=fieldVal;//whether it's empty or has a value
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins2CarrierName---------------------------------------------
     fieldVal=GetInputValue("ins2CarrierName");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins2CarrierName";
         row.FieldDisplay="Carrier";
         if(carrier2!=null) {
             row.OldValDisplay=carrier2.CarrierName;
             row.OldValObj="";
         }
         else {
             row.OldValDisplay="";
             row.OldValObj="";
         }
         row.NewValDisplay=fieldVal;//whether it's empty or has a value
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins2CarrierPhone---------------------------------------------
     fieldVal=GetInputValue("ins2CarrierPhone");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins2CarrierPhone";
         row.FieldDisplay="Phone";
         if(carrier2!=null) {
             row.OldValDisplay=carrier2.Phone;
             row.OldValObj="";
         }
         else {
             row.OldValDisplay="";
             row.OldValObj="";
         }
         row.NewValDisplay=fieldVal;//whether it's empty or has a value
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins2EmployerName---------------------------------------------
     fieldVal=GetInputValue("ins2EmployerName");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins2EmployerName";
         row.FieldDisplay="Employer";
         if(plan2==null){
             row.OldValDisplay="";
         }
         else{
             row.OldValDisplay=Employers.GetName(plan2.EmployerNum);
         }
         row.OldValObj="";
         row.NewValDisplay=fieldVal;
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins2GroupName---------------------------------------------
     fieldVal=GetInputValue("ins2GroupName");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins2GroupName";
         row.FieldDisplay="Group Name";
         if(plan2!=null) {
             row.OldValDisplay=plan2.GroupName;
         }
         else {
             row.OldValDisplay="";
         }
         row.OldValObj="";
         row.NewValDisplay=fieldVal;
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     //ins2GroupNum---------------------------------------------
     fieldVal=GetInputValue("ins2GroupNum");
     if(fieldVal!=null) {
         row=new SheetImportRow();
         row.FieldName="ins2GroupNum";
         row.FieldDisplay="Group Num";
         if(plan2!=null) {
             row.OldValDisplay=plan2.GroupNum;
         }
         else {
             row.OldValDisplay="";
         }
         row.OldValObj="";
         row.NewValDisplay=fieldVal;
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         if(row.OldValDisplay!=row.NewValDisplay) {
             row.IsFlagged=true;
         }
         rows.Add(row);
     }
     #endregion ins2
     //Separator-------------------------------------------
     row=new SheetImportRow();
     row.FieldName="Misc";
     row.IsSeparator=true;
     rows.Add(row);
     //misc----------------------------------------------------
     List<string> miscVals=GetMiscValues();
     for(int i=0;i<miscVals.Count;i++) {
         fieldVal=miscVals[i];
         row=new SheetImportRow();
         row.FieldName="misc";
         row.FieldDisplay="misc"+(i+1).ToString();
         row.OldValDisplay="";
         row.OldValObj="";
         row.NewValDisplay=fieldVal;
         row.NewValObj="";
         row.ImpValDisplay="";
         row.ImpValObj="";
         row.ObjType=typeof(string);
         row.DoImport=false;
         row.IsFlagged=true;
         rows.Add(row);
     }
 }
Example #2
0
 private bool IsImportable(SheetImportRow row)
 {
     if(row.ImpValObj==null) {
         MsgBox.Show(this,"Please enter a value for this row first.");
         return false;
     }
     return IsEditable(row);
 }
		///<summary>Returns a separator and sets the FieldName to the passed in string.</summary>
		private SheetImportRow CreateSeparator(string displayText) {
			SheetImportRow separator=new SheetImportRow();
			separator.FieldName=displayText;
			separator.IsSeparator=true;
			return separator;
		}
Example #4
0
 ///<summary>Mostly the same as IsImportable.  But subtle differences.</summary>
 private bool IsEditable(SheetImportRow row)
 {
     if(row.FieldName=="wirelessCarrier"){
         MessageBox.Show(row.FieldName+" "+Lan.g(this,"cannot be imported."));
         return false;
     }
     if(row.FieldName=="referredFrom") {
         if(row.OldValObj!=null) {
             MsgBox.Show(this,"This patient already has a referral source selected and it cannot be changed from here.");
             return false;
         }
     }
     if(row.FieldName.StartsWith("ins1") || row.FieldName.StartsWith("ins2")) {
       //if(patPlanList.Count>0) {
       MsgBox.Show(this,"Insurance cannot be imported yet.");
       return false;
       //}
     }
     return true;
 }
		///<summary>This can only be run once when the form first opens.  After that, the rows are just edited.</summary>
		private void FillRows() {
			#region Patient Form
			if(SheetCur.SheetType==SheetTypeEnum.PatientForm) {
				Rows=new List<SheetImportRow>();
				SheetImportRow row;
				string fieldVal;
				Rows.Add(CreateSeparator("Personal"));
				#region personal
				//LName---------------------------------------------
				fieldVal=GetInputValue("LName");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="LName";
					row.OldValDisplay=PatCur.LName;
					row.OldValObj=PatCur.LName;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//FName---------------------------------------------
				fieldVal=GetInputValue("FName");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="FName";
					row.OldValDisplay=PatCur.FName;
					row.OldValObj=PatCur.FName;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//MiddleI---------------------------------------------
				fieldVal=GetInputValue("MiddleI");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="MiddleI";
					row.OldValDisplay=PatCur.MiddleI;
					row.OldValObj=PatCur.MiddleI;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//Preferred---------------------------------------------
				fieldVal=GetInputValue("Preferred");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="Preferred";
					row.OldValDisplay=PatCur.Preferred;
					row.OldValObj=PatCur.Preferred;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//Gender---------------------------------------------
				fieldVal=GetRadioValue("Gender");
				if(fieldVal!=null) {//field exists on form
					row=new SheetImportRow();
					row.FieldName="Gender";
					row.OldValDisplay=Lan.g("enumPatientGender",PatCur.Gender.ToString());
					row.OldValObj=PatCur.Gender;
					if(fieldVal=="") {//no box was checked
						row.NewValDisplay="";
						row.NewValObj=null;
					}
					else {
						try {
							PatientGender gender=(PatientGender)Enum.Parse(typeof(PatientGender),fieldVal);
							row.NewValDisplay=Lan.g("enumPatientGender",gender.ToString());
							row.NewValObj=gender;
						}
						catch {
							MessageBox.Show(fieldVal+Lan.g(this," is not a valid gender."));
						}
					}
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(PatientGender);
					if(row.NewValObj!=null && (PatientGender)row.NewValObj!=PatCur.Gender) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//Position---------------------------------------------
				fieldVal=GetRadioValue("Position");
				if(fieldVal!=null) {//field exists on form
					row=new SheetImportRow();
					row.FieldName="Position";
					row.OldValDisplay=Lan.g("enumPatientPositionr",PatCur.Position.ToString());
					row.OldValObj=PatCur.Position;
					if(fieldVal=="") {//no box was checked
						row.NewValDisplay="";
						row.NewValObj=null;
					}
					else {
						try {
							PatientPosition position=(PatientPosition)Enum.Parse(typeof(PatientPosition),fieldVal);
							row.NewValDisplay=Lan.g("enumPatientPosition",position.ToString());
							row.NewValObj=position;
						}
						catch {
							MessageBox.Show(fieldVal+Lan.g(this," is not a valid PatientPosition."));
						}
					}
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(PatientPosition);
					if(row.NewValObj!=null && (PatientPosition)row.NewValObj!=PatCur.Position) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//Birthdate---------------------------------------------
				fieldVal=GetInputValue("Birthdate");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="Birthdate";
					if(PatCur.Birthdate.Year<1880) {
						row.OldValDisplay="";
					}
					else {
						row.OldValDisplay=PatCur.Birthdate.ToShortDateString();
					}
					row.OldValObj=PatCur.Birthdate;
					row.NewValObj=PIn.Date(fieldVal);
					if(((DateTime)row.NewValObj).Year<1880) {
						row.NewValDisplay="";
					}
					else {
						row.NewValDisplay=((DateTime)row.NewValObj).ToShortDateString();
					}
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(DateTime);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//SSN---------------------------------------------
				fieldVal=GetInputValue("SSN");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="SSN";
					row.OldValDisplay=PatCur.SSN;
					row.OldValObj=PatCur.SSN;
					row.NewValDisplay=fieldVal.Replace("-","");//quickly strip dashes
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//WkPhone---------------------------------------------
				fieldVal=GetInputValue("WkPhone");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="WkPhone";
					row.OldValDisplay=PatCur.WkPhone;
					row.OldValObj=PatCur.WkPhone;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//WirelessPhone---------------------------------------------
				fieldVal=GetInputValue("WirelessPhone");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="WirelessPhone";
					row.OldValDisplay=PatCur.WirelessPhone;
					row.OldValObj=PatCur.WirelessPhone;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//wirelessCarrier---------------------------------------------
				fieldVal=GetInputValue("wirelessCarrier");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="wirelessCarrier";
					row.OldValDisplay="";
					row.OldValObj="";
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					row.IsFlagged=true;//if user entered nothing, the red text won't show anyway.
					Rows.Add(row);
				}
				//Email---------------------------------------------
				fieldVal=GetInputValue("Email");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="Email";
					row.OldValDisplay=PatCur.Email;
					row.OldValObj=PatCur.Email;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//PreferContactMethod---------------------------------------------
				fieldVal=GetRadioValue("PreferContactMethod");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="PreferContactMethod";
					row.OldValDisplay=Lan.g("enumContactMethod",PatCur.PreferContactMethod.ToString());
					row.OldValObj=PatCur.PreferContactMethod;
					if(fieldVal=="") {
						row.NewValDisplay="";
						row.NewValObj=null;
					}
					else {
						try {
							ContactMethod cmeth=(ContactMethod)Enum.Parse(typeof(ContactMethod),fieldVal);
							row.NewValDisplay=Lan.g("enumContactMethod",cmeth.ToString());
							row.NewValObj=cmeth;
						}
						catch {
							MessageBox.Show(fieldVal+Lan.g(this," is not a valid ContactMethod."));
						}
					}
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(ContactMethod);
					if(row.NewValObj!=null && (ContactMethod)row.NewValObj!=PatCur.PreferContactMethod) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//PreferConfirmMethod---------------------------------------------
				fieldVal=GetRadioValue("PreferConfirmMethod");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="PreferConfirmMethod";
					row.OldValDisplay=Lan.g("enumContactMethod",PatCur.PreferConfirmMethod.ToString());
					row.OldValObj=PatCur.PreferConfirmMethod;
					if(fieldVal=="") {
						row.NewValDisplay="";
						row.NewValObj=null;
					}
					else {
						try {
							ContactMethod cmeth=(ContactMethod)Enum.Parse(typeof(ContactMethod),fieldVal);
							row.NewValDisplay=Lan.g("enumContactMethod",cmeth.ToString());
							row.NewValObj=cmeth;
						}
						catch {
							MessageBox.Show(fieldVal+Lan.g(this," is not a valid ContactMethod."));
						}
					}
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(ContactMethod);
					if(row.NewValObj!=null && (ContactMethod)row.NewValObj!=PatCur.PreferConfirmMethod) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//PreferRecallMethod---------------------------------------------
				fieldVal=GetRadioValue("PreferRecallMethod");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="PreferRecallMethod";
					row.OldValDisplay=Lan.g("enumContactMethod",PatCur.PreferRecallMethod.ToString());
					row.OldValObj=PatCur.PreferRecallMethod;
					if(fieldVal=="") {
						row.NewValDisplay="";
						row.NewValObj=null;
					}
					else {
						try {
							ContactMethod cmeth=(ContactMethod)Enum.Parse(typeof(ContactMethod),fieldVal);
							row.NewValDisplay=Lan.g("enumContactMethod",cmeth.ToString());
							row.NewValObj=cmeth;
						}
						catch {
							MessageBox.Show(fieldVal+Lan.g(this," is not a valid ContactMethod."));
						}
					}
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(ContactMethod);
					if(row.NewValObj!=null && (ContactMethod)row.NewValObj!=PatCur.PreferRecallMethod) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//referredFrom---------------------------------------------
				fieldVal=GetInputValue("referredFrom");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="referredFrom";
					Referral refer=Referrals.GetReferralForPat(PatCur.PatNum);
					if(refer==null) {//there was no existing referral
						row.OldValDisplay="";
						row.OldValObj=null;
						row.NewValDisplay=fieldVal;
						row.NewValObj=null;
						if(row.NewValDisplay!="") {//user did enter a referral
							row.ImpValDisplay=Lan.g(this,"[double click to pick]");
							row.ImpValObj=null;
							row.IsFlaggedImp=true;
							row.DoImport=false;//this will change to true after they pick a referral
						}
						else {//user still did not enter a referral
							row.ImpValDisplay="";
							row.ImpValObj=null;
							row.DoImport=false;
						}
					}
					else {//there was an existing referral. We don't allow changing from here since mostly for new patients.
						row.OldValDisplay=refer.GetNameFL();
						row.OldValObj=refer;
						row.NewValDisplay=fieldVal;
						row.NewValObj=null;
						row.ImpValDisplay="";
						row.ImpValObj=null;
						row.DoImport=false;
						if(row.OldValDisplay!=row.NewValDisplay) {//if patient changed an existing referral, at least let user know.
							row.IsFlagged=true;//although they won't be able to do anything about it here
						}
					}
					row.ObjType=typeof(Referral);
					Rows.Add(row);
				}
				#endregion personal
				//Separator-------------------------------------------
				Rows.Add(CreateSeparator("Address and Home Phone"));
				#region address
				//SameForEntireFamily-------------------------------------------
				if(ContainsOneOfFields("addressAndHmPhoneIsSameEntireFamily")) {
					row=new SheetImportRow();
					row.FieldName="addressAndHmPhoneIsSameEntireFamily";
					row.FieldDisplay="Same for entire family";
					if(AddressSameForFam) {//remember we calculated this in the form constructor.
						row.OldValDisplay="X";
						row.OldValObj="X";
					}
					else {
						row.OldValDisplay="";
						row.OldValObj="";
					}
					//And now, we will revise AddressSameForFam based on user input
					AddressSameForFam=IsChecked("addressAndHmPhoneIsSameEntireFamily");
					if(AddressSameForFam) {
						row.NewValDisplay="X";
						row.NewValObj="X";
						row.ImpValDisplay="X";
						row.ImpValObj="X";
					}
					else {
						row.NewValDisplay="";
						row.NewValObj="";
						row.ImpValDisplay="";
						row.ImpValObj="";
					}
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//Address---------------------------------------------
				fieldVal=GetInputValue("Address");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="Address";
					row.OldValDisplay=PatCur.Address;
					row.OldValObj=PatCur.Address;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//Address2---------------------------------------------
				fieldVal=GetInputValue("Address2");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="Address2";
					row.OldValDisplay=PatCur.Address2;
					row.OldValObj=PatCur.Address2;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//City---------------------------------------------
				fieldVal=GetInputValue("City");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="City";
					row.OldValDisplay=PatCur.City;
					row.OldValObj=PatCur.City;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//State---------------------------------------------
				fieldVal=GetInputValue("State");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="State";
					row.OldValDisplay=PatCur.State;
					row.OldValObj=PatCur.State;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//Zip---------------------------------------------
				fieldVal=GetInputValue("Zip");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="Zip";
					row.OldValDisplay=PatCur.Zip;
					row.OldValObj=PatCur.Zip;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//HmPhone---------------------------------------------
				fieldVal=GetInputValue("HmPhone");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="HmPhone";
					row.OldValDisplay=PatCur.HmPhone;
					row.OldValObj=PatCur.HmPhone;
					row.NewValDisplay=fieldVal;
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				#endregion address
				//Separator-------------------------------------------
				Rows.Add(CreateSeparator("Insurance Policy 1"));
				#region ins1
				//It turns out that importing insurance is crazy complicated if we want it to be perfect.
				//So it's better to table that plan for now.
				//The new strategy is simply to show them what the user entered and notify them if it seems different.
				//ins1Relat------------------------------------------------------------
				fieldVal=GetRadioValue("ins1Relat");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins1Relat";
					row.FieldDisplay="Relationship";
					row.OldValDisplay=Lan.g("enumRelat",Ins1Relat.ToString());
					row.OldValObj=Ins1Relat;
					if(fieldVal=="") {
						row.NewValDisplay="";
						row.NewValObj=null;
					}
					else {
						try {
							Relat relat=(Relat)Enum.Parse(typeof(Relat),fieldVal);
							row.NewValDisplay=Lan.g("enumRelat",relat.ToString());
							row.NewValObj=relat;
						}
						catch {
							MessageBox.Show(fieldVal+Lan.g(this," is not a valid Relationship."));
						}
					}
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(Relat);
					row.DoImport=false;
					if(row.NewValObj!=null && row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//ins1Subscriber---------------------------------------------
				fieldVal=GetInputValue("ins1SubscriberNameF");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins1Subscriber";
					row.FieldDisplay="Subscriber";
					if(Plan1!=null) {
						row.OldValDisplay=Fam.GetNameInFamFirst(Sub1.Subscriber);
						row.OldValObj=Sub1.Subscriber;
					}
					else {
						row.OldValDisplay="";
						row.OldValObj=null;
					}
					row.NewValDisplay=fieldVal;//whether it's empty or has a value					
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay="[double click to pick]";
					row.ImpValObj=null;
					row.ObjType=typeof(Patient);
					row.DoImport=false;
					row.IsFlaggedImp=true;
					Rows.Add(row);
				}
				//ins1SubscriberID---------------------------------------------
				fieldVal=GetInputValue("ins1SubscriberID");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins1SubscriberID";
					row.FieldDisplay="Subscriber ID";
					if(Plan1!=null) {
						row.OldValDisplay=Sub1.SubscriberID;
						row.OldValObj="";
					}
					else {
						row.OldValDisplay="";
						row.OldValObj="";
					}
					row.NewValDisplay=fieldVal;//whether it's empty or has a value					
					row.NewValObj=fieldVal;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//ins1CarrierName---------------------------------------------
				fieldVal=GetInputValue("ins1CarrierName");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins1CarrierName";
					row.FieldDisplay="Carrier";
					if(Carrier1!=null) {
						row.OldValDisplay=Carrier1.CarrierName;
						row.OldValObj=Carrier1;
					}
					else {
						row.OldValDisplay="";
						row.OldValObj="";
					}
					row.NewValDisplay=fieldVal;//whether it's empty or has a value					
					row.NewValObj="";
					row.ImpValDisplay="[double click to pick]";
					row.ImpValObj=null;
					row.ObjType=typeof(Carrier);
					row.DoImport=false;
					row.IsFlaggedImp=true;
					Rows.Add(row);
				}
				//ins1CarrierPhone---------------------------------------------
				fieldVal=GetInputValue("ins1CarrierPhone");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins1CarrierPhone";
					row.FieldDisplay="Phone";
					if(Carrier1!=null) {
						row.OldValDisplay=Carrier1.Phone;
						row.OldValObj="";
					}
					else {
						row.OldValDisplay="";
						row.OldValObj="";
					}
					row.NewValDisplay=fieldVal;//whether it's empty or has a value					
					row.NewValObj="";
					row.ImpValDisplay="[double click to pick]";
					row.ImpValObj=null;
					row.ObjType=typeof(Carrier);
					row.DoImport=false;
					row.IsFlaggedImp=true;
					Rows.Add(row);
				}
				//ins1EmployerName---------------------------------------------
				fieldVal=GetInputValue("ins1EmployerName");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins1EmployerName";
					row.FieldDisplay="Employer";
					if(Plan1==null) {
						row.OldValDisplay="";
						row.OldValObj="";
					}
					else {
						row.OldValDisplay=Employers.GetName(Plan1.EmployerNum);
						row.OldValObj=Employers.GetEmployer(Plan1.EmployerNum);
					}
					row.NewValDisplay=fieldVal;
					row.NewValObj=fieldVal;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//ins1GroupName---------------------------------------------
				fieldVal=GetInputValue("ins1GroupName");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins1GroupName";
					row.FieldDisplay="Group Name";
					if(Plan1!=null) {
						row.OldValDisplay=Plan1.GroupName;
					}
					else {
						row.OldValDisplay="";
					}
					row.OldValObj="";
					row.NewValDisplay=fieldVal;
					row.NewValObj=fieldVal;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//ins1GroupNum---------------------------------------------
				fieldVal=GetInputValue("ins1GroupNum");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins1GroupNum";
					row.FieldDisplay="Group Num";
					if(Plan1!=null) {
						row.OldValDisplay=Plan1.GroupNum;
					}
					else {
						row.OldValDisplay="";
					}
					row.OldValObj="";
					row.NewValDisplay=fieldVal;
					row.NewValObj=fieldVal;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				#endregion ins1
				//Separator-------------------------------------------
				Rows.Add(CreateSeparator("Insurance Policy 2"));
				#region ins2
				//It turns out that importing insurance is crazy complicated if want it to be perfect.
				//So it's better to table that plan for now.
				//The new strategy is simply to show them what the user entered and notify them if it seems different.
				//ins2Relat------------------------------------------------------------
				fieldVal=GetRadioValue("ins2Relat");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins2Relat";
					row.FieldDisplay="Relationship";
					row.OldValDisplay=Lan.g("enumRelat",Ins2Relat.ToString());
					row.OldValObj=Ins2Relat;
					if(fieldVal=="") {
						row.NewValDisplay="";
						row.NewValObj=null;
					}
					else {
						try {
							Relat relat=(Relat)Enum.Parse(typeof(Relat),fieldVal);
							row.NewValDisplay=Lan.g("enumRelat",relat.ToString());
							row.NewValObj=relat;
						}
						catch {
							MessageBox.Show(fieldVal+Lan.g(this," is not a valid Relationship."));
						}
					}
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(Relat);
					row.DoImport=false;
					if(row.NewValObj!=null && row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//ins2Subscriber---------------------------------------------
				fieldVal=GetInputValue("ins2SubscriberNameF");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins2Subscriber";
					row.FieldDisplay="Subscriber";
					if(Plan2!=null) {
						row.OldValDisplay=Fam.GetNameInFamFirst(Sub2.Subscriber);
						row.OldValObj=Sub2.Subscriber;
					}
					else {
						row.OldValDisplay="";
						row.OldValObj=null;
					}
					row.NewValDisplay=fieldVal;//whether it's empty or has a value					
					row.NewValObj=row.NewValDisplay;
					row.ImpValDisplay="[double click to pick]";
					row.ImpValObj=null;
					row.ObjType=typeof(Patient);
					row.DoImport=false;
					row.IsFlaggedImp=true;
					Rows.Add(row);
				}
				//ins2SubscriberID---------------------------------------------
				fieldVal=GetInputValue("ins2SubscriberID");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins2SubscriberID";
					row.FieldDisplay="Subscriber ID";
					if(Plan2!=null) {
						row.OldValDisplay=Sub2.SubscriberID;
						row.OldValObj="";
					}
					else {
						row.OldValDisplay="";
						row.OldValObj="";
					}
					row.NewValDisplay=fieldVal;//whether it's empty or has a value					
					row.NewValObj=fieldVal;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//ins2CarrierName---------------------------------------------
				fieldVal=GetInputValue("ins2CarrierName");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins2CarrierName";
					row.FieldDisplay="Carrier";
					if(Carrier2!=null) {
						row.OldValDisplay=Carrier2.CarrierName;
						row.OldValObj="";
					}
					else {
						row.OldValDisplay="";
						row.OldValObj="";
					}
					row.NewValDisplay=fieldVal;//whether it's empty or has a value					
					row.NewValObj="";
					row.ImpValDisplay="[double click to pick]";
					row.ImpValObj=null;
					row.ObjType=typeof(Carrier);
					row.DoImport=false;
					row.IsFlaggedImp=true;
					Rows.Add(row);
				}
				//ins2CarrierPhone---------------------------------------------
				fieldVal=GetInputValue("ins2CarrierPhone");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins2CarrierPhone";
					row.FieldDisplay="Phone";
					if(Carrier2!=null) {
						row.OldValDisplay=Carrier2.Phone;
						row.OldValObj="";
					}
					else {
						row.OldValDisplay="";
						row.OldValObj="";
					}
					row.NewValDisplay=fieldVal;//whether it's empty or has a value					
					row.NewValObj="";
					row.ImpValDisplay="[double click to pick]";
					row.ImpValObj=null;
					row.ObjType=typeof(Carrier);
					row.DoImport=false;
					row.IsFlaggedImp=true;
					Rows.Add(row);
				}
				//ins2EmployerName---------------------------------------------
				fieldVal=GetInputValue("ins2EmployerName");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins2EmployerName";
					row.FieldDisplay="Employer";
					if(Plan2==null) {
						row.OldValDisplay="";
					}
					else {
						row.OldValDisplay=Employers.GetName(Plan2.EmployerNum);
					}
					row.OldValObj="";
					row.NewValDisplay=fieldVal;
					row.NewValObj=fieldVal;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//ins2GroupName---------------------------------------------
				fieldVal=GetInputValue("ins2GroupName");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins2GroupName";
					row.FieldDisplay="Group Name";
					if(Plan2!=null) {
						row.OldValDisplay=Plan2.GroupName;
					}
					else {
						row.OldValDisplay="";
					}
					row.OldValObj="";
					row.NewValDisplay=fieldVal;
					row.NewValObj=fieldVal;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				//ins2GroupNum---------------------------------------------
				fieldVal=GetInputValue("ins2GroupNum");
				if(fieldVal!=null) {
					row=new SheetImportRow();
					row.FieldName="ins2GroupNum";
					row.FieldDisplay="Group Num";
					if(Plan2!=null) {
						row.OldValDisplay=Plan2.GroupNum;
					}
					else {
						row.OldValDisplay="";
					}
					row.OldValObj="";
					row.NewValDisplay=fieldVal;
					row.NewValObj=fieldVal;
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=row.NewValObj;
					row.ObjType=typeof(string);
					row.DoImport=false;
					if(row.OldValDisplay!=row.NewValDisplay) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				#endregion ins2
				//Separator-------------------------------------------
				Rows.Add(CreateSeparator("Misc"));
				//misc----------------------------------------------------
				List<string> miscVals=GetMiscValues();
				for(int i=0;i<miscVals.Count;i++) {
					fieldVal=miscVals[i];
					row=new SheetImportRow();
					row.FieldName="misc";
					row.FieldDisplay="misc"+(i+1).ToString();
					row.OldValDisplay="";
					row.OldValObj="";
					row.NewValDisplay=fieldVal;
					row.NewValObj="";
					row.ImpValDisplay="";
					row.ImpValObj="";
					row.ObjType=typeof(string);
					row.DoImport=false;
					row.IsFlagged=true;
					Rows.Add(row);
				}
			}
			#endregion
			#region Medical History
			else if(SheetCur.SheetType==SheetTypeEnum.MedicalHistory) {
				Rows=new List<SheetImportRow>();
				string fieldVal="";
				List<Allergy> allergies=null;
				List<Disease> diseases=null;
				SheetImportRow row;
				Rows.Add(CreateSeparator("Allergies"));
				#region Allergies
				//Get list of all the allergy check boxes
				List<SheetField> allergyList=GetSheetFieldsByFieldName("allergy:");
				for(int i=0;i<allergyList.Count;i++) {
					fieldVal="";
					if(i<1) {
						allergies=Allergies.GetAll(PatCur.PatNum,true);
					}
					row=new SheetImportRow();
					row.FieldName=allergyList[i].FieldName.Remove(0,8);
					row.OldValDisplay="";
					row.OldValObj=null;
					//Check if allergy exists.
					for(int j=0;j<allergies.Count;j++) {
						if(AllergyDefs.GetDescription(allergies[j].AllergyDefNum)==allergyList[i].FieldName.Remove(0,8)) {
							if(allergies[j].StatusIsActive) {
								row.OldValDisplay="Y";
							}
							else {
								row.OldValDisplay="N";
							}
							row.OldValObj=allergies[j];
							break;
						}
					}
					SheetField oppositeBox=GetOppositeSheetFieldCheckBox(allergyList,allergyList[i]);
					if(allergyList[i].FieldValue=="") {//Current box not checked.
						if(oppositeBox==null || oppositeBox.FieldValue=="") {//No opposite box or both boxes are not checked.
							//Create a blank row just in case they want to import.
							row.NewValDisplay="";
							row.NewValObj=allergyList[i];
							row.ImpValDisplay="";
							row.ImpValObj="";
							row.ObjType=typeof(Allergy);
							Rows.Add(row);
							if(oppositeBox!=null) {
								allergyList.Remove(oppositeBox);//Removes possible duplicate entry.
							}
							continue;
						}
						//Opposite box is checked, figure out if it's a Y or N box.
						if(oppositeBox.RadioButtonValue=="Y") {
							fieldVal="Y";
						}
						else {
							fieldVal="N";
						}
					}
					else {//Current box is checked.  
						if(allergyList[i].RadioButtonValue=="Y") {
							fieldVal="Y";
						}
						else {
							fieldVal="N";
						}
					}
					//Get rid of the opposite check box so field doesn't show up twice.
					if(oppositeBox!=null) {
						allergyList.Remove(oppositeBox);
					}
					row.NewValDisplay=fieldVal;
					row.NewValObj=allergyList[i];
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=typeof(string);
					row.ObjType=typeof(Allergy);
					if(row.OldValDisplay!=row.NewValDisplay && !(row.OldValDisplay=="" && row.NewValDisplay=="N")) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				#endregion
				//Separator-------------------------------------------
				Rows.Add(CreateSeparator("Medications"));
				#region Medications
				List<SheetField> inputMedList=GetSheetFieldsByFieldName("inputMed");
				List<SheetField> checkMedList=GetSheetFieldsByFieldName("checkMed");
				List<SheetField> currentMedList=new List<SheetField>();
				List<SheetField> newMedList=new List<SheetField>();
				for(int i=0;i<inputMedList.Count;i++) {
					if(inputMedList[i].FieldType==SheetFieldType.OutputText) {
						currentMedList.Add(inputMedList[i]);
					}
					else {//User might have tried to type in a new medication they are taking.
						newMedList.Add(inputMedList[i]);
					}
				}
				List<MedicationPat> listMedPatFull=MedicationPats.Refresh(PatCur.PatNum,false);
				for(int i=0;i<currentMedList.Count;i++) {
					#region existing medications
					fieldVal="";
					row=new SheetImportRow();
					row.FieldName=currentMedList[i].FieldValue;//Will be the name of the drug.
					row.OldValDisplay="N";
					row.OldValObj=null;
					for(int j=0;j<listMedPatFull.Count;j++) {
						string strMedName=listMedPatFull[j].MedDescript;//for meds that came back from NewCrop
						if(listMedPatFull[j].MedicationNum!=0) {//For meds entered in OD and linked to Medication list.
							strMedName=Medications.GetDescription(listMedPatFull[j].MedicationNum);
						}
						if(currentMedList[i].FieldValue==strMedName) {
							row.OldValDisplay="Y";
							row.OldValObj=listMedPatFull[j];
						}
					}
					List<SheetField> relatedChkBoxes=GetRelatedMedicalCheckBoxes(checkMedList,currentMedList[i]);
					for(int j=0;j<relatedChkBoxes.Count;j++) {//Figure out which corresponding checkbox is checked.
						if(relatedChkBoxes[j].FieldValue!="") {//Patient checked this box.
							if(checkMedList[j].RadioButtonValue=="Y") {
								fieldVal="Y";
							}
							else {
								fieldVal="N";
							}
							break;
						}
						//If sheet is only using N boxes and the patient already had this med marked as inactive and then they unchecked the N, so now we need to import it.
						if(relatedChkBoxes.Count==1 && relatedChkBoxes[j].RadioButtonValue=="N" //Only using N boxes for this current medication.
							&& row.OldValObj!=null && row.OldValDisplay=="N"											//Patient has this medication but is currently marked as inactive.
							&& relatedChkBoxes[j].FieldValue=="")																	//Patient unchecked the medication so we activate it again.
						{
							fieldVal="Y";
						}
					}
					if(relatedChkBoxes.Count==1 && relatedChkBoxes[0].RadioButtonValue=="N" && relatedChkBoxes[0].FieldValue=="" && row.OldValDisplay=="N" && row.OldValObj!=null) {
						row.DoImport=true;
					}
					row.NewValDisplay=fieldVal;
					row.NewValObj=currentMedList[i];
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=typeof(string);
					row.ObjType=typeof(MedicationPat);
					if(row.OldValDisplay!=row.NewValDisplay && row.NewValDisplay!="") {
						row.DoImport=true;
					}
					Rows.Add(row);
					#endregion
				}
				for(int i=0;i<newMedList.Count;i++) {
					#region medications the patient entered
					if(newMedList[i].FieldValue=="") {//No medication entered by patient.
						continue;
					}
					row=new SheetImportRow();
					row.FieldName=newMedList[i].FieldValue;//Whatever the patient typed in...
					row.OldValDisplay="";
					row.OldValObj=null;
					row.NewValDisplay="Y";
					row.NewValObj=newMedList[i];
					row.ImpValDisplay=Lan.g(this,"[double click to pick]");
					row.ImpValObj=new long();
					row.IsFlaggedImp=true;
					row.DoImport=false;//this will change to true after they pick a medication
					row.ObjType=typeof(MedicationPat);
					Rows.Add(row);
					#endregion
				}
				#endregion
				//Separator-------------------------------------------
				Rows.Add(CreateSeparator("Problems"));
				#region Problems
				List<SheetField> problemList=GetSheetFieldsByFieldName("problem:");
				for(int i=0;i<problemList.Count;i++) {
					fieldVal="";
					if(i<1) {
						diseases=Diseases.Refresh(PatCur.PatNum,false);
					}
					row=new SheetImportRow();
					row.FieldName=problemList[i].FieldName.Remove(0,8);
					//Figure out the current status of this allergy
					row.OldValDisplay="";
					row.OldValObj=null;
					for(int j=0;j<diseases.Count;j++) {
						if(DiseaseDefs.GetName(diseases[j].DiseaseDefNum)==problemList[i].FieldName.Remove(0,8)) {
							if(diseases[j].ProbStatus==ProblemStatus.Active) {
								row.OldValDisplay="Y";
							}
							else {
								row.OldValDisplay="N";
							}
							row.OldValObj=diseases[j];
							break;
						}
					}
					SheetField oppositeBox=GetOppositeSheetFieldCheckBox(problemList,problemList[i]);
					if(problemList[i].FieldValue=="") {//Current box not checked.
						if(oppositeBox==null || oppositeBox.FieldValue=="") {//No opposite box or both boxes are not checked.
							//Create a blank row just in case they still want to import.
							row.NewValDisplay="";
							row.NewValObj=problemList[i];
							row.ImpValDisplay="";
							row.ImpValObj="";
							row.ObjType=typeof(Disease);
							Rows.Add(row);
							if(oppositeBox!=null) {
								problemList.Remove(oppositeBox);//Removes possible duplicate entry.
							}
							continue;
						}
						//Opposite box is checked, figure out if it's a Y or N box.
						if(oppositeBox.RadioButtonValue=="Y") {
							fieldVal="Y";
						}
						else {
							fieldVal="N";
						}
					}
					else {//Current box is checked.  
						if(problemList[i].RadioButtonValue=="Y") {
							fieldVal="Y";
						}
						else {
							fieldVal="N";
						}
					}
					//Get rid of the opposite check box so field doesn't show up twice.
					if(oppositeBox!=null) {
						problemList.Remove(oppositeBox);
					}
					row.NewValDisplay=fieldVal;
					row.NewValObj=problemList[i];
					row.ImpValDisplay=row.NewValDisplay;
					row.ImpValObj=typeof(string);
					row.ObjType=typeof(Disease);
					if(row.OldValDisplay!=row.NewValDisplay && !(row.OldValDisplay=="" && row.NewValDisplay=="N")) {
						row.DoImport=true;
					}
					Rows.Add(row);
				}
				#endregion
			}
			#endregion 
		}