コード例 #1
0
        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));
                }
            }
        }
コード例 #2
0
        public async Task <IActionResult> Post([FromBody] AddEncounterCommand addEncounterCommand)
        {
            var encounter = await _mediator.Send(new AddEncounterVisitCommand
            {
                PatientId     = addEncounterCommand.Encounter.PatientId,
                ServiceAreaId = addEncounterCommand.Encounter.ServiceAreaId,
                EncounterType = addEncounterCommand.Encounter.EncounterTypeId,
                UserId        = addEncounterCommand.Encounter.ProviderId,
                EncounterDate = addEncounterCommand.Encounter.EncounterDate
            }, Request.HttpContext.RequestAborted);

            if (encounter.IsValid)
            {
                addEncounterCommand.Encounter.PatientEncounterID = encounter.Value.PatientEncounterId;
            }
            else
            {
                return(BadRequest(encounter));
            }

            var consentList = new List <KeyValuePair <string, int> >();

            consentList.Add(new KeyValuePair <string, int>("ConsentToBeTested", addEncounterCommand.Encounter.Consent));

            var consent = await _mediator.Send(new AddConsentCommand()
            {
                PatientID            = addEncounterCommand.Encounter.PatientId,
                PatientMasterVisitId = encounter.Value.PatientMasterVisitId,
                ConsentDate          = addEncounterCommand.Encounter.EncounterDate,
                ConsentType          = consentList,
                ServiceAreaId        = addEncounterCommand.Encounter.ServiceAreaId,
                UserId = addEncounterCommand.Encounter.ProviderId
            }, Request.HttpContext.RequestAborted);

            if (consent.IsValid)
            {
            }
            else
            {
                return(BadRequest(encounter));
            }

            var screeningList = new List <KeyValuePair <string, int> >();

            screeningList.Add(new KeyValuePair <string, int>("TbScreening", addEncounterCommand.Encounter.TbScreening));

            var tbScreening = await _mediator.Send(new AddPatientScreeningCommand()
            {
                PatientId            = addEncounterCommand.Encounter.PatientId,
                PatientMasterVisitId = encounter.Value.PatientMasterVisitId,
                ScreeningDate        = addEncounterCommand.Encounter.EncounterDate,
                UserId        = addEncounterCommand.Encounter.ProviderId,
                PersonId      = addEncounterCommand.Encounter.PersonId,
                ScreeningType = screeningList
            }, Request.HttpContext.RequestAborted);

            if (tbScreening.IsValid)
            {
            }
            else
            {
                return(BadRequest(tbScreening));
            }

            var response = await _mediator.Send(addEncounterCommand, Request.HttpContext.RequestAborted);

            if (response.IsValid)
            {
                response.Value.PatientMasterVisitId = encounter.Value.PatientMasterVisitId;
                return(Ok(response.Value));
            }

            return(BadRequest(response));
        }