Beispiel #1
0
        public async Task <HtsEncounter> addHtsEncounter(string encounterRemarks, int everSelfTested, int everTested, string geoLocation,
                                                         int patientEncounterId, int personId, int providerId, int testEntryPoint, int encounterType, int?testingStrategy, int?testedAs,
                                                         int?monthsSinceLastTest, int?monthSinceSelfTest)
        {
            try
            {
                // create HtsEncounter instance
                var htsEncounter = new HtsEncounter
                {
                    EncounterRemarks    = encounterRemarks,
                    EverSelfTested      = everSelfTested,
                    EverTested          = everTested,
                    GeoLocation         = geoLocation,
                    MonthSinceSelfTest  = monthSinceSelfTest,
                    MonthsSinceLastTest = monthsSinceLastTest,
                    PatientEncounterID  = patientEncounterId,
                    PersonId            = personId,
                    ProviderId          = providerId,
                    TestedAs            = testedAs,
                    TestEntryPoint      = testEntryPoint,
                    TestingStrategy     = testingStrategy,
                    EncounterType       = encounterType
                };

                await _htsunitOfWork.Repository <HtsEncounter>().AddAsync(htsEncounter);

                await _htsunitOfWork.SaveAsync();

                return(htsEncounter);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public async Task <Result <AddTestingResponse> > Handle(AddTestingCommand request, CancellationToken cancellationToken)
        {
            try
            {
                using (_unitOfWork)
                {
                    HtsEncounter encounter = await _unitOfWork.Repository <HtsEncounter>().FindByIdAsync(request.HtsEncounterId);

                    encounter.CoupleDiscordant = request.FinalTestingResult.CoupleDiscordant;
                    encounter.FinalResultGiven = request.FinalTestingResult.FinalResultGiven;

                    _unitOfWork.Repository <HtsEncounter>().Update(encounter);
                    await _unitOfWork.SaveAsync();

                    // Create Testing instances
                    List <Core.Model.Testing> testings = new List <Core.Model.Testing>();
                    request.Testing.ForEach(t => testings.Add(new Core.Model.Testing
                    {
                        ExpiryDate     = t.ExpiryDate,
                        HtsEncounterId = request.HtsEncounterId,
                        KitId          = t.KitId,
                        KitLotNumber   = t.KitLotNumber,
                        Outcome        = t.Outcome,
                        ProviderId     = request.ProviderId,
                        TestRound      = t.TestRound,
                        CreateDate     = DateTime.Now,
                        DeleteFlag     = false
                    }));

                    await _unitOfWork.Repository <Core.Model.Testing>().AddRangeAsync(testings);

                    await _unitOfWork.SaveAsync();


                    // Create HtsEncounterResult instance
                    HtsEncounterResult hTSEncounterResult = new HtsEncounterResult
                    {
                        FinalResult        = request.FinalTestingResult.FinalResult,
                        HtsEncounterId     = request.HtsEncounterId,
                        RoundOneTestResult = request.FinalTestingResult.FinalResultHiv1,
                        RoundTwoTestResult = request.FinalTestingResult.FinalResultHiv2
                    };

                    await _unitOfWork.Repository <HtsEncounterResult>().AddAsync(hTSEncounterResult);

                    await _unitOfWork.SaveAsync();

                    _unitOfWork.Dispose();

                    return(Result <AddTestingResponse> .Valid(new AddTestingResponse()
                    {
                        AddedSuccessfully = true
                    }));
                }
            }
            catch (Exception e)
            {
                return(Result <AddTestingResponse> .Invalid(e.Message));
            }
        }
Beispiel #3
0
        public async Task <HtsEncounter> UpdateHtsEncounter(HtsEncounter htsEncounter)
        {
            try
            {
                _htsunitOfWork.Repository <HtsEncounter>().Update(htsEncounter);
                await _htsunitOfWork.SaveAsync();

                return(htsEncounter);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Beispiel #4
0
        public async Task <HtsEncounter> updateHtsEncounter(int htsEncounterId, HtsEncounter htsEncounter)
        {
            try
            {
                var encounter = await _htsunitOfWork.Repository <HtsEncounter>().FindByIdAsync(htsEncounterId);

                encounter.CoupleDiscordant = htsEncounter.CoupleDiscordant;
                encounter.FinalResultGiven = htsEncounter.FinalResultGiven;

                _htsunitOfWork.Repository <HtsEncounter>().Update(encounter);
                await _htsunitOfWork.SaveAsync();

                return(encounter);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public async Task <Result <AddEncounterResponse> > Handle(AddEncounterCommand request, CancellationToken cancellationToken)
        {
            // TODO: use automapper
            using (var trans = _unitOfWork.Context.Database.BeginTransaction())
            {
                try
                {
                    // create HtsEncounter instance
                    var htsEncounter = new HtsEncounter
                    {
                        EncounterRemarks    = request.Encounter.EncounterRemarks,
                        EverSelfTested      = request.Encounter.EverSelfTested,
                        EverTested          = request.Encounter.EverTested,
                        GeoLocation         = request.Encounter.GeoLocation,
                        MonthSinceSelfTest  = request.Encounter.MonthSinceSelfTest,
                        MonthsSinceLastTest = request.Encounter.MonthsSinceLastTest,
                        PatientEncounterID  = request.Encounter.PatientEncounterID,
                        PersonId            = request.Encounter.PersonId,
                        ProviderId          = request.Encounter.ProviderId,
                        TestedAs            = request.Encounter.TestedAs,
                        TestEntryPoint      = request.Encounter.TestEntryPoint,
                        TestingStrategy     = request.Encounter.TestingStrategy,
                        EncounterType       = request.Encounter.EncounterType,
                        HivCounsellingDone  = request.Encounter.HivCounsellingDone,
                        OtherDisability     = request.Encounter.OtherDisability
                    };

                    await _unitOfWork.Repository <HtsEncounter>().AddAsync(htsEncounter);

                    await _unitOfWork.SaveAsync();

                    if (request.Encounter.Disabilities.Any())
                    {
                        List <ClientDisability> clientDisabilities = new List <ClientDisability>();
                        request.Encounter.Disabilities.ForEach(x => clientDisabilities.Add(new ClientDisability
                        {
                            DisabilityId       = x,
                            PatientEncounterId = request.Encounter.PatientEncounterID,
                            PersonId           = request.Encounter.PersonId,
                            CreateDate         = DateTime.Now,
                            CreatedBy          = request.Encounter.ProviderId,
                            DeleteFlag         = false
                        }));
                        await _unitOfWork.Repository <ClientDisability>().AddRangeAsync(clientDisabilities);

                        await _unitOfWork.SaveAsync();
                    }

                    trans.Commit();

                    _unitOfWork.Dispose();

                    return(Result <AddEncounterResponse>
                           .Valid(new AddEncounterResponse { HtsEncounterId = htsEncounter.Id }));
                }

                catch (Exception ex)
                {
                    trans.Rollback();
                    Log.Error(ex.Message);
                    // TODO:  log error
                    return(Result <AddEncounterResponse> .Invalid(ex.Message));
                }
            }
        }