public async Task <IActionResult> GetCorrectDisplayForm([FromBody] GetEncounterToFillCommand getEncounterToFillCommand) { var response = await _mediator.Send(getEncounterToFillCommand, Request.HttpContext.RequestAborted); if (response.IsValid) { return(Ok(response.Value)); } return(BadRequest(response)); }
public async Task <Result <ResponseEncounter> > Handle(GetEncounterToFillCommand request, CancellationToken cancellationToken) { try { if (request.EmrMode.ToString().ToLower() == "poc") { var prepformview = await _prepUnitOfWork.Repository <PrepFormsView>().Get(x => x.PatientId == request.PatientId && x.VisitDate < request.VisitDate).OrderByDescending(x => x.EncounterId).ToListAsync(); if (prepformview.Count > 0) { prepform = prepformview[0]; if (prepformview[0].Form == "Initiation") { form = "Followup"; DateTime visitdate = Convert.ToDateTime(prepformview[0].VisitDate); if (visitdate != null) { DateTime newdate = visitdate.AddMonths(1); if (request.VisitDate > prepformview[0].VisitDate && request.VisitDate <= newdate.AddDays(7)) { form = "Followup"; } DateTime refilldate = visitdate.AddMonths(2); if (request.VisitDate > visitdate.AddMonths(1) && request.VisitDate <= refilldate.AddDays(7)) { form = "MonthlyRefill"; } } } else if (prepformview[0].Form == "PrepEncounter") { if (prepformview[0].PrepStatusToday.ToLower() == "start") { DateTime visitdate = Convert.ToDateTime(prepformview[0].VisitDate); DateTime newdate = visitdate.AddMonths(1); if (request.VisitDate > prepformview[0].VisitDate && request.VisitDate <= newdate.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdatefollow = visitdate.AddMonths(2); if (request.VisitDate > visitdate.AddMonths(1) && request.VisitDate <= newdatefollow.AddDays(7)) { form = "Followup"; } DateTime newdaterefill = visitdate.AddMonths(3); if (request.VisitDate > visitdate.AddMonths(2) && request.VisitDate <= newdaterefill.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdaterefill4 = visitdate.AddMonths(4); if (request.VisitDate > visitdate.AddMonths(3) && request.VisitDate <= newdaterefill4.AddDays(7)) { form = "MonthlyRefill"; } if (string.IsNullOrEmpty(form) == true) { form = "MonthlyRefill"; } } else if (prepformview[0].PrepStatusToday.ToLower() == "restart") { DateTime visitdate = Convert.ToDateTime(prepformview[0].VisitDate); DateTime newdate = visitdate.AddMonths(1); if (request.VisitDate > prepformview[0].VisitDate && request.VisitDate <= newdate.AddDays(7)) { form = "Followup"; } DateTime newdaterefill = visitdate.AddMonths(2); if (request.VisitDate > visitdate.AddMonths(1) && request.VisitDate <= newdaterefill.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdatefollow = visitdate.AddMonths(3); if (request.VisitDate > visitdate.AddMonths(2) && request.VisitDate <= newdatefollow.AddDays(7)) { form = "Followup"; } DateTime newdaterefill2 = visitdate.AddMonths(4); if (request.VisitDate > visitdate.AddMonths(3) && request.VisitDate <= newdaterefill.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdaterefill3 = visitdate.AddMonths(5); if (request.VisitDate > visitdate.AddMonths(4) && request.VisitDate <= newdaterefill3.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdatefollowup2 = visitdate.AddMonths(6); if (request.VisitDate > visitdate.AddMonths(5) && request.VisitDate <= newdatefollowup2.AddDays(7)) { form = "Followup"; } if (String.IsNullOrEmpty(form) == true) { form = "Followup"; } } else if (prepformview[0].PrepStatusToday.ToLower() == "continue") { DateTime visitdate = Convert.ToDateTime(prepformview[0].VisitDate); DateTime newdaterefill = visitdate.AddMonths(1); if (request.VisitDate > visitdate && request.VisitDate <= newdaterefill.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdaterefill2 = visitdate.AddMonths(2); if (request.VisitDate > visitdate.AddMonths(1) && request.VisitDate <= newdaterefill2.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdatefollowup = visitdate.AddMonths(3); if (request.VisitDate > visitdate.AddMonths(2) && request.VisitDate <= newdatefollowup.AddDays(7)) { form = "Followup"; } if (String.IsNullOrEmpty(form) == true) { form = "MonthlyRefill"; } } } else if (prepformview[0].Form == "MonthlyRefill") { List <PrepFormsView> itemsafterremove = new List <PrepFormsView>(); itemsafterremove = prepformview.FindAll(x => x != prepformview[0] && x.Form == "MonthlyRefill" || x.Form == "PrepEncounter").OrderByDescending(x => x.EncounterId).ToList(); if (itemsafterremove.Count > 0) { if (itemsafterremove[1].Form == "MonthlyRefill") { DateTime visitdate = Convert.ToDateTime(prepformview[0].VisitDate); DateTime newdatefollowup = visitdate.AddMonths(1); if (request.VisitDate > visitdate && request.VisitDate <= newdatefollowup.AddDays(7)) { form = "Followup"; } } else if (itemsafterremove[1].Form == "PrepEncounter") { DateTime visitdate = Convert.ToDateTime(prepformview[0].VisitDate); DateTime newdaterefill = visitdate.AddMonths(1); if (request.VisitDate > visitdate && request.VisitDate <= newdaterefill.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdaterefill2 = visitdate.AddMonths(2); if (request.VisitDate > visitdate.AddMonths(1) && request.VisitDate <= newdaterefill2.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdatefollowup = visitdate.AddMonths(3); if (request.VisitDate > visitdate.AddMonths(2) && request.VisitDate <= newdatefollowup.AddDays(7)) { form = "Followup"; } } } if (prepformview[1].Form == "MonthlyRefill") { DateTime visitdate = Convert.ToDateTime(prepformview[0].VisitDate); DateTime newdatefollowup = visitdate.AddMonths(1); if (request.VisitDate > visitdate && request.VisitDate <= newdatefollowup.AddDays(7)) { form = "Followup"; } } else if (prepformview[1].Form == "PrepEncounter") { DateTime visitdate = Convert.ToDateTime(prepformview[0].VisitDate); DateTime newdaterefill = visitdate.AddMonths(1); if (request.VisitDate > visitdate && request.VisitDate <= newdaterefill.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdaterefill2 = visitdate.AddMonths(2); if (request.VisitDate > visitdate.AddMonths(1) && request.VisitDate <= newdaterefill2.AddDays(7)) { form = "MonthlyRefill"; } DateTime newdatefollowup = visitdate.AddMonths(3); if (request.VisitDate > visitdate.AddMonths(2) && request.VisitDate <= newdatefollowup.AddDays(7)) { form = "Followup"; } } } } } return(Result <ResponseEncounter> .Valid(new ResponseEncounter { PrepFormsView = prepform, EncounterType = form })); } catch (Exception ex) { return(Result <ResponseEncounter> .Invalid(ex.Message)); } }