public override void Start()
		{
			this.Pages.Add(new NavigatorPage("NodeContactPoint", _detailsEditor = new ExternalPractitionerContactPointDetailsEditorComponent(_contactPointDetail, _resultCommunicationModeChoices, _informationAuthorityChoices)));
			this.Pages.Add(new NavigatorPage("NodeContactPoint/NodeAddresses", _addressesSummary = new AddressesSummaryComponent(_addressTypeChoices)));
			this.Pages.Add(new NavigatorPage("NodeContactPoint/NodePhoneNumbers", _phoneNumbersSummary = new PhoneNumbersSummaryComponent(_phoneTypeChoices)));
			this.Pages.Add(new NavigatorPage("NodeContactPoint/NodeEmailAddresses", _emailAddressesSummary = new EmailAddressesSummaryComponent()));

			_addressesSummary.SetModifiedOnListChange = true;
			_phoneNumbersSummary.SetModifiedOnListChange = true;
			_emailAddressesSummary.SetModifiedOnListChange = true;

			this.ValidationStrategy = new AllComponentsValidationStrategy();

			_addressesSummary.Subject = _contactPointDetail.Addresses;
			_phoneNumbersSummary.Subject = _contactPointDetail.TelephoneNumbers;
			_emailAddressesSummary.Subject = _contactPointDetail.EmailAddresses;

			base.Start();
		}
		public override void Start()
		{
			Platform.GetService<IPatientAdminService>(
				service =>
				{
					var formData = service.LoadPatientProfileEditorFormData(new LoadPatientProfileEditorFormDataRequest());
					if (_isNew)
					{
						_profile = new PatientProfileDetail();
						_profile.Mrn.AssigningAuthority = formData.MrnAssigningAuthorityChoices.Count > 0
							? GetWorkingFacilityInformationAuthority(formData.MrnAssigningAuthorityChoices)
							: null;
						_profile.Healthcard.AssigningAuthority = formData.HealthcardAssigningAuthorityChoices.Count > 0
							? formData.HealthcardAssigningAuthorityChoices[0]
							: null;
						_profile.Sex = formData.SexChoices[0];
						_profile.DateOfBirth = Platform.Time.Date;
					}
					else
					{
						var response = service.LoadPatientProfileForEdit(new LoadPatientProfileForEditRequest(_profileRef));

						_profileRef = response.PatientProfileRef;
						_profile = response.PatientDetail;

						this.Host.Title =
							string.Format(SR.TitlePatientComponent, PersonNameFormat.Format(_profile.Name), MrnFormat.Format(_profile.Mrn));
					}

					if (_newAttachments.Count > 0)
					{
						_profile.Attachments.AddRange(_newAttachments);
						this.Modified = true;
						this.AcceptEnabled = true;
					}

					// if the user has permission to either a) create a new patient, or b) update the patient profile, then 
					// these pages should be displayed
					if (Thread.CurrentPrincipal.IsInRole(
							ClearCanvas.Ris.Application.Common.AuthorityTokens.Workflow.PatientProfile.Update)
						|| Thread.CurrentPrincipal.IsInRole(ClearCanvas.Ris.Application.Common.AuthorityTokens.Workflow.Patient.Create))
					{
						this.Pages.Add(
							new NavigatorPage(
								"Patient",
								_patientEditor =
								new PatientProfileDetailsEditorComponent(
									_isNew,
									formData.MrnAutoGenerated,
									formData.SexChoices,
									formData.MrnAssigningAuthorityChoices,
									formData.HealthcardAssigningAuthorityChoices)));
						this.Pages.Add(
							new NavigatorPage(
								"Patient/Addresses", _addressesSummary = new AddressesSummaryComponent(formData.AddressTypeChoices)));
						this.Pages.Add(
							new NavigatorPage(
								"Patient/Phone Numbers", _phoneNumbersSummary = new PhoneNumbersSummaryComponent(formData.PhoneTypeChoices)));
						this.Pages.Add(
							new NavigatorPage("Patient/Email Addresses", _emailAddressesSummary = new EmailAddressesSummaryComponent()));
						this.Pages.Add(
							new NavigatorPage(
								"Patient/Contact Persons",
								_contactPersonsSummary =
								new ContactPersonsSummaryComponent(formData.ContactPersonTypeChoices, formData.ContactPersonRelationshipChoices)));
						this.Pages.Add(
							new NavigatorPage(
								"Patient/Culture",
								_additionalPatientInfoSummary =
								new PatientProfileAdditionalInfoEditorComponent(formData.ReligionChoices, formData.PrimaryLanguageChoices)));

						_addressesSummary.SetModifiedOnListChange = true;
						_phoneNumbersSummary.SetModifiedOnListChange = true;
						_emailAddressesSummary.SetModifiedOnListChange = true;
						_contactPersonsSummary.SetModifiedOnListChange = true;

						_patientEditor.Subject = _profile;
						_addressesSummary.Subject = _profile.Addresses;
						_phoneNumbersSummary.Subject = _profile.TelephoneNumbers;
						_emailAddressesSummary.Subject = _profile.EmailAddresses;
						_contactPersonsSummary.Subject = _profile.ContactPersons;
						_additionalPatientInfoSummary.Subject = _profile;
					}

					// if the user has permission to either a) create a new patient, or b) update a patient, then
					// these pages should be displayed
					if (Thread.CurrentPrincipal.IsInRole(ClearCanvas.Ris.Application.Common.AuthorityTokens.Workflow.Patient.Create)
						|| Thread.CurrentPrincipal.IsInRole(ClearCanvas.Ris.Application.Common.AuthorityTokens.Workflow.Patient.Update))
					{
						this.Pages.Add(
							new NavigatorPage("Patient/Notes", _notesSummary = new PatientNoteSummaryComponent(_profile.Notes, formData.NoteCategoryChoices)));
						_notesSummary.SetModifiedOnListChange = true;

						var patientDocumentsPage = new NavigatorPage(
							"Patient/Attachments",
							_documentSummary =
							new AttachedDocumentPreviewComponent(false, AttachmentSite.Patient));
						this.Pages.Add(patientDocumentsPage);
						_documentSummary.Attachments = _profile.Attachments;

						if (_newAttachments.Count > 0)
						{
							this.MoveTo(this.Pages.IndexOf(patientDocumentsPage));
							_documentSummary.SetInitialSelection(_newAttachments[0]);
						}
					}

					this.ValidationStrategy = new AllComponentsValidationStrategy();
				});


			base.Start();
		}