コード例 #1
0
        public async Task <Result <EnrollClientResponse> > Handle(EnrollClientCommand request, CancellationToken cancellationToken)
        {
            try
            {
                var transferIn = false;
                if (request.ClientEnrollment.transferIn)
                {
                    transferIn = true;
                }

                RegisterPersonService registerPersonService = new RegisterPersonService(_unitOfWork);
                await registerPersonService.DynamicEnrollment(request.ClientEnrollment.PatientId,
                                                              request.ClientEnrollment.ServiceAreaId, request.ClientEnrollment.CreatedBy,
                                                              request.ClientEnrollment.DateOfEnrollment, request.ClientEnrollment.ServiceIdentifiersList, transferIn);

                /*var patientIdentifier = await registerPersonService.EnrollPatient(request.ClientEnrollment.EnrollmentNo,
                 *  request.ClientEnrollment.PatientId, request.ClientEnrollment.ServiceAreaId,
                 *  request.ClientEnrollment.CreatedBy, request.ClientEnrollment.DateOfEnrollment);*/

                string cccNumber = String.Empty;
                int    moduleId  = 283;
                foreach (var item in request.ClientEnrollment.ServiceIdentifiersList)
                {
                    if (item.IdentifierId == 1)
                    {
                        cccNumber = item.IdentifierValue;
                        moduleId  = 203;
                    }
                }

                GetPatientDetails patientDetails = new GetPatientDetails(_unitOfWork);


                var patientLookup = await patientDetails.GetPatientByPatientId(request.ClientEnrollment.PatientId);

                if (patientLookup.Count > 0 && (patientLookup[0].ptn_pk == 0 || patientLookup[0].ptn_pk == null))
                {
                    var dobPrecision = "EXACT";
                    var dob          = DateTime.Now;
                    if (patientLookup[0].DobPrecision.HasValue)
                    {
                        dobPrecision = patientLookup[0].DobPrecision.Value ? "ESTIMATED" : "EXACT";
                    }

                    if (patientLookup[0].DateOfBirth.HasValue)
                    {
                        dob = patientLookup[0].DateOfBirth.Value;
                    }


                    var response = await registerPersonService.InsertIntoBlueCard(
                        patientLookup[0].FirstName,
                        patientLookup[0].LastName,
                        patientLookup[0].MidName,
                        request.ClientEnrollment.DateOfEnrollment,
                        cccNumber,
                        moduleId,
                        patientLookup[0].MaritalStatusName,
                        patientLookup[0].PhysicalAddress,
                        patientLookup[0].MobileNumber,
                        patientLookup[0].Gender,
                        dobPrecision,
                        dob,
                        request.ClientEnrollment.CreatedBy,
                        request.ClientEnrollment.PosId
                        );

                    if (response.Count > 0)
                    {
                        await registerPersonService.UpdatePatient(request.ClientEnrollment.PatientId,
                                                                  request.ClientEnrollment.DateOfEnrollment, request.ClientEnrollment.PosId);
                    }
                }
                else
                {
                    if (moduleId == 203)
                    {
                        await registerPersonService.UpdateBlueCard(patientLookup[0].ptn_pk, cccNumber, moduleId);
                    }
                }


                return(Result <EnrollClientResponse> .Valid(new EnrollClientResponse()
                {
                    Message = "Success"
                }));
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
                return(Result <EnrollClientResponse> .Invalid(e.Message));
            }
        }