public int MeasureTextLine(string txt)
		{
			int uvwidth=280;
			int charcount = 0;
			int mainwidth =Convert.ToInt16(View.Bounds.Width);

			MultilineTextView tbc = new MultilineTextView();
			tbc.Text = txt;
			tbc.Font=UIFont.SystemFontOfSize(20);
			tbc.SizeToFit ();
			int vwidth = Convert.ToInt16(tbc.Frame.Width);
			if (vwidth < uvwidth)
				uvwidth = 280;
			else
				uvwidth = vwidth;

			if (mainwidth < vwidth)
				uvwidth = mainwidth-100;

			return uvwidth;
		}
		public void AddProcedure(string code,string description)
		{
			
			UITextView txtdesc;
			UIView view = procedureScrollView.ViewWithTag(procedurewithTag);
			if (view != null) {
				txtdesc = view as UITextView;
				if (string.IsNullOrEmpty (txtdesc.Text)) {
					return;
				}
			}

			CoreGraphics.CGRect descriptionFrame = new CoreGraphics.CGRect(14,baseYProcDescriptionValue,377,30);
			CoreGraphics.CGRect codeFrame = new CoreGraphics.CGRect(405,baseYProcCodeValue,70,30);

			UITextField codeText = new UITextField(codeFrame);
			MultilineTextView descriptionText = new MultilineTextView(descriptionFrame);
			codeText.Text=code;
			codeText.BorderStyle = UITextBorderStyle.RoundedRect;

			procedurecodewithTag = procedurecodewithTag + 1;
			codeText.Tag = procedurecodewithTag;
			codeText.ShouldBeginEditing += delegate {
				if(this.procedureDetails == null){
					showKeyBoard = false;
					return false;
				}else{
					showKeyBoard = true;
					return true;
				}
			};

			codeText.EditingDidEnd += (object sender, EventArgs e) => {
				showKeyBoard = false;
			};

			descriptionText.ShouldBeginEditing += delegate {
				if(this.procedureDetails == null){
					return false;
				}else{
					showKeyBoard = true;
					return true;
				}
			};

			descriptionText.ShouldEndEditing += delegate {
				showKeyBoard = false;
				return true;
			};


			procedurewithTag = procedurewithTag+1 ;
			descriptionText.Tag =procedurewithTag;

			int mh=MeasureTextLine(description);
			nfloat fh=30;
			if (mh == 280) {

				baseYProcDescriptionValue += 10;
				baseYProcCodeValue += 10;	
				mh=30;
			}
			else if(mh>600 && mh < 899){								
				baseYProcDescriptionValue += 20;
				baseYProcCodeValue += 20;	
				fh=50;
			}
			else if (mh > 900) {
				baseYProcDescriptionValue += 30;
				baseYProcCodeValue += 30;	
				fh = 60;
			} else if (mh > 1200) {
				baseYProcDescriptionValue += 40;
				baseYProcCodeValue += 40;	
				fh = 77;
			}
			descriptionText.Layer.Frame=new CoreGraphics.CGRect(descriptionText.Frame.X,descriptionText.Frame.Y,descriptionText.Frame.Width,fh);	
			descriptionText.Text=description;

			//descriptionText.Changed += (senderDesc, e) => {
			descriptionText.Changed += (senderDesc, e) => {

				txtpmrn.ResignFirstResponder();
				txtpFirstName.ResignFirstResponder();
				txtpLastName.ResignFirstResponder();

				if(descriptionText.Text.Length > 1)
				{	
//					bool itemPreviouslySearched = false;
//					string lastSelectedProcedures = ReadFile("lastSelectedProcedures.txt");
//					if(lastSelectedProcedures != string.Empty){
//						lastSelectedProceduresObj = (ProcedureDiagnosticMaster)JsonConvert.DeserializeObject(lastSelectedProcedures,typeof(ProcedureDiagnosticMaster));
//						foreach (DataResults item in lastSelectedProceduresObj.results) {
//							if(item.Name != null){
//								if(item.Name.ToLower().Contains(descriptionText.Text.Trim().ToLower())){
//									itemPreviouslySearched = true;
//									break;
//								}
//							}
//						}
//					}

//					if(itemPreviouslySearched){
//						int uvWidth=280;
//						List<CodePickerModel> list=SetDataSource(out uvWidth,lastSelectedProceduresObj);
//						float x = (float)descriptionText.Frame.X;
//						float y = (float)descriptionText.Frame.Y;
//
//						cp	=new CodePicker(this,uvWidth,descriptionText.Text,"CPT");
//						cp.PresentFromPopover(descriptionText,x,y,uvWidth);
//						cp.DataSource=list;
//						cp._ValueChanged +=  async delegate {		
//							int ProcCodeID = cp.SelectedValue;
//							codeText.Text = cp.SelectedCodeValue;
//							int nl=MeasureTextLine(cp.SelectedText);
//							nfloat th=30;
//							if (nl == 280) {
//
//								baseYProcDescriptionValue += 0;
//								baseYProcCodeValue += 0;	
//								mh=30;
//							}
//							else if(nl>600 && nl < 899){								
//								baseYProcDescriptionValue += 10;
//								baseYProcCodeValue += 10;	
//								th=50;
//							}
//							else if(nl>900){
//
//								baseYProcDescriptionValue += 20;
//								baseYProcCodeValue += 20;	
//								th=60;
//							}
//							else if(nl>1200){
//								baseYProcDescriptionValue += 30;
//								baseYProcCodeValue += 30;	
//								th=77;
//							}
//							descriptionText.Layer.Frame=new CoreGraphics.CGRect(descriptionText.Frame.X,descriptionText.Frame.Y,descriptionText.Frame.Width,th);	
//							descriptionText.Text = cp.SelectedText;
//
//							UpdateProcedureDiagnostic(ProcCodeID,cp.SelectedCodeValue,cp.SelectedText,1);
//							selectedprocedureCodeid.Add(ProcCodeID);
//						}; 
//					}else{
//						if(descriptionText.Text.Trim().Length > 0)
//						{
							DownloadData("CPT",descriptionText.Text,codeText,descriptionText);

//						}
//					}
				}

			};


			procedureScrollView.AddSubview(codeText);
			baseYProcCodeValue += 54;

			procedureScrollView.AddSubview(descriptionText);
			baseYProcDescriptionValue += 54;

			procedureScrollView.SizeToFit ();

			procedureScrollView.ContentSize = new SizeF (float.Parse (procedureScrollView.Frame.Width.ToString ()), float.Parse (procedureScrollView.Frame.Height.ToString ())+55
			);
		}