Пример #1
0
 private void gridMain_CellDoubleClick(object sender,ODGridClickEventArgs e)
 {
     if(e.Col!=3) {
         return;
     }
     if(rows[e.Row].IsSeparator) {
         return;
     }
     if(!IsEditable(rows[e.Row])){
         return;
     }
     if(rows[e.Row].FieldName=="referredFrom") {
         FormReferralSelect formRS=new FormReferralSelect();
         formRS.IsSelectionMode=true;
         formRS.ShowDialog();
         if(formRS.DialogResult!=DialogResult.OK) {
             return;
         }
         Referral referralSelected=formRS.SelectedReferral;
         rows[e.Row].DoImport=true;
         rows[e.Row].IsFlaggedImp=false;
         rows[e.Row].ImpValDisplay=referralSelected.GetNameFL();
         rows[e.Row].ImpValObj=referralSelected;
     }
     else if(rows[e.Row].ObjType==typeof(string)) {
         InputBox inputbox=new InputBox(rows[e.Row].FieldName);
         inputbox.textResult.Text=rows[e.Row].ImpValDisplay;
         inputbox.ShowDialog();
         if(inputbox.DialogResult!=DialogResult.OK) {
             return;
         }
         if(rows[e.Row].FieldName=="addressAndHmPhoneIsSameEntireFamily") {
             if(inputbox.textResult.Text==""){
                 AddressSameForFam=false;
             }
             else if(inputbox.textResult.Text!="X") {
                 AddressSameForFam=true;
             }
             else{
                 MsgBox.Show(this,"The only allowed values are X or blank.");
                 return;
             }
         }
         if(rows[e.Row].OldValDisplay==inputbox.textResult.Text) {//value is now same as original
             rows[e.Row].DoImport=false;
         }
         else {
             rows[e.Row].DoImport=true;
         }
         rows[e.Row].ImpValDisplay=inputbox.textResult.Text;
         rows[e.Row].ImpValObj=inputbox.textResult.Text;
     }
     /*else if(rows[e.Row].ObjType.IsGenericType){//==typeof(Nullable)) {
         Type underlyingT=Nullable.GetUnderlyingType(rows[e.Row].ObjType);
         FormSheetImportEnumPicker formEnum=new FormSheetImportEnumPicker(rows[e.Row].FieldName);
         formEnum.ShowClearButton=true;
         for(int i=0;i<Enum.GetNames(underlyingT).Length;i++) {
             formEnum.comboResult.Items.Add(Enum.GetNames(underlyingT)[i]);
             if(rows[e.Row].ImpValObj!=null && i==(int)rows[e.Row].ImpValObj) {
                 formEnum.comboResult.SelectedIndex=i;
             }
         }
         formEnum.ShowDialog();
         if(formEnum.DialogResult==DialogResult.OK) {
             int selectedI=formEnum.comboResult.SelectedIndex;
             if(rows[e.Row].ImpValObj==null) {//was initially null
                 if(selectedI!=-1) {//an item was selected
                     rows[e.Row].ImpValObj=Enum.ToObject(underlyingT,selectedI);
                     rows[e.Row].ImpValDisplay=rows[e.Row].ImpValObj.ToString();
                 }
             }
             else {//was not initially null
                 if((int)rows[e.Row].ImpValObj!=selectedI) {//value was changed.
                     if(selectedI==-1){
                         rows[e.Row].ImpValObj=null;
                         rows[e.Row].ImpValDisplay="";
                     }
                     else{
                         rows[e.Row].ImpValObj=Enum.ToObject(underlyingT,selectedI);
                         rows[e.Row].ImpValDisplay=rows[e.Row].ImpValObj.ToString();
                     }
                 }
             }
             if(patPlanList.Count>0) {
                 rows[e.Row].DoImport=false;//can't change an existing plan from here.
             }
             else if(selectedI==-1) {
                 if(rows[e.Row].OldValObj==null){
                     rows[e.Row].DoImport=false;//no change
                 }
                 else{
                     rows[e.Row].DoImport=true;
                 }
             }
             else if((int)rows[e.Row].ImpValObj==(int)rows[e.Row].OldValObj) {//it's the old setting for the patient, whether or not they actually changed it.
                 rows[e.Row].DoImport=false;//so no need to import
             }
             else {
                 rows[e.Row].DoImport=true;
             }
         }
     }*/
     else if(rows[e.Row].ObjType.IsEnum) {
         //Note.  This only works for zero-indexed enums.
         FormSheetImportEnumPicker formEnum=new FormSheetImportEnumPicker(rows[e.Row].FieldName);
         for(int i=0;i<Enum.GetNames(rows[e.Row].ObjType).Length;i++) {
             formEnum.comboResult.Items.Add(Enum.GetNames(rows[e.Row].ObjType)[i]);
             if(rows[e.Row].ImpValObj!=null && i==(int)rows[e.Row].ImpValObj) {
                 formEnum.comboResult.SelectedIndex=i;
             }
         }
         formEnum.ShowDialog();
         if(formEnum.DialogResult==DialogResult.OK) {
             int selectedI=formEnum.comboResult.SelectedIndex;
             if(rows[e.Row].ImpValObj==null) {//was initially null
                 if(selectedI!=-1) {//an item was selected
                     rows[e.Row].ImpValObj=Enum.ToObject(rows[e.Row].ObjType,selectedI);
                     rows[e.Row].ImpValDisplay=rows[e.Row].ImpValObj.ToString();
                 }
             }
             else {//was not initially null
                 if((int)rows[e.Row].ImpValObj!=selectedI) {//value was changed.
                     //There's no way for the user to set it to null, so we do not need to test that
                     rows[e.Row].ImpValObj=Enum.ToObject(rows[e.Row].ObjType,selectedI);
                     rows[e.Row].ImpValDisplay=rows[e.Row].ImpValObj.ToString();
                 }
             }
             if(selectedI==-1) {
                 rows[e.Row].DoImport=false;//impossible to import a null
             }
             else if((int)rows[e.Row].ImpValObj==(int)rows[e.Row].OldValObj) {//it's the old setting for the patient, whether or not they actually changed it.
                 rows[e.Row].DoImport=false;//so no need to import
             }
             else {
                 rows[e.Row].DoImport=true;
             }
         }
     }
     else if(rows[e.Row].ObjType==typeof(DateTime)) {//this is only for one field so far: Birthdate
         InputBox inputbox=new InputBox(rows[e.Row].FieldName);
         inputbox.textResult.Text=rows[e.Row].ImpValDisplay;
         inputbox.ShowDialog();
         if(inputbox.DialogResult!=DialogResult.OK) {
             return;
         }
         DateTime enteredDate;
         if(inputbox.textResult.Text=="") {
             enteredDate=DateTime.MinValue;
             rows[e.Row].ImpValObj=enteredDate;
             rows[e.Row].ImpValDisplay="";
         }
         else {
             try {
                 enteredDate=DateTime.Parse(inputbox.textResult.Text);
             }
             catch {
                 MsgBox.Show(this,"Invalid date");
                 return;
             }
             if(enteredDate.Year<1880 || enteredDate.Year>2050) {
                 MsgBox.Show(this,"Invalid date");
                 return;
             }
             rows[e.Row].ImpValObj=enteredDate;
             rows[e.Row].ImpValDisplay=enteredDate.ToShortDateString();
         }
         if(rows[e.Row].ImpValDisplay==rows[e.Row].OldValDisplay) {//value is now same as original
             rows[e.Row].DoImport=false;
         }
         else {
             rows[e.Row].DoImport=true;
         }
     }
     FillGrid();
 }
