public UIViewController GetFormService(RootElement rElement)
        {
            //if (DetailViewController.QuestionsView != null)
            //{
            //	DetailViewController.Title = "";
            //	DetailViewController.QuestionsView.Clear();
            //}

            var bounds = UIScreen.MainScreen.Bounds;

            // show the loading overlay on the UI thread using the correct orientation sizing
            loadingOverlay = new LoadingOverlay(bounds);
            mvc            = (DialogViewController)((UINavigationController)SplitViewController.ViewControllers[0]).TopViewController;
            mvc.Add(loadingOverlay);

            var    dds      = new DynaPadService.DynaPadService();
            var    dfElemet = (DynaFormRootElement)rElement;
            string origJson = dds.GetFormQuestions(dfElemet.FormID, dfElemet.PatientID, dfElemet.ApptID, dfElemet.IsDoctorForm);

            JsonHandler.OriginalFormJsonString = origJson;
            SelectedAppointment.SelectedQForm  = JsonConvert.DeserializeObject <QForm>(origJson);
            var rootFormSections    = new RootElement(SelectedAppointment.SelectedQForm.FormName);
            var sectionFormSections = new Section();

            bool IsDoctorForm = dfElemet.IsDoctorForm;

            if (IsDoctorForm)
            {
                /*
                 * TODO: make presets password protected (maybe not, since for doctors only?)! (maybe component: Passcode)
                 */

                var FormPresetNames   = dds.GetAnswerPresets(SelectedAppointment.ApptFormId, null, SelectedAppointment.ApptPatientId, true, SelectedAppointment.ApptLocationId);
                var formPresetSection = new DynaSection("Form Preset Answers");
                formPresetSection.Enabled = true;
                var formPresetGroup = new RadioGroup("FormPresetAnswers", SelectedAppointment.SelectedQForm.FormSelectedTemplateId);
                var formPresetsRoot = new DynaRootElement("Preset Answers", formPresetGroup);
                formPresetsRoot.IsPreset = true;

                foreach (string[] arrPreset in FormPresetNames)
                {
                    var radioPreset = new MyRadioElement(arrPreset[1], "FormPresetAnswers");
                    radioPreset.OnSelected += delegate(object sender, EventArgs e)
                    {
                        string presetJson = arrPreset[2];
                        JsonHandler.OriginalFormJsonString = presetJson;
                        SelectedAppointment.SelectedQForm  = JsonConvert.DeserializeObject <QForm>(presetJson);
                        LoadSectionView(SelectedAppointment.SelectedQForm.FormSections[0].SectionId, SelectedAppointment.SelectedQForm.FormSections[0].SectionName, SelectedAppointment.SelectedQForm.FormSections[0], IsDoctorForm);
                    };

                    formPresetSection.Add(radioPreset);
                }

                var btnNewFormPreset = new GlassButton(new RectangleF(0, 0, (float)View.Frame.Width, 50));
                btnNewFormPreset.Font = UIFont.BoldSystemFontOfSize(17);
                btnNewFormPreset.SetTitleColor(UIColor.Black, UIControlState.Normal);
                btnNewFormPreset.NormalColor = UIColor.FromRGB(224, 238, 240);
                btnNewFormPreset.SetTitle("Save New Form Preset", UIControlState.Normal);
                btnNewFormPreset.TouchUpInside += (sender, e) =>
                {
                    /*
                     * TODO: popup to enter preset name (DONE?)
                     */

                    //Create Alert
                    var SavePresetPrompt = UIAlertController.Create("New Form Preset", "Necesito name", UIAlertControllerStyle.Alert);
                    SavePresetPrompt.AddTextField((field) =>
                    {
                        field.Placeholder = "Preset Name";
                    });
                    //Add Actions
                    SavePresetPrompt.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, action => SavePreset(SavePresetPrompt.TextFields[0].Text)));
                    SavePresetPrompt.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));
                    //Present Alert
                    PresentViewController(SavePresetPrompt, true, null);
                };

                formPresetSection.Add(btnNewFormPreset);
                formPresetsRoot.Add(formPresetSection);
                formPresetsRoot.Enabled = true;

                sectionFormSections.Add(formPresetsRoot);
            }

            foreach (FormSection fSection in SelectedAppointment.SelectedQForm.FormSections)
            {
                sectionFormSections.Add(new StringElement(fSection.SectionName, delegate { LoadSectionView(fSection.SectionId, fSection.SectionName, fSection, IsDoctorForm); }));
            }

            sectionFormSections.Add(new StringElement("Finalize", delegate { LoadSectionView("Finalize", "Finalize", null, IsDoctorForm); }));

            rootFormSections.Add(sectionFormSections);

            var formDVC = new DialogViewController(rootFormSections, true);

            // TODO pull to refresh: (problamatic scrolling with it)
            //formDVC.RefreshRequested += delegate
            //{
            //	formDVC.ReloadComplete();
            //};

            if (!IsDoctorForm)
            {
                messageLabel = new UILabel();
                formDVC.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(UIImage.FromBundle("Lock"), UIBarButtonItemStyle.Bordered, delegate(object sender, EventArgs e)
                {
                    //Create Alert
                    var BackPrompt = UIAlertController.Create("Exit Form", "Administrative use only. Please enter password to continue or tap Cancel", UIAlertControllerStyle.Alert);
                    BackPrompt.AddTextField((field) =>
                    {
                        field.SecureTextEntry = true;
                        field.Placeholder     = "Password";
                    });

                    BackPrompt.Add(messageLabel);
                    BackPrompt.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, action => PopBack(BackPrompt.TextFields[0].Text)));
                    BackPrompt.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));

                    //Present Alert
                    PresentViewController(BackPrompt, true, null);
                });
                //formDVC.NavigationItem.LeftBarButtonItem.Title = "Back";
            }

            loadingOverlay.Hide();

            return(formDVC);
        }