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; } }