public async Task <Result <List <PrepEncountersView> > > Handle(GetPrepEncountersCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { if (request.fromDate != null && request.toDate != null) { list = await _prepUnitOfWork.Repository <PrepEncountersView>() .Get(x => x.PatientId == request.PatientId && x.ServiceAreaId == request.ServiceAreaId && x.EncounterStartTime.Value <= request.toDate && x.EncounterStartTime.Value >= request.fromDate).Take(300).ToListAsync(); } else { list = await _prepUnitOfWork.Repository <PrepEncountersView>() .Get(x => x.PatientId == request.PatientId && x.ServiceAreaId == request.ServiceAreaId).ToListAsync(); } return(Result <List <PrepEncountersView> > .Valid(list)); } catch (Exception e) { Log.Error($"Could not fetch PrEP Encounters for PatientId: {request.PatientId}"); return(Result <List <PrepEncountersView> > .Invalid($"Could not fetch PrEP Encounters for PatientId: {request.PatientId}")); } } }
public async Task <Result <CheckinOutCome> > Handle(PatientCheckinCommand request, CancellationToken cancellationToken) { try { var servicecheckin = await _prepUnitOfWork.Repository <ServiceCheckin>().Get(x => x.PatientId == request.PatientId && x.ServiceId == request.ServiceId && x.VisitDate == request.VisitDate).FirstOrDefaultAsync(); if (servicecheckin != null) { servicecheckin.Start = DateTime.Now; servicecheckin.Status = request.Status; servicecheckin.VisitDate = request.VisitDate; servicecheckin.PatientId = request.PatientId; servicecheckin.ServiceId = request.ServiceId; servicecheckin.EMRType = request.EmrType; servicecheckin.Active = true; servicecheckin.DeleteFlag = false; servicecheckin.CreatedBy = request.UserId; _prepUnitOfWork.Repository <ServiceCheckin>().Update(servicecheckin); await _prepUnitOfWork.SaveAsync(); Id = servicecheckin.Id; message += "Successfully checked In"; } else { ServiceCheckin servi = new ServiceCheckin(); servi.Status = request.Status; servi.VisitDate = request.VisitDate; servi.PatientId = request.PatientId; servi.ServiceId = request.ServiceId; servi.EMRType = request.EmrType; servi.Active = true; servi.DeleteFlag = false; servi.CreatedBy = request.UserId; servi.Start = DateTime.Now; servi.Status = request.Status; await _prepUnitOfWork.Repository <ServiceCheckin>().AddAsync(servi); await _prepUnitOfWork.SaveAsync(); Id = servi.Id; message += "Succeessfully checked in"; } return(Result <CheckinOutCome> .Valid(new CheckinOutCome() { ServiceCheckInId = Id, Message = message })); } catch (Exception ex) { return(Result <CheckinOutCome> .Invalid(ex.Message)); } }
public async Task <Result <GetRiskAssessmentResponse> > Handle(GetRiskAssessmentDetailsCommand request, CancellationToken cancellationToken) { try { var RiskAssessmentList = await _prepUnitOfWork.Repository <RiskAssessment>().Get(x => x.PatientMasterVisitId == request.PatientMasterVisitId && x.PatientId == request.PatientId && x.DeleteFlag == false).ToListAsync(); if (RiskAssessmentList != null && RiskAssessmentList.Count > 0) { RiskAssessmentList.ForEach(x => { RiskAssessmentDetails rd = new RiskAssessmentDetails(); rd.Id = x.Id; rd.RiskAssessmentid = x.RiskAssessmentId; rd.Value = x.RiskAssessmentValue; rd.DeleteFlag = x.DeleteFlag; rd.Comment = x.Comment; rd.Date = x.AssessmentDate; rads.Add(rd); }); } var RiskComments = await _prepUnitOfWork.Repository <PatientClinicalNotes>().Get(x => x.PatientMasterVisitId == request.PatientMasterVisitId && x.PatientId == request.PatientId && x.DeleteFlag == false).ToListAsync(); if (RiskComments != null && RiskComments.Count > 0) { RiskComments.ForEach(x => { Notes nt = new Notes { Comment = x.ClinicalNotes, Id = x.Id, DeleteFlag = x.DeleteFlag }; pcn.Add(nt); }); } return(Result <GetRiskAssessmentResponse> .Valid(new GetRiskAssessmentResponse { VisitDate = visitDate, RiskAssessmentDetails = rads, ClinicalNotes = pcn })); } catch (Exception ex) { { string message = $"An error has Occured" + ex.Message; return(await Task.FromResult(Result <GetRiskAssessmentResponse> .Invalid(message))); } } }
public async Task <Result <CheckOutResponse> > Handle(PatientCheckOutCommand request, CancellationToken cancellationToken) { try { if (request.Id > 0) { var servicechecked = await _prepUnitOfWork.Repository <ServiceCheckin>().Get(x => x.Id == request.Id).FirstOrDefaultAsync(); if (servicechecked != null) { servicechecked.Status = request.Status; servicechecked.End = DateTime.Now; servicechecked.DeleteFlag = request.DeleteFlag; _prepUnitOfWork.Repository <ServiceCheckin>().Update(servicechecked); await _prepUnitOfWork.SaveAsync(); Id = servicechecked.Id; message = "Patient Successfully checked out"; } } else { var serviceChecked = await _prepUnitOfWork.Repository <ServiceCheckin>().Get(x => x.PatientId == request.PatientId && x.ServiceId == request.ServiceId && x.VisitDate.ToString() == request.VisitDate.ToString()).FirstOrDefaultAsync(); if (serviceChecked != null) { serviceChecked.Status = request.Status; serviceChecked.End = DateTime.Now; serviceChecked.DeleteFlag = request.DeleteFlag; _prepUnitOfWork.Repository <ServiceCheckin>().Update(serviceChecked); await _prepUnitOfWork.SaveAsync(); Id = serviceChecked.Id; message = "Patient Successfully checked out"; } } return(Result <CheckOutResponse> .Valid(new CheckOutResponse() { Id = Id, Message = message })); } catch (Exception ex) { return(Result <CheckOutResponse> .Invalid(ex.Message)); } }
public async Task <Result <RefillResponse> > Handle(GetMonthlyRefillDetailsCommand request, CancellationToken cancellationToken) { try { List <MonthlyRefillDetailsResponse> itemdetails = new List <MonthlyRefillDetailsResponse>(); var clinicalnotes = await _prepUnitOfWork.Repository <PatientClinicalNotes>().Get(x => x.PatientId == request.PatientId && x.PatientMasterVisitId == request.PatientMasterVisitId && x.ServiceAreaId == request.ServiceAreaId && x.DeleteFlag == false).FirstOrDefaultAsync(); var adherence = await _prepUnitOfWork.Repository <AdherenceOutcome>().Get(x => x.PatientId == request.PatientId && x.PatientMasterVisitId == request.PatientMasterVisitId && x.DeleteFlag == false) .OrderByDescending(x => x.Id).FirstOrDefaultAsync(); if (adherence != null) { MonthlyRefillDetailsResponse mrd = new MonthlyRefillDetailsResponse(); mrd.PatientId = request.PatientId; mrd.PatientMasterVisitId = request.PatientMasterVisitId; mrd.ItemId = adherence.Score; mrd.MasterId = adherence.AdherenceType; mrd.Comment = adherence.ScoreDescription; itemdetails.Add(mrd); } var patientscreeninglist = await _prepUnitOfWork.Repository <PatientScreening>().Get(x => x.PatientId == request.PatientId && x.PatientMasterVisitId == request.PatientMasterVisitId && x.DeleteFlag == false).ToListAsync(); if (patientscreeninglist.Count > 0) { patientscreeninglist.ForEach(x => { MonthlyRefillDetailsResponse mrd = new MonthlyRefillDetailsResponse(); mrd.PatientId = request.PatientId; mrd.PatientMasterVisitId = request.PatientMasterVisitId; mrd.ItemId = x.ScreeningValueId; mrd.MasterId = x.ScreeningTypeId; mrd.Comment = x.Comment; itemdetails.Add(mrd); }); } return(Result <RefillResponse> .Valid(new RefillResponse { refilldetails = itemdetails, clinicalnote = clinicalnotes })); } catch (Exception ex) { return(Result <RefillResponse> .Invalid(ex.Message)); } }
public async Task <Result <PatientCircumcisionStatus> > Handle(AddPatientCircumcisionStatusCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { if (request.Id.HasValue && request.Id.Value > 0) { var result = await _prepUnitOfWork.Repository <PatientCircumcisionStatus>() .FindByIdAsync(request.Id.Value); if (result != null) { result.ClientCircumcised = request.ClientCircumcised; result.ReferredToVMMC = request.ReferredToVMMC; _prepUnitOfWork.Repository <PatientCircumcisionStatus>().Update(result); await _prepUnitOfWork.SaveAsync(); return(Result <PatientCircumcisionStatus> .Valid(result)); } } PatientCircumcisionStatus patientCircumcisionStatus = new PatientCircumcisionStatus() { PatientId = request.PatientId, ClientCircumcised = request.ClientCircumcised, ReferredToVMMC = request.ReferredToVMMC, CreateDate = request.CreateDate, CreatedBy = request.CreatedBy, DeleteFlag = request.DeleteFlag }; await _prepUnitOfWork.Repository <PatientCircumcisionStatus>().AddAsync(patientCircumcisionStatus); await _prepUnitOfWork.SaveAsync(); return(Result <PatientCircumcisionStatus> .Valid(patientCircumcisionStatus)); } catch (Exception ex) { string message = $"An error occured while saving prep circumcision status request for patientId {request.PatientId}"; Log.Error(ex, message); return(Result <PatientCircumcisionStatus> .Invalid(message)); } } }
public async Task <Result <RiskAssessmentExistResponse> > Handle(CheckRiskAssessmentEncounterCommand request, CancellationToken cancellationToken) { try { var EncounterExists = await _prepUnitOfWork.Repository <PrepRiskAssessmentEncounterView>().Get(x => x.PersonId == request.PersonId && x.VisitDate.Value.Day == DateTime.Now.Day && x.VisitDate.Value.Month == DateTime.Now.Month && x.VisitDate.Value.Year == DateTime.Now.Year).ToListAsync(); if (EncounterExists != null) { message += "The risk assessment form exists"; } else { message += "risk assessment form does not exist"; } return(Result <RiskAssessmentExistResponse> .Valid(new RiskAssessmentExistResponse() { Message = message, Encounters = EncounterExists })); } catch (Exception ex) { string message = $"An error has Occured" + ex.Message; return(await Task.FromResult(Result <RiskAssessmentExistResponse> .Invalid(message))); } }
public async Task <Result <PatientPrEPEvents> > Handle(GetPrepStatusDateEventCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { var prepevents = await _prepUnitOfWork.Repository <PatientPrEPStatus>().Get(x => x.PatientId == request.PatientId && x.DeleteFlag == false && x.PrepStatusToday == request.startitemId).OrderByDescending(x => x.PatientEncounterId).ToListAsync(); var prepInitiation = await _prepUnitOfWork.Repository <PatientARVHistory>().Get(x => x.PatientId == request.PatientId && x.Purpose == "PrEP" && x.DeleteFlag == false) .OrderByDescending(x => x.PatientMasterVisitId).OrderByDescending(x => x.CreateDate).ToListAsync(); if (prepInitiation.Count > 0) { InitiationDate = prepInitiation[0].InitiationDate; } PatientPrEPEvents pts = new PatientPrEPEvents(); if (prepevents.Count > 0) { pts.PatientEncounterId = prepevents[0].PatientEncounterId; pts.PatientId = prepevents[0].PatientId; pts.Id = prepevents[0].Id; if (prepevents[0].DateField == null) { pts.DateStarted = InitiationDate; } else { pts.DateStarted = prepevents[0].DateField; } } return(Result <PatientPrEPEvents> .Valid(pts)); } catch (Exception ex) { Log.Error($"An error occured while trying to get prep status for PatientId: {request.PatientId} , exception: {ex.Message} {ex.InnerException}"); return(Result <PatientPrEPEvents> .Invalid($"An error occured while trying to get prep status for PatientId: {request.PatientId} ")); } } }
public async Task <Result <List <PrepRiskAssessmentEncounterView> > > Handle(RiskAssessmentVisitQuery request, CancellationToken cancellationToken) { try { var RiskAssessmentEncounter = await _prepUnitOfWork.Repository <PrepRiskAssessmentEncounterView>().Get(x => x.PersonId == request.PersonId).OrderByDescending(x => x.VisitDate).Take(10).ToListAsync(); return(await Task.FromResult(Result <List <PrepRiskAssessmentEncounterView> > .Valid(RiskAssessmentEncounter))); } catch (Exception ex) { return(await Task.FromResult(Result <List <PrepRiskAssessmentEncounterView> > .Invalid(ex.Message.ToString()))); } }
public async Task <Result <List <AdherenceView> > > Handle(GetPatientAdherenceOutcomeCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { var results = await _prepUnitOfWork.Repository <AdherenceView>().Get(x => x.PatientId == request.PatientId). OrderByDescending(x => x.VisitDate).Take(2).ToListAsync(); return(Result <List <AdherenceView> > .Valid(results)); } catch (Exception ex) { return(Result <List <AdherenceView> > .Invalid(ex.Message)); } } }
public async Task <Result <PatientCircumcisionStatus> > Handle(GetPatientCircumcisionStatusCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { var result = await _prepUnitOfWork.Repository <PatientCircumcisionStatus>() .Get(x => x.PatientId == request.PatientId && x.DeleteFlag == false) .OrderByDescending(x => x.Id).FirstOrDefaultAsync(); return(Result <PatientCircumcisionStatus> .Valid(result)); } catch (Exception e) { Log.Error($"Could not fetch client circumcision status Exception: {e.Message}, InnerException {e.InnerException}"); return(Result <PatientCircumcisionStatus> .Invalid($"Could not fetch client circumcision status exception: {e.Message}")); } } }
public async Task <Result <List <PatientPrEPStatus> > > Handle(GetPrepStatusCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { var prepstatus = await _prepUnitOfWork.Repository <PatientPrEPStatus>().Get(x => x.PatientId == request.PatientId && x.PatientEncounterId == request.PatientEncounterId && x.DeleteFlag == false).ToListAsync(); return(Result <List <PatientPrEPStatus> > .Valid(prepstatus)); } catch (Exception ex) { Log.Error($"An error occured while trying to get prep status for PatientId: {request.PatientId} and PatientEncounterId: {request.PatientEncounterId}, exception: {ex.Message} {ex.InnerException}"); return(Result <List <PatientPrEPStatus> > .Invalid($"An error occured while trying to get prep status for PatientId: {request.PatientId} and PatientEncounterId: {request.PatientEncounterId}")); } } }
public async Task <Result <List <PrepEncountersView> > > Handle(GetPrepEncountersByVisitDateCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { if (request.visitDate != null) { list = await _prepUnitOfWork.Repository <PrepEncountersView>() .Get(x => x.PatientId == request.PatientId && x.ServiceAreaId == request.ServiceAreaId && x.VisitDate.Value.Day == request.visitDate.Value.Day && x.VisitDate.Value.Year == request.visitDate.Value.Year && x.VisitDate.Value.Month == request.visitDate.Value.Month).Take(300).ToListAsync(); } return(Result <List <PrepEncountersView> > .Valid(list)); } catch (System.Exception e) { Log.Error($"Could not fetch PrEP Encounters for PatientId: {request.PatientId}"); return(Result <List <PrepEncountersView> > .Invalid($"Could not fetch PrEP Encounters for PatientId: {request.PatientId}")); } } }
public async Task <Result <RiskAssessmentResponse> > Handle(RiskAssessmentVisitDetailCommand request, CancellationToken cancellationToken) { try { if (request.PatientMasterVisitId > 0) { int PatientMasterVisitId = request.PatientMasterVisitId; if (request.riskAssessments.Count > 0) { foreach (var ra in request.riskAssessments) { var RiskAssessments = await _prepUnitOfWork.Repository <RiskAssessment>().Get(x => x.PatientMasterVisitId == PatientMasterVisitId && x.PatientId == request.PatientId && x.Id == ra.Id).ToListAsync(); if (RiskAssessments != null && RiskAssessments.Count > 0) { foreach (var rass in RiskAssessments) { rass.DeleteFlag = ra.DeleteFlag; rass.RiskAssessmentId = ra.RiskAssessmentid; rass.RiskAssessmentValue = ra.Value; rass.AssessmentDate = ra.Date; rass.Comment = ra.Comment; _prepUnitOfWork.Repository <RiskAssessment>().Update(rass); await _prepUnitOfWork.SaveAsync(); } } else { RiskAssessment riskass = new RiskAssessment(); riskass.PatientMasterVisitId = PatientMasterVisitId; riskass.PatientId = request.PatientId; riskass.RiskAssessmentId = ra.RiskAssessmentid; riskass.RiskAssessmentValue = ra.Value; riskass.DeleteFlag = ra.DeleteFlag; riskass.CreateDate = DateTime.Now; riskass.Comment = ra.Comment; riskass.AssessmentDate = ra.Date; await _prepUnitOfWork.Repository <RiskAssessment>().AddAsync(riskass); await _prepUnitOfWork.SaveAsync(); } } _prepUnitOfWork.Save(); message += "The Risk Assessment Form Has Been Updated"; } if (request.ClinicalNotes.Count > 0) { foreach (var clinicalnotes in request.ClinicalNotes) { var clinicalNotes = await _prepUnitOfWork.Repository <PatientClinicalNotes>().Get(x => x.PatientMasterVisitId == PatientMasterVisitId && x.PatientId == request.PatientId && x.Id == clinicalnotes.Id).ToListAsync(); if (clinicalNotes != null && clinicalNotes.Count > 0) { foreach (var clinicaln in clinicalNotes) { clinicaln.ClinicalNotes = clinicalnotes.Comment; clinicaln.CreatedBy = request.UserId; clinicaln.CreateDate = DateTime.Now; clinicaln.DeleteFlag = clinicalnotes.DeleteFlag; clinicaln.ServiceAreaId = clinicaln.ServiceAreaId; clinicaln.PatientId = request.PatientId; clinicaln.PatientMasterVisitId = PatientMasterVisitId; _prepUnitOfWork.Repository <PatientClinicalNotes>().Update(clinicaln); await _prepUnitOfWork.SaveAsync(); } } else { if (!String.IsNullOrEmpty(clinicalnotes.Comment)) { PatientClinicalNotes pcn = new PatientClinicalNotes(); pcn.ClinicalNotes = clinicalnotes.Comment; pcn.CreatedBy = request.UserId; pcn.CreateDate = DateTime.Now; pcn.DeleteFlag = clinicalnotes.DeleteFlag; pcn.ServiceAreaId = clinicalnotes.ServiceAreaId; pcn.PatientId = request.PatientId; pcn.PatientMasterVisitId = PatientMasterVisitId; await _prepUnitOfWork.Repository <PatientClinicalNotes>().AddAsync(pcn); await _prepUnitOfWork.SaveAsync(); } } _prepUnitOfWork.Save(); } } } return(Result <RiskAssessmentResponse> .Valid(new RiskAssessmentResponse { PatientMasterVisitId = pmvId, Message = message })); } catch (Exception ex) { { string message = $"An error has Occured" + ex.Message; return(await Task.FromResult(Result <RiskAssessmentResponse> .Invalid(message))); } } }
public async Task <Result <MonthlyRefillResponse> > Handle(AddMonthlyRefillCommand request, CancellationToken cancellationToken) { try { var clinicalnotes = await _prepUnitOfWork.Repository <PatientClinicalNotes>().Get(x => x.PatientId == request.PatientId && x.ServiceAreaId == request.ServiceAreaId && x.PatientMasterVisitId == request.PatientMasterVisitId && x.DeleteFlag == false).ToListAsync(); if (request.clinicalNotes.Count > 0) { if (clinicalnotes.Count > 0) { foreach (var x in clinicalnotes) { if (String.IsNullOrEmpty(request.clinicalNotes[0].remark) == true) { x.DeleteFlag = true; } else { x.DeleteFlag = false; x.ClinicalNotes = request.clinicalNotes[0].remark; } _prepUnitOfWork.Repository <PatientClinicalNotes>().Update(x); await _prepUnitOfWork.SaveAsync(); message += "Remarks is updated"; } } else { if (request.clinicalNotes.Count > 0) { if (String.IsNullOrEmpty(request.clinicalNotes[0].remark.ToString()) == false) { PatientClinicalNotes cl = new PatientClinicalNotes(); cl.ServiceAreaId = request.ServiceAreaId; cl.ClinicalNotes = request.clinicalNotes[0].remark; cl.DeleteFlag = false; cl.PatientId = request.PatientId; cl.PatientMasterVisitId = request.PatientMasterVisitId; cl.CreatedBy = request.CreatedBy; cl.CreateDate = DateTime.Now; await _prepUnitOfWork.Repository <PatientClinicalNotes>().AddAsync(cl); await _prepUnitOfWork.SaveAsync(); message += "Remarks is added successfully"; } } } } if (request.Adherence.Count > 0) { var AdherenceOutcome = await _prepUnitOfWork.Repository <AdherenceOutcome>().Get(x => x.PatientId == request.PatientId && x.PatientMasterVisitId == request.PatientMasterVisitId && x.AdherenceType == request.Adherence[0].AdherenceType && x.DeleteFlag == false).ToListAsync(); if (AdherenceOutcome.Count > 0) { foreach (var x in AdherenceOutcome) { if (x.AdherenceType == request.Adherence[0].AdherenceType && x.Score == request.Adherence[0].Score) { x.DeleteFlag = false; x.CreateBy = request.CreatedBy; x.CreateDate = DateTime.Now; Id = x.Id; _prepUnitOfWork.Repository <AdherenceOutcome>().Update(x); await _prepUnitOfWork.SaveAsync(); message += "Adherence Outcome has been updated"; } else { x.DeleteFlag = true; _prepUnitOfWork.Repository <AdherenceOutcome>().Update(x); await _prepUnitOfWork.SaveAsync(); AdherenceOutcome adc = new AdherenceOutcome(); adc.PatientId = request.PatientId; adc.PatientMasterVisitId = request.PatientMasterVisitId; adc.Score = request.Adherence[0].Score; adc.AdherenceType = request.Adherence[0].AdherenceType; adc.CreateBy = request.CreatedBy; adc.CreateDate = DateTime.Now; await _prepUnitOfWork.Repository <AdherenceOutcome>().AddAsync(adc); await _prepUnitOfWork.SaveAsync(); Id = adc.Id; message += "Adherence Outcome has been Saved"; } } } else { AdherenceOutcome adc = new AdherenceOutcome(); adc.PatientId = request.PatientId; adc.PatientMasterVisitId = request.PatientMasterVisitId; adc.Score = request.Adherence[0].Score; adc.AdherenceType = request.Adherence[0].AdherenceType; adc.CreateBy = request.CreatedBy; adc.CreateDate = DateTime.Now; await _prepUnitOfWork.Repository <AdherenceOutcome>().AddAsync(adc); await _prepUnitOfWork.SaveAsync(); Id = adc.Id; message += "Adherence Outcome has been Saved"; } } else { AdherenceOutcome adc = new AdherenceOutcome(); adc.PatientId = request.PatientId; adc.PatientMasterVisitId = request.PatientMasterVisitId; adc.Score = request.Adherence[0].Score; adc.AdherenceType = request.Adherence[0].AdherenceType; adc.CreateBy = request.CreatedBy; adc.CreateDate = DateTime.Now; await _prepUnitOfWork.Repository <AdherenceOutcome>().AddAsync(adc); await _prepUnitOfWork.SaveAsync(); Id = adc.Id; message += "Adherence Outcome has been Saved"; } if (request.screeningdetail.Count > 0) { var patientscreeninglist = await _prepUnitOfWork.Repository <PatientScreening>().Get(x => x.PatientId == request.PatientId && x.PatientMasterVisitId == request.PatientMasterVisitId).ToListAsync(); if (patientscreeninglist.Count > 0) { foreach (var x in patientscreeninglist) { x.DeleteFlag = true; _prepUnitOfWork.Repository <PatientScreening>().Update(x); await _prepUnitOfWork.SaveAsync(); } foreach (var detail in request.screeningdetail) //.ForEach(async x => { var find = patientscreeninglist.Find(t => t.ScreeningTypeId == detail.ScreeningTypeId && t.ScreeningValueId == detail.ScreeningValueId); if (find != null) { find.DeleteFlag = false; find.VisitDate = request.VisitDate; find.CreatedBy = request.CreatedBy; find.Comment = detail.Comment; _prepUnitOfWork.Repository <PatientScreening>().Update(find); await _prepUnitOfWork.SaveAsync(); } else { PatientScreening sc = new PatientScreening(); sc.DeleteFlag = false; sc.VisitDate = request.VisitDate; sc.ScreeningTypeId = detail.ScreeningTypeId; sc.ScreeningValueId = detail.ScreeningValueId; sc.ScreeningDone = true; sc.Active = true; sc.CreateDate = DateTime.Now; sc.CreatedBy = request.CreatedBy; sc.Comment = detail.Comment; sc.PatientId = request.PatientId; sc.PatientMasterVisitId = request.PatientMasterVisitId; await _prepUnitOfWork.Repository <PatientScreening>().AddAsync(sc); await _prepUnitOfWork.SaveAsync(); } } message += "Monthly Refill updated successfully"; } else { foreach (var requestdetail in request.screeningdetail) { PatientScreening sc = new PatientScreening(); sc.DeleteFlag = false; sc.VisitDate = request.VisitDate; sc.ScreeningTypeId = requestdetail.ScreeningTypeId; sc.ScreeningValueId = requestdetail.ScreeningValueId; sc.ScreeningDone = true; sc.Active = true; sc.CreateDate = DateTime.Now; sc.CreatedBy = request.CreatedBy; sc.Comment = requestdetail.Comment; sc.PatientId = request.PatientId; sc.PatientMasterVisitId = request.PatientMasterVisitId; await _prepUnitOfWork.Repository <PatientScreening>().AddAsync(sc); await _prepUnitOfWork.SaveAsync(); } message += "Monthly refill saved successfully"; } } return(Result <MonthlyRefillResponse> .Valid(new MonthlyRefillResponse() { Message = message, Id = Id })); } catch (Exception ex) { return(Result <MonthlyRefillResponse> .Invalid(ex.Message)); } }
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)); } }
public async Task <Result <PatientPrEPStatus> > Handle(AddPrepStatusCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { if (request.Id.HasValue && request.Id.Value > 0) { var result = await _prepUnitOfWork.Repository <PatientPrEPStatus>() .FindByIdAsync(request.Id.Value); if (result != null) { result.AdherenceCounsellingDone = request.AdherenceCounsellingDone; result.SignsOrSymptomsHIV = request.SignsOrSymptomsHIV; // result.ContraindicationsPrepPresent = request.ContraindicationsPrepPresent; result.PrepStatusToday = request.PrepStatusToday; result.CreatedBy = request.CreatedBy; result.CondomsIssued = request.CondomsIssued; result.NoOfCondoms = request.NoOfCondoms; _prepUnitOfWork.Repository <PatientPrEPStatus>().Update(result); await _prepUnitOfWork.SaveAsync(); return(Result <PatientPrEPStatus> .Valid(result)); } else { PatientPrEPStatus patientPrEpStatus = new PatientPrEPStatus() { PatientId = request.PatientId, PatientEncounterId = request.PatientEncounterId, SignsOrSymptomsHIV = request.SignsOrSymptomsHIV, AdherenceCounsellingDone = request.AdherenceCounsellingDone, //ContraindicationsPrepPresent = request.ContraindicationsPrepPresent, PrepStatusToday = request.PrepStatusToday, DeleteFlag = false, CreatedBy = request.CreatedBy, CreateDate = DateTime.Now, CondomsIssued = request.CondomsIssued, NoOfCondoms = request.NoOfCondoms }; await _prepUnitOfWork.Repository <PatientPrEPStatus>().AddAsync(patientPrEpStatus); await _prepUnitOfWork.SaveAsync(); return(Result <PatientPrEPStatus> .Valid(patientPrEpStatus)); } } else { PatientPrEPStatus patientPrEpStatus = new PatientPrEPStatus() { PatientId = request.PatientId, PatientEncounterId = request.PatientEncounterId, SignsOrSymptomsHIV = request.SignsOrSymptomsHIV, AdherenceCounsellingDone = request.AdherenceCounsellingDone, //ContraindicationsPrepPresent = request.ContraindicationsPrepPresent, PrepStatusToday = request.PrepStatusToday, DeleteFlag = false, CreatedBy = request.CreatedBy, CreateDate = DateTime.Now, CondomsIssued = request.CondomsIssued, NoOfCondoms = request.NoOfCondoms }; await _prepUnitOfWork.Repository <PatientPrEPStatus>().AddAsync(patientPrEpStatus); await _prepUnitOfWork.SaveAsync(); return(Result <PatientPrEPStatus> .Valid(patientPrEpStatus)); } } catch (Exception ex) { string message = $"An error occured while saving prep status request for patientId {request.PatientId}"; Log.Error(ex, message); return(Result <PatientPrEPStatus> .Invalid(message)); } } }
public async Task <Result <PatientProfileResponse> > Handle(AddPatientPartnerProfileCommand request, CancellationToken cancellationToken) { using (_prepUnitOfWork) { try { if (request.patientPartnerProfiles.Count > 0) { foreach (var patientprofile in request.patientPartnerProfiles) { if (patientprofile.Id > 0) { var result = await _prepUnitOfWork.Repository <PatientPartnerProfile>() .FindByIdAsync(patientprofile.Id); if (result != null) { result.PatientId = request.PatientId; result.NumberofChildren = patientprofile.NumberofChildren; result.PartnerARTStartDate = patientprofile.PartnerARTStartDate; if (!String.IsNullOrEmpty(patientprofile.SexWithoutCondoms) == true) { result.SexWithoutCondoms = Convert.ToInt32(patientprofile.SexWithoutCondoms); } result.HIVSeroDiscordantDuration = patientprofile.HIVSeroDiscordantDuration; result.HivPositiveStatusDate = patientprofile.HivPositiveStatusDate; if (!String.IsNullOrEmpty(patientprofile.CCCEnrollment) == true) { result.CCCEnrollment = Convert.ToInt32(patientprofile.CCCEnrollment); } result.CCCNumber = patientprofile.CCCNumber; result.DeleteFlag = patientprofile.DeleteFlag; _prepUnitOfWork.Repository <PatientPartnerProfile>().Update(result); await _prepUnitOfWork.SaveAsync(); } else { PatientPartnerProfile plf = new PatientPartnerProfile(); plf.PatientId = request.PatientId; plf.NumberofChildren = patientprofile.NumberofChildren; plf.PartnerARTStartDate = patientprofile.PartnerARTStartDate; if (!String.IsNullOrEmpty(patientprofile.SexWithoutCondoms) == true) { plf.SexWithoutCondoms = Convert.ToInt32(patientprofile.SexWithoutCondoms); } plf.HIVSeroDiscordantDuration = patientprofile.HIVSeroDiscordantDuration; plf.HivPositiveStatusDate = patientprofile.HivPositiveStatusDate; if (!String.IsNullOrEmpty(patientprofile.CCCEnrollment) == true) { plf.CCCEnrollment = Convert.ToInt32(patientprofile.CCCEnrollment); } plf.CCCNumber = patientprofile.CCCNumber; plf.DeleteFlag = patientprofile.DeleteFlag; plf.CreatedBy = patientprofile.CreatedBy; plf.CreateDate = DateTime.Now; await _prepUnitOfWork.Repository <PatientPartnerProfile>().AddAsync(plf); await _prepUnitOfWork.SaveAsync(); } } else { PatientPartnerProfile plf = new PatientPartnerProfile(); plf.PatientId = request.PatientId; plf.NumberofChildren = patientprofile.NumberofChildren; plf.PartnerARTStartDate = patientprofile.PartnerARTStartDate; if (!String.IsNullOrEmpty(patientprofile.SexWithoutCondoms) == true) { plf.SexWithoutCondoms = Convert.ToInt32(patientprofile.SexWithoutCondoms); } plf.HIVSeroDiscordantDuration = patientprofile.HIVSeroDiscordantDuration; plf.HivPositiveStatusDate = patientprofile.HivPositiveStatusDate; if (!String.IsNullOrEmpty(patientprofile.CCCEnrollment) == true) { plf.CCCEnrollment = Convert.ToInt32(patientprofile.CCCEnrollment); } plf.CCCNumber = patientprofile.CCCNumber; plf.DeleteFlag = patientprofile.DeleteFlag; plf.CreatedBy = patientprofile.CreatedBy; plf.CreateDate = DateTime.Now; await _prepUnitOfWork.Repository <PatientPartnerProfile>().AddAsync(plf); await _prepUnitOfWork.SaveAsync(); } } Msg += "The hiv status partner profile has been saved successfully"; } return(Result <PatientProfileResponse> .Valid(new PatientProfileResponse() { Message = Msg })); } catch (Exception ex) { String message = $"An error occured while saving partner hiv profile status request for patientId {request.PatientId}"; Log.Error(ex, message); return(Result <PatientProfileResponse> .Invalid(message)); } } }