public TrackedPatientsResult GetTrackedPatients(int page, int itemsPerPage)
        {
            // *** Gets a tracked patients result from the broker ***

            TrackedPatientsResult result = new TrackedPatientsResult();

            // *** Create the command needed to get tracked patients ***
            DsioGetTrackingCommand command = new DsioGetTrackingCommand(this.broker);

            // *** Add appropriate parameters ***
            command.AddGetTrackedPatientsParameters(page, itemsPerPage);

            // *** Execute command and get response ***
            RpcResponse response = command.Execute();

            // *** Add response to return result ***
            result.Success = (response.Status == RpcResponseStatus.Success);

            // *** Check for success ***
            if (result.Success)
            {
                result.Patients = new List <TrackedPatient>();

                // *** Check if we have result ***
                if (command.TrackedPatients != null)
                {
                    // *** Loop through resulting patients ***
                    foreach (DsioTrackedPatient dsioPatient in command.TrackedPatients)
                    {
                        // *** Get strongly typed patient from dsio Patient ***
                        TrackedPatient trackedPatient = GetTrackedPatient(dsioPatient);

                        // *** Add patient to list ***
                        result.Patients.Add(trackedPatient);
                    }
                }

                result.TotalResults = command.TotalResults;
            }
            else
            {
                result.Message = response.InformationalMessage;
            }

            return(result);
        }
        public TrackedPatient GetTrackedPatient(DsioTrackedPatient dsioPatient)
        {
            // *** Converts dsio patient to strongly typed patient ***

            TrackedPatient returnPatient = new TrackedPatient();

            // *** Add values ***
            returnPatient.Dfn       = dsioPatient.Dfn;
            returnPatient.LastName  = dsioPatient.LastName;
            returnPatient.FirstName = dsioPatient.FirstName;

            if (dsioPatient.Last4.Length > 4)
            {
                if (dsioPatient.Last4.ToUpper().Contains("SENSITIVE"))
                {
                    returnPatient.Last4 = "XXXX";
                }
                else
                {
                    returnPatient.Last4 = dsioPatient.Last4.Substring(5, 4);
                }
            }
            else
            {
                returnPatient.Last4 = dsioPatient.Last4;
            }

            // *** Process/Parse dob ***
            DateTime dob;

            if (DateTime.TryParse(dsioPatient.DateOfBirth, out dob))
            {
                returnPatient.DateOfBirth = dob;
            }
            else
            {
                returnPatient.DateOfBirthInexact = Util.GetInexactDate(dsioPatient.DateOfBirth);
            }

            returnPatient.HomePhone = dsioPatient.HomePhone;

            returnPatient.NonVaObstetrician       = dsioPatient.Obstetrician;
            returnPatient.PlannedDeliveryFacility = dsioPatient.LDFacility;

            // *** Process/Parse EDD ***
            returnPatient.EDD = VistaDates.ParseDateString(dsioPatient.EDD, VistaDates.VistADateOnlyFormat);

            returnPatient.Pregnant = (dsioPatient.Pregnant == "YES") ? true : false;

            returnPatient.Lactating = (dsioPatient.Lactating == "YES") ? true : false;

            // *** Add dates ***
            //returnPatient.NextChecklistDue = VistaDates.ParseDateString(dsioPatient.NextChecklistDue, VistaDates.VistADateFormatSix);
            //returnPatient.LastContactDate = VistaDates.ParseDateString(dsioPatient.LastContactDate, VistaDates.VistADateFormatSix);
            //returnPatient.NextContactDue = VistaDates.ParseDateString(dsioPatient.NextContactDue, VistaDates.VistADateFormatSix);
            returnPatient.NextChecklistDue = VistaDates.ParseDateString(dsioPatient.NextChecklistDue, VistaDates.VistADateOnlyFormat);
            returnPatient.LastContactDate  = VistaDates.ParseDateString(dsioPatient.LastContactDate, VistaDates.VistADateOnlyFormat);
            returnPatient.NextContactDue   = VistaDates.ParseDateString(dsioPatient.NextContactDue, VistaDates.VistADateOnlyFormat);

            // *** Current Pregnancy High Risk ***
            returnPatient.CurrentPregnancyHighRisk = (dsioPatient.CurrentPregnancyHighRisk == "TRUE");
            returnPatient.HighRiskDetails          = dsioPatient.HighRiskDetails;

            // *** Text4Baby ***
            if (dsioPatient.Text4BabyStatus.Equals("enrolled", StringComparison.CurrentCultureIgnoreCase))
            {
                returnPatient.Text4BabyStatus = Text4BabyStatus.Enrolled;
            }
            else if (dsioPatient.Text4BabyStatus.Equals("not interested", StringComparison.CurrentCultureIgnoreCase))
            {
                returnPatient.Text4BabyStatus = Text4BabyStatus.NotInterested;
            }

            return(returnPatient);
        }