Exemple #1
0
        public void Returns_CleanedModel()
        {
            var model = new CrisisPlanViewModel {
                ActionForDependants = "test <",
                Active            = true,
                Asid              = "test <",
                CrisisNumber      = "test <",
                EmergencyLocation = "test <",
                EmergencyNumber   = "test <",
                Id = "test <",
                InvolveFamilyOrCarer = true,
                OrgCode               = "test <",
                PatientAcceptsPlan    = true,
                PatientNhsNumber      = "test <",
                PlanCreatedBy         = "test <",
                PlanCreatedByJobTitle = "test <",
                PotentialTriggers     = "test <",
                RecordType            = RecordType.MentalHealthCrisisPlan,
                SignsFeelingUnwell    = "test <",
                Version               = 1,
                WhatHelpsInCrisis     = "test <"
            };

            var cleanedModel = model.Cleaned();

            var expected = new CrisisPlanViewModel
            {
                ActionForDependants = "test ",
                Active            = true,
                Asid              = "test ",
                CrisisNumber      = "test ",
                EmergencyLocation = "test ",
                EmergencyNumber   = "test ",
                Id = "test ",
                InvolveFamilyOrCarer = true,
                OrgCode               = "test ",
                PatientAcceptsPlan    = true,
                PatientNhsNumber      = "test ",
                PlanCreatedBy         = "test ",
                PlanCreatedByJobTitle = "test ",
                PotentialTriggers     = "test ",
                RecordType            = RecordType.MentalHealthCrisisPlan,
                SignsFeelingUnwell    = "test ",
                Version               = 1,
                WhatHelpsInCrisis     = "test "
            };

            Assert.Equal(expected, cleanedModel, Comparers.ModelComparer <CrisisPlanViewModel>());
        }
        public async SystemTasks.Task <CrisisPlanViewModel> SavePlan(CrisisPlanViewModel crisisPlan)
        {
            try
            {
                crisisPlan = crisisPlan.Cleaned();

                var currentPlan = await this.GetForPatient(crisisPlan.PatientNhsNumber, true);

                int version = 1;

                if (currentPlan != null)
                {
                    version          = currentPlan.Version + 1;
                    currentPlan.Asid = crisisPlan.Asid;
                    //Should really archive plans after update rather than mark as delete
                    //Delete only when an active delete request is made
                    var deleted = await DeletePlan(currentPlan);
                }

                crisisPlan.Version = version;
                crisisPlan.Active  = true;

                //Create new plan
                var newCrisisPlan = CrisisPlan.ToModel(crisisPlan);

                _context.CrisisPlans.InsertOne(newCrisisPlan);

                //Hardcoded values - this is a demo with urls to ficticious documents
                var pointerRequest = NrlsPointerRequest.Create(crisisPlan.OrgCode, crisisPlan.OrgCode, crisisPlan.PatientNhsNumber, $"https://spine-proxy.national.ncrs.nhs.uk/{newCrisisPlan.Id}/mental-health-care-plan.pdf", "application/pdf", MentalHealthCrisisPlanTypeCode, MentalHealthCrisisPlanTypeDisplay, crisisPlan.Asid);

                //Create new NRLS pointer
                var newPointer = await _documentReferenceServices.GenerateAndCreatePointer(pointerRequest);

                //Create map between NRLS Pointer and Medical Record
                _pointerMapService.CreatePointerMap(newPointer.ResourceId, newCrisisPlan.Id, RecordType.MentalHealthCrisisPlan);

                return(await SystemTasks.Task.Run(() => CrisisPlan.ToViewModel(newCrisisPlan)));
            }
            catch (Exception ex)
            {
                // log or manage the exception
                throw ex;
            }
        }