Beispiel #1
0
        public async Task <IActionResult> Post([FromBody] PatientEducationExaminationCommand serviceCommand)
        {
            var response = await _mediator.Send(serviceCommand, Request.HttpContext.RequestAborted);

            if (response.IsValid)
            {
                return(Ok(response.Value));
            }
            return(BadRequest(response));
        }
Beispiel #2
0
        public async Task <Library.Result <PatientEducationExaminationResponse> > Handle(PatientEducationExaminationCommand request, CancellationToken cancellationToken)
        {
            using (_unitOfWork)
            {
                try
                {
                    PatientEducationExaminationService _service = new PatientEducationExaminationService(_unitOfWork, _commonUnitOfWork);
                    int patientEducationResultId = 0;

                    var breastExamId = await _commonUnitOfWork.Repository <LookupItem>().Get(x => x.Name == "Breast Exam").Select(x => x.Id).FirstOrDefaultAsync();

                    var examinationTypeId = await _commonUnitOfWork.Repository <LookupItemView>().Get(x => x.MasterName == "GeneralExamination").Select(x => x.MasterId).FirstOrDefaultAsync();

                    Core.Models.PhysicalExamination breastExam = new Core.Models.PhysicalExamination()
                    {
                        PatientId            = request.PatientId,
                        PatientMasterVisitId = request.PatientMasterVisitId,
                        ExamId            = breastExamId,
                        ExaminationTypeId = examinationTypeId,
                        FindingId         = request.BreastExamDone,
                        CreateDate        = DateTime.Now
                    };

                    int breastExamResult = await _service.AddPatientPhysicalExamination(breastExam);

                    if (request.TreatedSyphilis.HasValue)
                    {
                        var syphillisExamId = await _commonUnitOfWork.Repository <LookupItem>().Get(x => x.Name == "Treated Syphilis").Select(x => x.Id).FirstOrDefaultAsync();

                        Core.Models.PhysicalExamination syphillisExam = new Core.Models.PhysicalExamination()
                        {
                            PatientId            = request.PatientId,
                            PatientMasterVisitId = request.PatientMasterVisitId,
                            ExamId            = syphillisExamId,
                            ExaminationTypeId = examinationTypeId,
                            FindingId         = request.TreatedSyphilis.Value,
                            CreateDate        = DateTime.Now
                        };

                        int syphillisResultId = await _service.AddPatientPhysicalExamination(syphillisExam);
                    }

                    if (request.TestedForSyphilis.HasValue)
                    {
                        var syphillisExamId = await _commonUnitOfWork.Repository <LookupItem>().Get(x => x.Name == "Treated For Syphilis").Select(x => x.Id).FirstOrDefaultAsync();

                        Core.Models.PhysicalExamination syphillisExam = new Core.Models.PhysicalExamination()
                        {
                            PatientId            = request.PatientId,
                            PatientMasterVisitId = request.PatientMasterVisitId,
                            ExamId            = syphillisExamId,
                            ExaminationTypeId = examinationTypeId,
                            FindingId         = request.TestedForSyphilis.Value,
                            CreateDate        = DateTime.Now
                        };

                        int syphillisResultId = await _service.AddPatientPhysicalExamination(syphillisExam);
                    }

                    List <PatientEducation> patientCounselling     = new List <PatientEducation>();
                    List <PatientEducation> patientEducationExists = _unitOfWork.Repository <PatientEducation>()
                                                                     .Get(x => x.PatientId == request.PatientId).ToList();

                    if (request.CounsellingTopics.Count > 0)
                    {
                        foreach (var item in request.CounsellingTopics)
                        {
                            if (item.CounsellingTopicId > 0)
                            {
                                bool itemExists = patientEducationExists.Exists(x =>
                                                                                x.CounsellingTopicId == item.CounsellingTopicId &&
                                                                                x.CounsellingDate == item.CounsellingDate);
                                if (!itemExists)
                                {
                                    PatientEducation data = new PatientEducation
                                    {
                                        PatientId            = request.PatientId,
                                        PatientMasterVisitId = request.PatientMasterVisitId,
                                        CounsellingTopicId   = item.CounsellingTopicId,
                                        CounsellingDate      = item.CounsellingDate,
                                        Description          = item.Description,
                                        CreateDate           = DateTime.Now,
                                        CreatedBy            = request.CreatedBy
                                    };
                                    patientCounselling.Add(data);
                                }
                            }
                        }

                        patientEducationResultId = await _service.AddPatientEducation(patientCounselling);
                    }


                    if (breastExamResult > 0 & patientEducationResultId > 0)
                    {
                        result = 1;
                    }

                    return(Library.Result <PatientEducationExaminationResponse> .Valid(new PatientEducationExaminationResponse()
                    {
                        resultId = 0
                    }));
                }
                catch (Exception e)
                {
                    Log.Error(e.Message);
                    return(Library.Result <PatientEducationExaminationResponse> .Invalid(e.Message));
                }
            }
        }