Example #1
0
        public async Task <Boolean> alreadyRegistered(String organ)
        {
            foreach (WaitingListItem item in UserController.Instance.LoggedInUser.waitingListItems)
            {
                if (item.organType.ToString() == OrganExtensions.ToOrgan(organ).ToString() && item.organDeregisteredDate == null)
                {
                    await DisplayAlert("",
                                       "This user has already registered a " + organ,
                                       "OK");

                    return(true);
                }
            }
            return(false);
        }
        /*
         * Starts a new transfer to the hospital closest to the given selectedRecipient but does not add a helicopter to the map
         */
        public async Task NewTransferWithoutAddingHelicpoter(DonatableOrgan currentOrgan, User selectedRecipient, Position donorPosition)
        {
            await InitialiseHospitalsWithoutAddingToMap();

            OrganTransfer newOrganTransfer = new OrganTransfer();

            newOrganTransfer.id         = currentOrgan.id;
            newOrganTransfer.receiverId = selectedRecipient.id;

            //Find the position of the donor
            newOrganTransfer.startLat = donorPosition.Latitude;
            newOrganTransfer.startLon = donorPosition.Longitude;

            Hospital receiverHospital = null;

            //await InitialiseHospitalsWithoutAddingToMap();
            foreach (Hospital hospital in hospitals)
            {
                if (hospital.region.Equals(selectedRecipient.region))
                {
                    receiverHospital = hospital;
                }
            }

            //Find the nearest hospital
            newOrganTransfer.endLat = receiverHospital.latitude;
            newOrganTransfer.endLon = receiverHospital.longitude;

            newOrganTransfer.organType = OrganExtensions.ToOrgan(currentOrgan.organType);

            Position HospitalPosition = new Position(receiverHospital.latitude, receiverHospital.longitude);

            newOrganTransfer.arrivalTime = new CustomDateTime(DateTime.Now.AddSeconds(distance(donorPosition.Latitude, HospitalPosition.Latitude,
                                                                                               donorPosition.Longitude, HospitalPosition.Longitude, 0, 0) / 70));

            TransplantListAPI transplantListAPI = new TransplantListAPI();
            await transplantListAPI.InsertTransfer(newOrganTransfer);

            await transplantListAPI.SetInTransfer(currentOrgan.id, 1);
        }
        private async void SaveProcedureButton_OnClicked(object sender, EventArgs e)
        {
            string summaryInput     = InputValidation.Trim(SummaryEntry.Text);
            string descriptionInput = InputValidation.Trim(DescriptionEntry.Text);

            if (!await CheckInputs(summaryInput, descriptionInput))
            {
                return;
            }

            currentProcedure.summary     = summaryInput;
            currentProcedure.description = descriptionInput;
            currentProcedure.date        = new CustomDate(DateDueEntry.Date);

            List <Organ> organsTrulyAffected = new List <Organ>();

            foreach (var organString in organsAffected)
            {
                organsTrulyAffected.Add(OrganExtensions.ToOrgan(organString));
            }

            currentProcedure.organsAffected = organsTrulyAffected;

            UserController.Instance.LoggedInUser.previousProcedures.Remove(currentProcedure);
            UserController.Instance.LoggedInUser.pendingProcedures.Remove(currentProcedure);

            if (currentProcedure.date.ToDateTime() < DateTime.Today)
            {
                UserController.Instance.LoggedInUser.previousProcedures.Add(currentProcedure);
                proceduresPageController.refreshProcedures(1);
            }
            else
            {
                UserController.Instance.LoggedInUser.pendingProcedures.Add(currentProcedure);
                proceduresPageController.refreshProcedures(0);
            }

            await uploadUser();
        }