Пример #2
0
		private void gridMain_CellDoubleClick(object sender,ODGridClickEventArgs e) {
			if(e.Col!=3) {
				return;
			}
			if(Rows[e.Row].IsSeparator) {
				return;
			}
			if(!IsEditable(Rows[e.Row])){
				return;
			}
			if(Rows[e.Row].FieldName=="referredFrom") {
				FormReferralSelect formRS=new FormReferralSelect();
				formRS.IsSelectionMode=true;
				formRS.ShowDialog();
				if(formRS.DialogResult!=DialogResult.OK) {
					return;
				}
				Referral referralSelected=formRS.SelectedReferral;
				Rows[e.Row].DoImport=true;
				Rows[e.Row].IsFlaggedImp=false;
				Rows[e.Row].ImpValDisplay=referralSelected.GetNameFL();
				Rows[e.Row].ImpValObj=referralSelected;
			}
			#region string
			else if(Rows[e.Row].ObjType==typeof(string)) {
				InputBox inputbox=new InputBox(Rows[e.Row].FieldName);
				inputbox.textResult.Text=Rows[e.Row].ImpValDisplay;
				inputbox.ShowDialog();
				if(inputbox.DialogResult!=DialogResult.OK) {
					return;
				}
				if(Rows[e.Row].FieldName=="addressAndHmPhoneIsSameEntireFamily") {
					if(inputbox.textResult.Text=="") {
						AddressSameForFam=false;
					}
					else if(inputbox.textResult.Text!="X") {
						AddressSameForFam=true;
					}
					else {
						MsgBox.Show(this,"The only allowed values are X or blank.");
						return;
					}
				}
				if(Rows[e.Row].OldValDisplay==inputbox.textResult.Text) {//value is now same as original
					Rows[e.Row].DoImport=false;
				}
				else {
					Rows[e.Row].DoImport=true;
				}
				Rows[e.Row].ImpValDisplay=inputbox.textResult.Text;
				Rows[e.Row].ImpValObj=inputbox.textResult.Text;
			}
			#endregion
			#region Enum
			else if(Rows[e.Row].ObjType.IsEnum) {
				//Note.  This only works for zero-indexed enums.
				FormSheetImportEnumPicker formEnum=new FormSheetImportEnumPicker(Rows[e.Row].FieldName);
				for(int i=0;i<Enum.GetNames(Rows[e.Row].ObjType).Length;i++) {
					formEnum.listResult.Items.Add(Enum.GetNames(Rows[e.Row].ObjType)[i]);
					if(Rows[e.Row].ImpValObj!=null && i==(int)Rows[e.Row].ImpValObj) {
						formEnum.listResult.SelectedIndex=i;
					}
				}
				formEnum.ShowDialog();
				if(formEnum.DialogResult==DialogResult.OK) {
					int selectedI=formEnum.listResult.SelectedIndex;
					if(Rows[e.Row].ImpValObj==null) {//was initially null
						if(selectedI!=-1) {//an item was selected
							Rows[e.Row].ImpValObj=Enum.ToObject(Rows[e.Row].ObjType,selectedI);
							Rows[e.Row].ImpValDisplay=Rows[e.Row].ImpValObj.ToString();
						}
					}
					else {//was not initially null
						if((int)Rows[e.Row].ImpValObj!=selectedI) {//value was changed.
							//There's no way for the user to set it to null, so we do not need to test that
							Rows[e.Row].ImpValObj=Enum.ToObject(Rows[e.Row].ObjType,selectedI);
							Rows[e.Row].ImpValDisplay=Rows[e.Row].ImpValObj.ToString();
						}
					}
					if(selectedI==-1) {
						Rows[e.Row].DoImport=false;//impossible to import a null
					}
					else if(Rows[e.Row].OldValObj!=null && (int)Rows[e.Row].ImpValObj==(int)Rows[e.Row].OldValObj) {//it's the old setting for the patient, whether or not they actually changed it.
						Rows[e.Row].DoImport=false;//so no need to import
					}
					else {
						Rows[e.Row].DoImport=true;
					}
				}
			}
			#endregion
			#region DateTime
			else if(Rows[e.Row].ObjType==typeof(DateTime)) {//this is only for one field so far: Birthdate
				InputBox inputbox=new InputBox(Rows[e.Row].FieldName);
				inputbox.textResult.Text=Rows[e.Row].ImpValDisplay;
				inputbox.ShowDialog();
				if(inputbox.DialogResult!=DialogResult.OK) {
					return;
				}
				DateTime enteredDate;
				if(inputbox.textResult.Text=="") {
					enteredDate=DateTime.MinValue;
					Rows[e.Row].ImpValObj=enteredDate;
					Rows[e.Row].ImpValDisplay="";
				}
				else {
					try {
						enteredDate=DateTime.Parse(inputbox.textResult.Text);
					}
					catch {
						MsgBox.Show(this,"Invalid date");
						return;
					}
					if(enteredDate.Year<1880 || enteredDate.Year>2050) {
						MsgBox.Show(this,"Invalid date");
						return;
					}
					Rows[e.Row].ImpValObj=enteredDate;
					Rows[e.Row].ImpValDisplay=enteredDate.ToShortDateString();
				}
				if(Rows[e.Row].ImpValDisplay==Rows[e.Row].OldValDisplay) {//value is now same as original
					Rows[e.Row].DoImport=false;
				}
				else {
					Rows[e.Row].DoImport=true;
				}
			}
			#endregion
			#region Medication, Allergy or Disease
			else if(Rows[e.Row].ObjType==typeof(MedicationPat)
				|| Rows[e.Row].ObjType==typeof(Allergy)
				|| Rows[e.Row].ObjType==typeof(Disease)) 
			{
				//User entered medications will have a MedicationNum as the ImpValObj.
				if(Rows[e.Row].ImpValObj.GetType()==typeof(long)) {
					FormMedications FormM=new FormMedications();
					FormM.IsSelectionMode=true;
					FormM.textSearch.Text=Rows[e.Row].FieldName;
					FormM.ShowDialog();
					if(FormM.DialogResult!=DialogResult.OK) {
						return;
					}
					Rows[e.Row].ImpValDisplay="Y";
					Rows[e.Row].ImpValObj=FormM.SelectedMedicationNum;
					string descript=Medications.GetDescription(FormM.SelectedMedicationNum);
					Rows[e.Row].FieldDisplay=descript;
					((SheetField)Rows[e.Row].NewValObj).FieldValue=descript;
					Rows[e.Row].NewValDisplay="Y";
					Rows[e.Row].DoImport=true;
					Rows[e.Row].IsFlaggedImp=false;
				}
				else {
					FormSheetImportEnumPicker FormIEP=new FormSheetImportEnumPicker(Rows[e.Row].FieldName);
					for(int i=0;i<Enum.GetNames(typeof(YN)).Length;i++) {
						FormIEP.listResult.Items.Add(Enum.GetNames(typeof(YN))[i]);
					}
					FormIEP.listResult.SelectedIndex=0;//Unknown
					if(Rows[e.Row].ImpValDisplay=="Y") {
						FormIEP.listResult.SelectedIndex=1;
					}
					if(Rows[e.Row].ImpValDisplay=="N") {
						FormIEP.listResult.SelectedIndex=2;
					}
					FormIEP.ShowDialog();
					if(FormIEP.DialogResult!=DialogResult.OK) {
						return;
					}
					int selectedI=FormIEP.listResult.SelectedIndex;
					switch(selectedI) {
						case 0:
							Rows[e.Row].ImpValDisplay="";
							break;
						case 1:
							Rows[e.Row].ImpValDisplay="Y";
							break;
						case 2:
							Rows[e.Row].ImpValDisplay="N";
							break;
					}
					if(Rows[e.Row].OldValDisplay==Rows[e.Row].ImpValDisplay) {//value is now same as original
						Rows[e.Row].DoImport=false;
					}
					else {
						Rows[e.Row].DoImport=true;
					}
					if(selectedI==-1 || selectedI==0) {
						Rows[e.Row].DoImport=false;
					}
				}
			}
			#endregion
			#region Subscriber
			else if(Rows[e.Row].ObjType==typeof(Patient)) {
				Patient subscriber=new Patient();
				FormSubscriberSelect FormSS=new FormSubscriberSelect(Fam);
				FormSS.ShowDialog();
				if(FormSS.DialogResult!=DialogResult.OK) {
					return;
				}
				subscriber=Patients.GetPat(FormSS.SelectedPatNum);
				if(subscriber==null) {
					return;//Should never happen but is a possibility.
				}
				//Use GetNameFirst() because this is how OldValDisplay is displayed.
				string patName=Patients.GetNameFirst(subscriber.FName,subscriber.Preferred);
				if(Rows[e.Row].OldValDisplay==patName) {
					Rows[e.Row].DoImport=false;
				}
				else {
					Rows[e.Row].DoImport=true;
				}
				Rows[e.Row].ImpValDisplay=patName;
				Rows[e.Row].ImpValObj=subscriber;
			}
			#endregion
			#region Carrier
			else if(Rows[e.Row].ObjType==typeof(Carrier)) {
				//Change both carrier rows at the same time.
				string insStr="ins1";
				if(Rows[e.Row].FieldName.StartsWith("ins2")) {
					insStr="ins2";
				}
				SheetImportRow carrierNameRow=GetImportRowByFieldName(insStr+"CarrierName");
				SheetImportRow carrierPhoneRow=GetImportRowByFieldName(insStr+"CarrierPhone");
				Carrier carrier=new Carrier();
				FormCarriers FormC=new FormCarriers();
				FormC.IsSelectMode=true;
				if(carrierNameRow!=null) {
					FormC.textCarrier.Text=carrierNameRow.NewValDisplay;
				}
				if(carrierPhoneRow!=null) {
					FormC.textPhone.Text=carrierPhoneRow.NewValDisplay;
				}
				FormC.ShowDialog();
				if(FormC.DialogResult!=DialogResult.OK) {
					return;
				}
				carrier=FormC.SelectedCarrier;
				//Check for nulls because the name AND phone rows might not both be on the sheet.
				if(carrierNameRow!=null) {
					if(carrierNameRow.OldValDisplay==carrier.CarrierName) {
						carrierNameRow.DoImport=false;
					}
					else {
						carrierNameRow.DoImport=true;
					}
					carrierNameRow.ImpValDisplay=carrier.CarrierName;
					carrierNameRow.ImpValObj=carrier;
				}
				if(carrierPhoneRow!=null) {
					if(carrierPhoneRow.OldValDisplay==carrier.Phone) {
						carrierPhoneRow.DoImport=false;
					}
					else {
						carrierPhoneRow.DoImport=true;
					}
					carrierPhoneRow.ImpValDisplay=carrier.Phone;
					carrierPhoneRow.ImpValObj=carrier;
				}
			}
			#endregion
			FillGrid();
		}