Example #4
0
        public async void Handle_RegisterClicked(object sender, EventArgs args)
        {
            String selectedOrgan = (String)OrganPicker.SelectedItem;

            if (selectedOrgan != null && !(await alreadyRegistered(selectedOrgan)))
            {
                User            user    = UserController.Instance.LoggedInUser;
                WaitingListItem newItem = new WaitingListItem();
                String[]        words   = selectedOrgan.Split(' ');
                String          organ   = String.Join("-", words);
                organ = organ.ToLower();


                newItem.organType           = OrganExtensions.ToOrgan(organ);
                newItem.userId              = user.id;
                newItem.organRegisteredDate = new CustomDate(DateTime.Today);

                UserController.Instance.LoggedInUser.waitingListItems.Add(newItem);


                UserAPI        userAPI = new UserAPI();
                HttpStatusCode code    = await userAPI.UpdateUser(user, ClinicianController.Instance.AuthToken);


                switch (code)
                {
                case HttpStatusCode.Created:
                    await DisplayAlert("",
                                       "User successfully updated",
                                       "OK");

                    NoDataLabel.IsVisible          = false;
                    WaitingListItemsList.IsVisible = true;
                    SortingInput.IsVisible         = true;
                    await resetWaitingListItems();
                    await setupPage();

                    break;

                case HttpStatusCode.BadRequest:
                    await DisplayAlert("",
                                       "User update failed (400)",
                                       "OK");

                    break;

                case HttpStatusCode.ServiceUnavailable:
                    await DisplayAlert("",
                                       "Server unavailable, check connection",
                                       "OK");

                    break;

                case HttpStatusCode.InternalServerError:
                    await DisplayAlert("",
                                       "Server error, please try again",
                                       "OK");

                    break;
                }
            }
        }
        /*
         * Starts a transfer to the hospital closest to the given selectedRecipient and adds the helicopter to the map
         */
        public async Task NewTransfer(DonatableOrgan currentOrgan, User selectedRecipient, Position donorPosition)
        {
            OrganTransfer newOrganTransfer = new OrganTransfer();

            newOrganTransfer.id         = currentOrgan.id;
            newOrganTransfer.receiverId = selectedRecipient.id;

            //Find the position of the donor
            newOrganTransfer.startLat = donorPosition.Latitude;
            newOrganTransfer.startLon = donorPosition.Longitude;

            Hospital receiverHospital = null;

            //await InitialiseHospitalsWithoutAddingToMap();
            foreach (Hospital hospital in hospitals)
            {
                if (hospital.region.Equals(selectedRecipient.region))
                {
                    receiverHospital = hospital;
                }
            }

            //Find the nearest hospital
            newOrganTransfer.endLat = receiverHospital.latitude;
            newOrganTransfer.endLon = receiverHospital.longitude;

            newOrganTransfer.organType = OrganExtensions.ToOrgan(currentOrgan.organType);

            Position HospitalPosition = new Position(receiverHospital.latitude, receiverHospital.longitude);

            newOrganTransfer.arrivalTime = new CustomDateTime(DateTime.Now.AddSeconds(distance(donorPosition.Latitude, HospitalPosition.Latitude,
                                                                                               donorPosition.Longitude, HospitalPosition.Longitude, 0, 0) / 70));

            TransplantListAPI transplantListAPI = new TransplantListAPI();

            if (await transplantListAPI.InsertTransfer(newOrganTransfer) != HttpStatusCode.OK)
            {
                await DisplayAlert("", "Failed to start transfer (failed to insert transfer)", "OK");

                return;
            }

            if (await transplantListAPI.SetInTransfer(currentOrgan.id, 1) != true)
            {
                await DisplayAlert("", "Failed to start transfer (failed to set in transfer)", "OK");

                return;
            }

            int TTA = (int)newOrganTransfer.arrivalTime.ToDateTimeWithSeconds().Subtract(DateTime.Now).TotalSeconds;

            //int waitingListId = await transplantListAPI.GetWaitingListId((int)newOrganTransfer.receiverId, newOrganTransfer.organType);
            //if (waitingListId == 0) {
            //    await DisplayAlert("", "Failed to start transfer (failed to get waiting list id)", "OK");
            //    return;
            //}

            int waitingListId = 0;

            foreach (WaitingListItem item in selectedRecipient.waitingListItems)
            {
                if (item.organType == OrganExtensions.ToOrgan(currentOrgan.organType))
                {
                    waitingListId = item.id;
                }
            }

            AddHelicopter(donorPosition,
                          HospitalPosition,
                          newOrganTransfer.organType,
                          TTA,
                          newOrganTransfer.receiverId,
                          waitingListId,
                          newOrganTransfer.id
                          );
        }
Example #6
0
        /*
         * When the page appears, the state of the controls are reset
         */
        protected override async void OnAppearing()
        {
            List <DonatableOrgan> donatableOrgans = await GetOrgans();

            foreach (Organ item in UserController.Instance.LoggedInUser.organs)
            {
                Console.WriteLine(item);
                switch (item)
                {
                case Organ.LIVER:
                    LiverCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            LiverCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.KIDNEY:
                    KidneyCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            KidneyCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.PANCREAS:
                    PancreasCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            PancreasCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.HEART:
                    HeartCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            HeartCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.LUNG:
                    LungCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            LungCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.INTESTINE:
                    IntestineCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            IntestineCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.CORNEA:
                    CorneaCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            CorneaCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.EAR:
                    MiddleEarCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            MiddleEarCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.SKIN:
                    SkinCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            SkinCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.BONE:
                    BoneMarrowCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            BoneMarrowCell.IsEnabled = false;
                        }
                    }
                    break;

                case Organ.TISSUE:
                    ConnectiveTissueCell.On = true;
                    foreach (DonatableOrgan organ in donatableOrgans)
                    {
                        if (OrganExtensions.ToOrgan(organ.organType) == item && (organ.inTransfer != 0 || organ.expired))
                        {
                            ConnectiveTissueCell.IsEnabled = false;
                        }
                    }
                    break;
                }
            }
        }