예제 #1
0
        public static string Update(string firstName, string middleName, string lastName, int personSex, int personId, int patientId, int?ptn_pk, DateTime dateOfBirth, bool DOB_Precision, string nationalId, int facilityId,
                                    int entryPointId, DateTime enrollmentDate, string cccNumber, PatientLookup patient, string godsNumber, int matStatusId,
                                    string village, int wardId, int subCountyId, int countyId, string nearestLandMark, string postalAdress, string phoneNumber, DateTime?deathDate,
                                    List <NEXTOFKIN> nextofkin, int userId)
        {
            try
            {
                //todo: fetch assigning facility from the message
                string        assigning_Facility       = "";
                PersonManager personManager            = new PersonManager();
                var           patientManager           = new PatientManager();
                var           patientEntryPointManager = new PatientEntryPointManager();
                var           patientIdentifierManager = new PatientIdentifierManager();
                var           patientEnrollmentManager = new PatientEnrollmentManager();
                var           personIdentifierManager  = new PersonIdentifierManager();
                PersonMaritalStatusManager personMaritalStatusManager = new PersonMaritalStatusManager();
                PersonLocationManager      locationManager            = new PersonLocationManager();
                PersonContactManager       contactManager             = new PersonContactManager();
                var personContactLookUp           = new PersonContactLookUpManager();
                var patientTreatmentlookupManager = new PatientTreatmentSupporterLookupManager();
                var treatmentSupporterManager     = new PatientTreatmentSupporterManager();

                personManager.UpdatePerson(firstName, middleName, lastName, personSex, userId, patient.PersonId, dateOfBirth, DOB_Precision);

                if (!string.IsNullOrWhiteSpace(godsNumber))
                {
                    IdentifierManager identifierManager = new IdentifierManager();
                    Identifier        identifier        = identifierManager.GetIdentifierByCode("GODS_NUMBER");
                    var personIdentifiers = personIdentifierManager.GetPersonIdentifiers(personId, identifier.Id);
                    if (personIdentifiers.Count == 0)
                    {
                        personIdentifierManager.AddPersonIdentifier(personId, identifier.Id, godsNumber, userId, assigning_Facility);
                    }
                }
                if (matStatusId > 0)
                {
                    var currentMaritalStatus = personMaritalStatusManager.GetCurrentPatientMaritalStatus(personId);
                    if (currentMaritalStatus != null)
                    {
                        currentMaritalStatus.MaritalStatusId = matStatusId;
                        personMaritalStatusManager.UpdatePatientMaritalStatus(currentMaritalStatus);
                    }
                    else
                    {
                        personMaritalStatusManager.AddPatientMaritalStatus(personId, matStatusId, userId);
                    }
                }

                if (wardId > 0 && subCountyId > 0 && countyId > 0)
                {
                    var currentLocation = locationManager.GetCurrentPersonLocation(personId);
                    if (currentLocation.Count > 0)
                    {
                        currentLocation[0].DeleteFlag = true;
                        locationManager.UpdatePersonLocation(currentLocation[0]);
                    }
                    locationManager.AddPersonLocation(personId, countyId, subCountyId, wardId, village, "", "", nearestLandMark, nearestLandMark, userId);
                }

                if (postalAdress != null || phoneNumber != null)
                {
                    var contacts = personContactLookUp.GetPersonContactByPersonId(personId);
                    if (contacts.Count > 0)
                    {
                        PersonContact perContact = new PersonContact();
                        perContact.Id                = contacts[0].Id;
                        perContact.PersonId          = contacts[0].PersonId;
                        perContact.PhysicalAddress   = (postalAdress);
                        perContact.MobileNumber      = (phoneNumber);
                        perContact.AlternativeNumber = "";
                        perContact.EmailAddress      = "";

                        contactManager.UpdatePatientContact(perContact);
                    }
                    else
                    {
                        contactManager.AddPersonContact(personId, postalAdress, phoneNumber, "", "", userId);
                    }
                }

                if (nextofkin.Count > 0)
                {
                    foreach (var kin in nextofkin)
                    {
                        if (kin.CONTACT_ROLE == "T")
                        {
                            //Get Gender
                            string gender = kin.SEX == "F" ? "Female" : "Male";
                            //IQCare Sex
                            LookupLogic lookupLogic = new LookupLogic();
                            int         sex         = lookupLogic.GetItemIdByGroupAndItemName("Gender", gender)[0].ItemId;

                            var listPatientTreatmentSupporter = patientTreatmentlookupManager.GetAllPatientTreatmentSupporter(personId);
                            if (listPatientTreatmentSupporter.Count > 0)
                            {
                                personManager.UpdatePerson(kin.NOK_NAME.FIRST_NAME, kin.NOK_NAME.MIDDLE_NAME, kin.NOK_NAME.LAST_NAME, sex, userId, listPatientTreatmentSupporter[0].SupporterId);
                                if (listPatientTreatmentSupporter[0].SupporterId > 0)
                                {
                                    var treatmentSupporter = patientTreatmentlookupManager.GetAllPatientTreatmentSupporter(personId);
                                    if (treatmentSupporter.Count > 0)
                                    {
                                        PatientTreatmentSupporter supporter = new PatientTreatmentSupporter()
                                        {
                                            Id            = treatmentSupporter[0].Id,
                                            PersonId      = personId,
                                            SupporterId   = listPatientTreatmentSupporter[0].SupporterId,
                                            MobileContact = kin.PHONE_NUMBER,
                                            CreatedBy     = treatmentSupporter[0].CreatedBy,
                                            DeleteFlag    = treatmentSupporter[0].DeleteFlag
                                        };

                                        treatmentSupporterManager.UpdatePatientTreatmentSupporter(supporter);
                                    }
                                }
                            }
                            else
                            {
                                int supporterId = personManager.AddPersonTreatmentSupporterUiLogic(kin.NOK_NAME.FIRST_NAME, kin.NOK_NAME.MIDDLE_NAME, kin.NOK_NAME.LAST_NAME, sex, userId);

                                if (supporterId > 0)
                                {
                                    treatmentSupporterManager.AddPatientTreatmentSupporter(personId, supporterId, kin.PHONE_NUMBER, userId);
                                }
                            }
                        }
                    }
                }

                List <PatientLookup> patientLookups = new List <PatientLookup>();
                patientLookups.Add(patient);
                var entity = patientLookups.ConvertAll(x => new PatientEntity {
                    Id = x.Id, Active = x.Active, DateOfBirth = x.DateOfBirth, ptn_pk = x.ptn_pk, PatientType = x.PatientType, PatientIndex = x.PatientIndex, NationalId = x.NationalId, FacilityId = x.FacilityId
                });
                var patientAuditData = AuditDataUtility.AuditDataUtility.Serializer(entity);

                PatientEntity updatePatient = new PatientEntity();
                updatePatient.ptn_pk       = ptn_pk;
                updatePatient.DateOfBirth  = dateOfBirth;
                updatePatient.DobPrecision = DOB_Precision;
                updatePatient.NationalId   = nationalId;
                updatePatient.FacilityId   = facilityId;
                updatePatient.AuditData    = patientAuditData;

                patientManager.UpdatePatient(updatePatient, patientId);

                List <PatientEntryPoint> entryPoints = patientEntryPointManager.GetPatientEntryPoints(patient.Id, 1);
                if (entryPoints.Count > 0)
                {
                    string entryPointAuditData = null;
                    entryPointAuditData = AuditDataUtility.AuditDataUtility.Serializer(entryPoints);

                    entryPoints[0].EntryPointId = entryPointId;
                    entryPoints[0].AuditData    = entryPointAuditData;
                    patientEntryPointManager.UpdatePatientEntryPoint(entryPoints[0]);
                }
                else
                {
                    patientEntryPointManager.addPatientEntryPoint(patientId, entryPointId, userId);
                }

                var identifiersByPatientId = patientIdentifierManager.GetPatientEntityIdentifiersByPatientId(patientId, 1);

                if (identifiersByPatientId.Count > 0)
                {
                    foreach (var entityIdentifier in identifiersByPatientId)
                    {
                        int enrollmentId = entityIdentifier.PatientEnrollmentId;

                        PatientEntityEnrollment        entityEnrollment = patientEnrollmentManager.GetPatientEntityEnrollment(enrollmentId);
                        List <PatientEntityEnrollment> listEnrollment   = new List <PatientEntityEnrollment>();
                        listEnrollment.Add(entityEnrollment);
                        var enrollmentAuditData = AuditDataUtility.AuditDataUtility.Serializer(listEnrollment);

                        entityEnrollment.EnrollmentDate = enrollmentDate;
                        entityEnrollment.AuditData      = enrollmentAuditData;

                        patientEnrollmentManager.updatePatientEnrollment(entityEnrollment);

                        var entityIdentifierAuditData = AuditDataUtility.AuditDataUtility.Serializer(identifiersByPatientId);
                        entityIdentifier.IdentifierValue = cccNumber;
                        entityIdentifier.AuditData       = entityIdentifierAuditData;
                        patientIdentifierManager.UpdatePatientIdentifier(entityIdentifier, facilityId, false);

                        if (deathDate.HasValue)
                        {
                            PatientMasterVisitManager masterVisitManager = new PatientMasterVisitManager();
                            PatientCareEndingManager  careEndingManager  = new PatientCareEndingManager();
                            LookupLogic lookupLogic          = new LookupLogic();
                            int         itemId               = lookupLogic.GetItemIdByGroupAndItemName("CareEnded", "Death")[0].ItemId;
                            int         patientMasterVisitId = masterVisitManager.GetLastPatientVisit(patientId).Id;
                            careEndingManager.AddPatientCareEndingDeath(patientId, patientMasterVisitId, enrollmentId, itemId, deathDate.Value, deathDate.Value, "", null, null);

                            PatientEntityEnrollment entityEnrollmentCareEnded = patientEnrollmentManager.GetPatientEntityEnrollment(enrollmentId);
                            entityEnrollmentCareEnded.CareEnded = true;
                            patientEnrollmentManager.updatePatientEnrollment(entityEnrollmentCareEnded);
                        }
                    }
                }
                else
                {
                    var assigningFacility   = cccNumber.Substring(0, 5);
                    int patientEnrollmentId = patientEnrollmentManager.addPatientEnrollment(patientId, enrollmentDate.ToString(), userId);
                    int patientEntryPointId = patientEntryPointManager.addPatientEntryPoint(patientId, entryPointId, userId);
                    int patientIdentifierId = patientIdentifierManager.addPatientIdentifier(patientId, patientEnrollmentId, 1, cccNumber, facilityId, assigningFacility, false);

                    if (deathDate.HasValue)
                    {
                        PatientMasterVisitManager masterVisitManager = new PatientMasterVisitManager();
                        PatientCareEndingManager  careEndingManager  = new PatientCareEndingManager();
                        LookupLogic lookupLogic          = new LookupLogic();
                        int         itemId               = lookupLogic.GetItemIdByGroupAndItemName("CareEnded", "Death")[0].ItemId;
                        int         patientMasterVisitId = masterVisitManager.GetLastPatientVisit(patientId).Id;
                        careEndingManager.AddPatientCareEndingDeath(patientId, patientMasterVisitId, patientEnrollmentId, itemId, deathDate.Value, deathDate.Value, "", null, null);

                        PatientEntityEnrollment entityEnrollmentCareEnded = patientEnrollmentManager.GetPatientEntityEnrollment(patientEnrollmentId);
                        entityEnrollmentCareEnded.CareEnded = true;
                        patientEnrollmentManager.updatePatientEnrollment(entityEnrollmentCareEnded);
                    }
                }

                return("Successfully updated patient");
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
예제 #2
0
        public static string Add(string firstName, string middleName, string lastName, int sex, int userId, DateTime dob, bool dobPrecision, int facilityId,
                                 int patientType, string nationalId, int visitType, DateTime dateOfEnrollment, string cccNumber, int entryPointId, string godsNumber, int matStatusId,
                                 string village, int wardId, int subCountyId, int countyId, string nearestLandMark, string postalAdress, string phoneNumber, DateTime?deathDate,
                                 List <NEXTOFKIN> nextofkin)
        {
            try
            {
                PersonManager              personManager             = new PersonManager();
                PatientManager             patientManager            = new PatientManager();
                PatientMasterVisitManager  patientMasterVisitManager = new PatientMasterVisitManager();
                PatientEnrollmentManager   patientEnrollmentManager  = new PatientEnrollmentManager();
                PatientEntryPointManager   patientEntryPointManager  = new PatientEntryPointManager();
                PersonLookUpManager        personLookUp = new PersonLookUpManager();
                PersonContactLookUpManager personContactLookUpManager = new PersonContactLookUpManager();
                MstPatientLogic            mstPatientLogic            = new MstPatientLogic();
                PatientIdentifierManager   patientIdentifierManager   = new PatientIdentifierManager();
                PersonMaritalStatusManager personMaritalStatusManager = new PersonMaritalStatusManager();
                PersonLocationManager      locationManager            = new PersonLocationManager();
                PersonContactManager       contactManager             = new PersonContactManager();
                var         treatmentSupporterManager = new PatientTreatmentSupporterManager();
                LookupLogic lookupLogic = new LookupLogic();

                var personIdentifierManager = new PersonIdentifierManager();
                //todo: fetch assigning facility from the message
                string assigning_Facility = "";
                var    personContacts     = new List <PersonContactLookUp>();
                int    ptn_Pk             = 0;

                //Start Saving
                int personId = personManager.AddPersonUiLogic(firstName, middleName, lastName, sex, userId, dob, dobPrecision);
                if (matStatusId > 0)
                {
                    personMaritalStatusManager.AddPatientMaritalStatus(personId, matStatusId, userId);
                }
                if (wardId > 0 && subCountyId > 0 && countyId > 0)
                {
                    locationManager.AddPersonLocation(personId, countyId, subCountyId, wardId, village, "", "", nearestLandMark, nearestLandMark, userId);
                }
                if (postalAdress != null || phoneNumber != null)
                {
                    contactManager.AddPersonContact(personId, postalAdress, phoneNumber, "", "", userId);
                }

                String   sDate        = DateTime.Now.ToString();
                DateTime datevalue    = Convert.ToDateTime(sDate);
                var      patientIndex = datevalue.Year.ToString() + '-' + personId;

                if (!string.IsNullOrWhiteSpace(godsNumber))
                {
                    IdentifierManager identifierManager = new IdentifierManager();
                    Identifier        identifier        = identifierManager.GetIdentifierByCode("GODS_NUMBER");
                    var personIdentifiers = personIdentifierManager.GetPersonIdentifiers(personId, identifier.Id);
                    if (personIdentifiers.Count == 0)
                    {
                        personIdentifierManager.AddPersonIdentifier(personId, identifier.Id, godsNumber, userId, assigning_Facility);
                    }
                }

                if (nextofkin.Count > 0)
                {
                    foreach (var kin in nextofkin)
                    {
                        if (kin.CONTACT_ROLE == "T")
                        {
                            //Get Gender
                            string gender = kin.SEX == "F" ? "Female" : "Male";
                            //IQCare Sex
                            int sexT = lookupLogic.GetItemIdByGroupAndItemName("Gender", gender)[0].ItemId;

                            int supporterId = personManager.AddPersonTreatmentSupporterUiLogic(kin.NOK_NAME.FIRST_NAME, kin.NOK_NAME.MIDDLE_NAME, kin.NOK_NAME.LAST_NAME, sexT, 1);

                            if (supporterId > 0)
                            {
                                treatmentSupporterManager.AddPatientTreatmentSupporter(personId, supporterId, kin.PHONE_NUMBER, userId);
                            }
                        }
                    }
                }

                PatientEntity patientEntity = new PatientEntity();
                patientEntity.PersonId     = personId;
                patientEntity.ptn_pk       = 0;
                patientEntity.FacilityId   = facilityId;
                patientEntity.PatientType  = patientType;
                patientEntity.PatientIndex = patientIndex;
                patientEntity.DateOfBirth  = dob;
                patientEntity.NationalId   = (nationalId);
                patientEntity.Active       = true;
                patientEntity.CreatedBy    = 1;
                patientEntity.CreateDate   = DateTime.Now;
                patientEntity.DeleteFlag   = false;
                patientEntity.DobPrecision = dobPrecision;

                int patientId = patientManager.AddPatient(patientEntity);

                var facility = lookupLogic.GetFacility();
                //Add enrollment visit
                int patientMasterVisitId = patientMasterVisitManager.AddPatientMasterVisit(patientId, userId, visitType, facility.FacilityID);
                //Enroll Patient to service
                int patientEnrollmentId = patientEnrollmentManager.addPatientEnrollment(patientId, dateOfEnrollment.ToString(), userId);
                //Add enrollment entry point
                int patientEntryPointId = patientEntryPointManager.addPatientEntryPoint(patientId, entryPointId, userId);

                if (deathDate.HasValue)
                {
                    PatientCareEndingManager careEndingManager = new PatientCareEndingManager();
                    int itemId = lookupLogic.GetItemIdByGroupAndItemName("CareEnded", "Death")[0].ItemId;
                    careEndingManager.AddPatientCareEndingDeath(patientId, patientMasterVisitId, patientEnrollmentId, itemId, deathDate.Value, deathDate.Value, "", null, null);

                    PatientEntityEnrollment entityEnrollment = patientEnrollmentManager.GetPatientEntityEnrollment(patientEnrollmentId);
                    entityEnrollment.CareEnded = true;
                    patientEnrollmentManager.updatePatientEnrollment(entityEnrollment);
                }
                //Get User Details to be used in BLUE CARD
                var patient_person_details = personLookUp.GetPersonById(personId);
                var greencardlookup        = new PersonGreenCardLookupManager();
                var greencardptnpk         = greencardlookup.GetPtnPkByPersonId(personId);

                if (patient_person_details != null)
                {
                    var maritalStatus = new PersonMaritalStatusManager().GetCurrentPatientMaritalStatus(personId);
                    personContacts = personContactLookUpManager.GetPersonContactByPersonId(personId);
                    var address = "";
                    var phone   = "";

                    if (personContacts.Count > 0)
                    {
                        address = personContacts[0].PhysicalAddress;
                        phone   = personContacts[0].MobileNumber;
                    }

                    var MaritalStatusId = 0;
                    if (maritalStatus != null)
                    {
                        MaritalStatusId = maritalStatus.MaritalStatusId;
                    }

                    var sexBluecard          = 0;
                    var enrollmentBlueCardId = "";

                    if (LookupLogic.GetLookupNameById(patient_person_details.Sex) == "Male")
                    {
                        sexBluecard = 16;
                    }
                    else if (LookupLogic.GetLookupNameById(patient_person_details.Sex) == "Female")
                    {
                        sexBluecard = 17;
                    }

                    enrollmentBlueCardId = cccNumber;

                    if (greencardptnpk.Count == 0)
                    {
                        ptn_Pk = mstPatientLogic.InsertMstPatient((patient_person_details.FirstName), (patient_person_details.LastName), (patient_person_details.MiddleName), facilityId, enrollmentBlueCardId, entryPointId, dateOfEnrollment, sexBluecard, dob, 1, MaritalStatusId, address, phone, 1, facilityId.ToString(), 203, dateOfEnrollment, DateTime.Now);

                        patientEntity.ptn_pk = ptn_Pk;
                        patientManager.UpdatePatient(patientEntity, patientId);
                    }
                    else
                    {
                        ptn_Pk = greencardptnpk[0].Ptn_Pk;
                        patientEntity.ptn_pk = greencardptnpk[0].Ptn_Pk;
                        patientManager.UpdatePatient(patientEntity, patientId);
                    }
                }

                if (patientMasterVisitId > 0)
                {
                    var assigningFacility   = cccNumber.Substring(0, 5);
                    int patientIdentifierId = patientIdentifierManager.addPatientIdentifier(patientId, patientEnrollmentId, 1, cccNumber, facilityId, assigningFacility, false);

                    if (greencardptnpk.Count == 0)
                    {
                        mstPatientLogic.AddOrdVisit(ptn_Pk, facilityId, DateTime.Now, 110, userId, DateTime.Now, 203);
                    }
                }

                return("successfully saved");
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        public async Task <Result <AddEnrollPatientResponse> > Handle(EnrollPatientCommand request, CancellationToken cancellationToken)
        {
            try
            {
                String               sDate     = DateTime.Now.ToString();
                DateTime             datevalue = Convert.ToDateTime(sDate);
                var                  patientMasterVisitManager = new PatientMasterVisitManager();
                var                  patientEnrollmentManager  = new PatientEnrollmentManager();
                var                  personLookUp               = new PersonLookUpManager();
                var                  patientEntryPointManager   = new PatientEntryPointManager();
                var                  patientLookUpManager       = new PatientLookupManager();
                var                  patientManager             = new PatientManager();
                var                  patientIdentifierManager   = new PatientIdentifierManager();
                var                  personContactLookUpManager = new PersonContactLookupManager();
                var                  lookupLogic        = new LookupLogic();
                var                  personContacts     = new List <PersonContactLookUp>();
                var                  identifiersObjects = request.identifiersList;
                List <PatientLookup> isPersonEnrolled   = await Task.Run(() => patientLookUpManager.GetPatientByPersonId(request.PersonId));

                string dobPrecision = String.IsNullOrEmpty(request.DobPrecision) ? "false" : "true";
                foreach (var item in identifiersObjects)
                {
                    var identifiers = await Task.Run(() => patientIdentifierManager.CheckIfIdentifierNumberIsUsed(item.Value, Convert.ToInt32(item.Key)));

                    if (identifiers.Count > 0)
                    {
                        foreach (var items in identifiers)
                        {
                            if (isPersonEnrolled.Count > 0)
                            {
                                if (items.PatientId == isPersonEnrolled[0].Id)
                                {
                                }
                                else
                                {
                                    var exception = new Exception("No: " + item.Value + " already exists");
                                    msg = exception.Message.ToString();
                                    throw exception;
                                }
                            }
                            else
                            {
                                var exception = new Exception("No: " + item.Value + " already exists");
                                msg = exception.Message.ToString();
                                throw exception;
                            }
                        }
                    }
                }

                if (isPersonEnrolled.Count == 0)
                {
                    List <PatientRegistrationLookup> patientsByPersonId = await Task.Run(() => patientManager.GetPatientIdByPersonId(request.PersonId));

                    var           patientIndex = datevalue.Year.ToString() + '-' + request.PersonId;
                    PatientEntity patient      = new PatientEntity();
                    if (patientsByPersonId.Count > 0)
                    {
                        patient.FacilityId  = request.facilityId;
                        patient.DateOfBirth = DateTime.Parse(request.DateofBirth);
                        patient.NationalId  = request.nationalId;
                        patient.ptn_pk      = patientsByPersonId[0].ptn_pk > 0 ? patientsByPersonId[0].ptn_pk : 0;

                        patientManager.UpdatePatient(patient, patientsByPersonId[0].Id);
                        patientId = patientsByPersonId[0].Id;
                    }
                    else
                    {
                        patient.PersonId     = request.PersonId;
                        patient.ptn_pk       = 0;
                        patient.FacilityId   = request.facilityId;
                        patient.PatientType  = request.PatientType;
                        patient.PatientIndex = patientIndex;
                        patient.DateOfBirth  = DateTime.Parse(request.DateofBirth);
                        patient.NationalId   = (request.nationalId);
                        patient.Active       = true;
                        patient.CreatedBy    = request.UserId;
                        patient.CreateDate   = DateTime.Now;
                        patient.DeleteFlag   = false;
                        patient.DobPrecision = bool.Parse(dobPrecision);

                        patientId = patientManager.AddPatient(patient);
                    }
                    if (patientId > 0)
                    {
                        var visitTypes = await Task.Run(() => lookupLogic.GetItemIdByGroupAndItemName("VisitType", "Enrollment"));

                        var visitType = 0;
                        if (visitTypes.Count > 0)
                        {
                            visitType = visitTypes[0].ItemId;
                        }

                        //Add enrollment visit
                        patientMasterVisitId =
                            patientMasterVisitManager.AddPatientMasterVisit(patientId, request.UserId, visitType);
                        //Enroll Patient to service
                        patientEnrollmentId = patientEnrollmentManager.addPatientEnrollment(patientId, request.EnrollmentDate, request.UserId);
                        //Add enrollment entry point
                        patientEntryPointId = patientEntryPointManager.addPatientEntryPoint(patientId, request.EntryPointId, request.UserId);



                        if (patientMasterVisitId > 0)
                        {
                            foreach (var item in identifiersObjects)
                            {
                                patientIdentifierId = await Task.Run(() => patientIdentifierManager.addPatientIdentifier(patientId,
                                                                                                                         patientEnrollmentId, Convert.ToInt32(item.Key), item.Value, request.facilityId));

                                //Get User Details to be used in BLUE CARD
                            }

                            msg = "Succefully enrolled patient.";
                        }
                    }

                    {
                        var patientLookManager           = new PatientLookupManager();
                        List <PatientLookup> patientlook = await Task.Run(() => patientLookManager.GetPatientByPersonId(request.PersonId));

                        if (patientlook.Count > 0)
                        {
                            int ptn_pk = patientlook[0].Id;

                            List <PatientEntity> listPatient = new List <PatientEntity>();
                            var entity = await Task.Run(() => patientlook.ConvertAll(x => new PatientEntity {
                                Id = x.Id, Active = x.Active, DateOfBirth = x.DateOfBirth, ptn_pk = x.ptn_pk, PatientType = x.PatientType, PatientIndex = x.PatientIndex, NationalId = x.NationalId, FacilityId = x.FacilityId
                            }));

                            var patientAuditData = await Task.Run(() => AuditDataUtility.Serializer(entity));

                            PatientEntity updatePatient = new PatientEntity();
                            updatePatient.ptn_pk      = patientlook[0].ptn_pk;
                            updatePatient.DateOfBirth = patientlook[0].DateOfBirth;
                            updatePatient.NationalId  = request.nationalId;
                            updatePatient.FacilityId  = patientlook[0].FacilityId;


                            //listPatient.Add(entity);
                            updatePatient.AuditData = patientAuditData;
                            //var enrollmentAuditData = AuditDataUtility.Serializer(patient);

                            await Task.Run(() => patientManager.UpdatePatient(updatePatient, patientlook[0].Id));

                            int patientMasterVisitId = await Task.Run(() => patientMasterVisitManager.PatientMasterVisitCheckin(patientlook[0].Id, request.UserId));

                            int PatientMasterVisitId = patientMasterVisitId;

                            List <PatientEntryPoint> entryPoints = await Task.Run(() => patientEntryPointManager.GetPatientEntryPoints(patientlook[0].Id));

                            if (entryPoints.Count > 0)
                            {
                                var entryPointAuditData = await Task.Run(() => AuditDataUtility.Serializer(entryPoints));

                                entryPoints[0].EntryPointId = request.EntryPointId;
                                entryPoints[0].AuditData    = entryPointAuditData;

                                await Task.Run(() => patientEntryPointManager.UpdatePatientEntryPoint(entryPoints[0]));
                            }
                            foreach (var item in identifiersObjects)
                            {
                                var identifiersByPatientId = await Task.Run(() => patientIdentifierManager
                                                                            .GetPatientEntityIdentifiersByPatientId(patientlook[0].Id, Convert.ToInt32(item.Key)));

                                if (identifiersByPatientId.Count > 0)
                                {
                                    foreach (var entityIdentifier in identifiersByPatientId)
                                    {
                                        int enrollmentId = entityIdentifier.PatientEnrollmentId;

                                        PatientEntityEnrollment entityEnrollment =
                                            await Task.Run(() => patientEnrollmentManager.GetPatientEntityEnrollment(enrollmentId));

                                        List <PatientEntityEnrollment> listEnrollment = new List <PatientEntityEnrollment>();
                                        await Task.Run(() => listEnrollment.Add(entityEnrollment));

                                        var enrollmentAuditData = await Task.Run(() => AuditDataUtility.Serializer(listEnrollment));

                                        entityEnrollment.EnrollmentDate = DateTime.Parse(request.EnrollmentDate);
                                        entityEnrollment.AuditData      = enrollmentAuditData;

                                        patientEnrollmentManager.updatePatientEnrollment(entityEnrollment);

                                        var entityIdentifierAuditData = AuditDataUtility.Serializer(identifiersByPatientId);
                                        entityIdentifier.IdentifierValue = item.Value;
                                        entityIdentifier.AuditData       = entityIdentifierAuditData;
                                        patientIdentifierManager.UpdatePatientIdentifier(entityIdentifier, request.facilityId);
                                    }
                                }
                                else
                                {
                                    patientEnrollmentId = await Task.Run(() => patientEnrollmentManager.addPatientEnrollment(patientlook[0].Id, request.EnrollmentDate, request.UserId));

                                    patientEntryPointId = await Task.Run(() => patientEntryPointManager.addPatientEntryPoint(patientlook[0].Id, request.EntryPointId, request.UserId));

                                    patientIdentifierId = await Task.Run(() => patientIdentifierManager.addPatientIdentifier(patientlook[0].Id,
                                                                                                                             patientEnrollmentId, Convert.ToInt32(item.Key), item.Value, request.facilityId));
                                }
                            }
                        }
                    }
                }


                return(Result <AddEnrollPatientResponse> .Valid(new AddEnrollPatientResponse()
                {
                    IdentifierValue = Convert.ToString(patientEnrollmentId),
                    IdentifierId = patientIdentifierId,
                    PatientId = patientId,
                    Message = msg
                }

                                                                ));
            }
            catch (Exception ex)
            {
                return(Result <AddEnrollPatientResponse> .Invalid(ex.Message));
            }
        }
예제 #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var patientTransfer   = new PatientTransferInmanager();
            var patientDiagnosis  = new PatientHivDiagnosisManager();
            var patientEntryPoint = new PatientEntryPointManager();
            PatientLookupManager patientLookup = new PatientLookupManager();

            Session["TechnicalAreaId"] = 203;
            var objTransfer          = patientTransfer.GetPatientTransferIns(PatientId);
            var objDiagnosis         = patientDiagnosis.GetPatientHivDiagnosisList(PatientId);
            var objEntryPoint        = patientEntryPoint.GetPatientEntryPoints(Convert.ToInt32(Session["PatientPK"]));
            var patientDetailSummary = patientLookup.GetPatientDetailSummary(Convert.ToInt32(Session["PatientPK"]));

            if (patientDetailSummary != null)
            {
                this.ptnPk = patientDetailSummary.ptn_pk.HasValue ? patientDetailSummary.ptn_pk.Value : 0;
            }


            if (objTransfer.Count > 0)
            {
                foreach (var item in objTransfer)
                {
                    lblTransferinDate.Text     = "<h6>" + item.TransferInDate.ToString("dd-MMM-yyyy") + "</h6>";
                    lblTreatmentStartDate.Text = "<h6>" + item.TreatmentStartDate.ToString("dd-MMM-yyyy") + "</h6>";;
                    //lblTIRegimen.Text = "<h6>" + LookupLogic.GetLookupNameById(Convert.ToInt32(item.CurrentTreatment)).ToString() + "</h6>"; ;
                    lblFacilityFrom.Text = "<h6>" + item.FacilityFrom.ToString() + "</h6>";;
                }
            }
            else
            {
                lblTransferinDate.Text     = "N/A";
                lblTreatmentStartDate.Text = "N/A";
                lblTIRegimen.Text          = "N/A";
                lblFacilityFrom.Text       = "N/A";
            }

            if (objDiagnosis.Count > 0)
            {
                foreach (var item in objDiagnosis)
                {
                    if (item.HivDiagnosisDate.HasValue)
                    {
                        DateTime HivDiagnosisDate = item.HivDiagnosisDate.Value;
                        lblDateOfHivDiagnosis.Text = HivDiagnosisDate.ToString("dd-MMM-yyyy");
                    }
                    else
                    {
                        lblDateOfHivDiagnosis.Text = "Not Taken";
                    }

                    if (item.EnrollmentDate.HasValue)
                    {
                        lblDateOfEnrollment.Text = item.EnrollmentDate.Value.ToString("dd-MMM-yyyy");
                    }
                    else
                    {
                        lblDateOfEnrollment.Text = "Not Taken";
                    }

                    // lblWhoStage.Text = LookupLogic.GetLookupNameById(item.EnrollmentWhoStage).ToString();
                    //lblDateOfHivDiagnosis.Text = item.HivDiagnosisDate.ToString("dd-MMM-yyyy");
                    lblARTInitiationDate.Text = Convert.ToString(item.ArtInitiationDate);
                }
            }
            else
            {
                lblDateOfHivDiagnosis.Text = "Not Taken";
                lblDateOfEnrollment.Text   = "Not Taken";
                lblWhoStage.Text           = "Not Taken";
                lblARTInitiationDate.Text  = "Not Taken";
            }

            if (objEntryPoint.Count > 0)
            {
                foreach (var item in objEntryPoint)
                {
                    lblEntryPoint.Text = LookupLogic.GetLookupNameById(item.EntryPointId);
                }
            }
            else
            {
                lblEntryPoint.Text = "missing";
            }

            if (!IsPostBack)
            {
                ILookupManager mgr =
                    (ILookupManager)
                    ObjectFactory.CreateInstance("BusinessProcess.CCC.BLookupManager, BusinessProcess.CCC");

                List <LookupItemView> keyPopulationList = mgr.GetLookItemByGroup("PopulationType");
                if (keyPopulationList != null && keyPopulationList.Count > 0)
                {
                    bioPatientPopulation.Items.Add(new ListItem("select", "0"));
                    foreach (var item in keyPopulationList)
                    {
                        bioPatientPopulation.Items.Add(new ListItem(item.ItemDisplayName, item.ItemId.ToString()));
                    }
                }

                List <LookupCounty> ct = mgr.GetLookupCounties();

                if (ct != null && ct.Count > 0)
                {
                    smrCounty.Items.Add(new ListItem("select", "0"));
                    foreach (var item in ct)
                    {
                        smrCounty.Items.Add(new ListItem(item.CountyName, item.CountyId.ToString()));
                    }
                }

                List <LookupItemView> vw = mgr.GetGenderOptions();
                if (vw != null && vw.Count > 0)
                {
                    trtGender.Items.Add(new ListItem("select", "0"));

                    foreach (var item in vw)
                    {
                        trtGender.Items.Add(new ListItem(item.ItemName, item.ItemId.ToString()));
                    }
                }

                if (vw != null && vw.Count > 0)
                {
                    Gender.Items.Add(new ListItem("select", "0"));

                    foreach (var item in vw)
                    {
                        Gender.Items.Add(new ListItem(item.ItemName, item.ItemId.ToString()));
                    }
                }

                List <LookupItemView> keyPopList = mgr.GetLookItemByGroup("KeyPopulation");
                if (keyPopList != null && keyPopList.Count > 0)
                {
                    var    patientLookUp = new PatientLookupManager();
                    int    sex           = patientLookUp.GetPatientSexId(Convert.ToInt32(Session["PatientPK"]));
                    string gender        = LookupLogic.GetLookupNameById(sex);
                    //bioPatientKeyPopulation.Items.Add(new ListItem("select", "0"));
                    foreach (var item in keyPopList)
                    {
                        if (gender == "Female" && item.DisplayName == "Men having Sex with Men")
                        {
                        }
                        else if (gender == "Male" && item.DisplayName == "Female Sex Worker")
                        {
                        }
                        else
                        {
                            bioPatientKeyPopulation.Items.Add(new ListItem(item.ItemDisplayName, item.ItemId.ToString()));
                        }
                    }
                }

                // Get Patient Regimen Map:
                IPatientTreatmentTrackerManager patientTreatmentTrackerManager = (IPatientTreatmentTrackerManager)ObjectFactory.CreateInstance("BusinessProcess.CCC.Lookup.BPatientTreatmentTrackerManager, BusinessProcess.CCC");
                var curentRegimen = patientTreatmentTrackerManager.GetCurrentPatientRegimen(PatientId);

                if (curentRegimen != null)
                {
                    if (curentRegimen.RegimenId > 0)
                    {
                        //lblCurrentRegimen.Text = "<span class='label label-success'>" + curentRegimen.Regimen.ToString() + " started on : " + Convert.ToDateTime(curentRegimen.DispensedByDate).ToString("dd-MMM-yyyy") + "</span>";
                        lblCurrentRegimen.Text = "<span class='label label-success'>" + curentRegimen.Regimen.ToString() + " | " + Convert.ToDateTime(curentRegimen.DispensedByDate).ToString("dd-MMM-yyyy") + "</span>";
                    }
                    else
                    {
                        lblCurrentRegimen.Text = "<span class='label label-danger'>Patient NOT on ARVs</span>";
                    }
                }
                else
                {
                    lblCurrentRegimen.Text = "<span class='label label-danger'>Patient NOT on ARVs</span>";
                }

                //Get Adherance Status
                ILookupManager patientAdheLookupManager = (ILookupManager)ObjectFactory.CreateInstance("BusinessProcess.CCC.BLookupManager, BusinessProcess.CCC");
                var            adherenceList            = LookupLogic.GetLookItemByGroup("ARVAdherence");
                int            adherenceType            = 34;
                if (adherenceList.Count > 0)
                {
                    adherenceType = adherenceList[0].MasterId;
                }

                var adheranceStatus = patientAdheLookupManager.GetPatientAdherence(PatientId, adherenceType);

                if (adheranceStatus != null)
                {
                    string adheranceString = LookupLogic.GetLookupNameById(adheranceStatus.Score);
                    switch (adheranceString)
                    {
                    case "Poor":
                        lblAdheranceStatus.Text = "<span class='label label-danger'> Poor [Offer Adherence Interventions]</span>";
                        break;

                    case "Good":
                        lblAdheranceStatus.Text = "<span class='label label-success'> Good </span>";
                        break;

                    case "Fair":
                        lblAdheranceStatus.Text = "<span class='label label-warning'> Fair [Consider Adherence Intervetion]</span>";
                        break;
                    }
                }
                else
                {
                    lblAdheranceStatus.Text = "<span class='label label-danger'>Adherance Assessment Not Done</span>";
                }

                /*update Treatment Initiation for New Patients */
                if (PatientType == "New")
                {
                    var patientTreatmentManager = new PatientTreatmentTrackerManager();
                    var ptnTreatmentInitiation  = patientTreatmentManager.GetCurrentPatientRegimen(PatientId);
                    var ptnTreatmentBaseline    = patientTreatmentManager.GetPatientbaselineRegimenLookup(PatientId);
                    if (ptnTreatmentInitiation != null)
                    {
                        if (ptnTreatmentBaseline != null)
                        {
                            if (ptnTreatmentBaseline.DispensedByDate.HasValue)
                            {
                                DateTime DispensedByDate = (DateTime)ptnTreatmentBaseline.DispensedByDate;

                                lblFirstline.Text = DispensedByDate.ToString("dd-MMM-yyyy");
                                lblcohort.Text    = DispensedByDate.ToString("MMM") + "-" + DispensedByDate.Year;
                            }

                            lblRegimenName.Text = ptnTreatmentInitiation.Regimen.ToString();
                            //lblCurrentRegimen.Text = "<span class='label label-success'>" + ptnTreatmentBaseline.Regimen.ToString() + "</span>";
                            lblARTInitiationDate.Text = ptnTreatmentBaseline.CreateDate.ToString("dd-MMM-yyyy");

                            // lblRegimenName.Text = ptnTreatmentInitiation.Regimen.ToString();
                            //lblCurrentRegimen.Text = "<span class='label label-success'>" + ptnTreatmentBaseline.Regimen.ToString() + "</span>";
                            //lblARTInitiationDate.Text = ptnTreatmentBaseline.CreateDate.ToString("dd-MMM-yyyy");
                        }
                    }
                    else
                    {
                        lblDateOfARTInitiation.Text = "<span class='label'> Not dispensed</span>";
                        lblcohort.Text = "<span class='label label-danger'>N/A</span>";
                        // lblCurrentRegimen.Text = "<span class='label label-danger'>PATIENT NOT ON ARVs</span>";
                    }
                }

                // viral Load Alerts

                //PatientLabTracker vltestId = _lookupData.GetPatientLabTestId(PatientId);  //check patient has vl lab
                PatientLabTracker lastVL = _lookupData.GetPatientLastVL(PatientId);

                //if (lastVL != null)
                //{
                //    labTestId = lastVL.LabTestId;
                //}
                if (lastVL != null)
                {
                    //var labOrder = _lookupData.GetPatientCurrentviralLoadInfo(PatientId);  //get vl lab details for patient

                    //if (lastVL != null)
                    //{
                    //foreach (var item in _lookupData.GetPatientVlById(labOrder.Id))
                    //{
                    //    vlValue = item.ResultValues;
                    //}

                    // vlValue = Convert.ToDecimal(_lookupData.GetPatientVL(LabOrder.Id));
                    if (PatientType == "New")
                    {
                        //lblbaselineVL.Text = Convert.ToString(vlValue);
                        DateTime x = Convert.ToDateTime(lastVL.SampleDate);
                        lblBlDate.Text = x.ToString("dd-MMM-yyyy");
                    }
                    else
                    {
                        lblbaselineVL.Text = "<span class='label label-danger'>Not Taken</span>";
                        lblBlDate.Text     = "<span class='label label-danger'>N/A</span>";
                    }
                    if (lastVL.Results != null)
                    {
                        switch (lastVL.Results.ToLower().Trim())
                        {
                        case "pending":
                            var      pendingDueDate = Convert.ToDateTime(lastVL.SampleDate);
                            DateTime sampleDate     = Convert.ToDateTime(lastVL.SampleDate.ToString());

                            if ((DateTime.Today.Subtract(sampleDate).Days > 30))
                            {
                                lblVL.Text        = "<span class='label label-danger' > Overdue | Ordered On: " + ((DateTime)lastVL.SampleDate).ToString("dd-MMM-yyyy") + "</span>";
                                lblvlDueDate.Text = "<span class='label label-success'> " + pendingDueDate.AddMonths(6).ToString("dd-MMM-yyy") + " </span>";
                            }
                            else if ((lastVL.Results == "Pending") && (DateTime.Today.Subtract(sampleDate).Days < 30))
                            {
                                lblVL.Text        = "<span class='label label-warning'> Pending | Ordered On: " + ((DateTime)lastVL.SampleDate).ToString("dd-MMM-yyyy") + "</span>";
                                lblvlDueDate.Text = "<span class='label label-success'> " + pendingDueDate.AddMonths(6).ToString("dd-MMM-yyy") + " </span>";
                            }
                            else
                            {
                                lblVL.Text         = "<span class='label label-warning'>" + lastVL.Results + "| Date: " + ((DateTime)lastVL.SampleDate).ToString("dd-MMM-yyyy") + "</span>";
                                lblbaselineVL.Text = "<span class='label label-warning'>" + lastVL.Results + "| Date: " + ((DateTime)lastVL.SampleDate).ToString("dd-MMM-yyyy") + "</span>";
                            }
                            break;

                        case "complete":
                        case "completed":
                            if (lastVL.ResultValues >= 1000)
                            {
                                lblVL.Text        = "<span class='label label-danger'>" + lastVL.ResultValues + " copies/ml (" + Convert.ToDateTime(lastVL.SampleDate).ToString("dd-MMM-yyyy") + ")</span>";
                                lblvlDueDate.Text = "<span class='label label-success' > " + ((DateTime)lastVL.SampleDate).AddMonths(3).ToString("dd-MMM-yyyy") + "</span>";
                            }
                            else if (lastVL.ResultValues <= 50)
                            {
                                lblVL.Text        = "<span class='label label-success'> Undetectable VL (" + Convert.ToDateTime(lastVL.SampleDate).ToString("dd-MMM-yyyy") + ")</span>";
                                lblvlDueDate.Text = "<span class='label label-success' > " + ((DateTime)lastVL.SampleDate).AddMonths(12).ToString("dd-MMM-yyyy") + "</span>";
                            }
                            else
                            {
                                lblVL.Text        = "<span class='label label-success' > Complete | Results : " + lastVL.ResultValues + " copies/ml</span>";
                                lblvlDueDate.Text = "<span class='label label-success' > " + ((DateTime)lastVL.SampleDate).AddMonths(12).ToString("dd-MMM-yyyy") + "</span>";
                            }
                            break;

                        default:
                            var patientEnrollment = new PatientEnrollmentManager();
                            var enrolDate         = patientEnrollment.GetPatientEnrollmentDate(PatientId);

                            var treatmentTrackerManager = new PatientTreatmentTrackerManager();

                            var patientBaseline = treatmentTrackerManager.GetPatientbaselineRegimenLookup(PatientId);

                            DateTime today = DateTime.Today;
                            // TimeSpan difference = today.Date - enrolDate.Date;
                            TimeSpan difference = today.Date - patientBaseline.CreateDate;
                            int      days       = (int)difference.TotalDays;

                            if (patientBaseline != null)
                            {
                                if (patientBaseline.RegimenId > 0)
                                {
                                    if (days < 180)
                                    {
                                        lblvlDueDate.Text = "<span class='label label-success'>" + patientBaseline.CreateDate.AddMonths(6).ToString("dd-MMM-yyyy") + "</span>";
                                        lblVL.Text        = "<span class='label label-success fa fa-exclamation'><strong>  VL Not Requested  </strong></span>";
                                    }
                                    else
                                    {
                                        lblVL.Text        = "<span class='label label-danger'> Not Done </span>";
                                        lblvlDueDate.Text = "<span class='label label-danger'><strong> Overdue Since | " + patientBaseline.CreateDate.AddMonths(6).ToString("dd-MMM-yyyy") + " </strong></span>";
                                    }
                                }
                                else
                                {
                                    lblVL.Text        = "<span class='label label-danger'> Not Available </span>";
                                    lblvlDueDate.Text = "<span class='label label-danger'><strong> unknown </strong></span>";
                                }
                            }
                            else
                            {
                                lblVL.Text        = "<span class='label label-danger'> Not Done </span>";
                                lblvlDueDate.Text = "<span class='label label-danger'><strong>  Overdue Since | " + patientBaseline.CreateDate.AddMonths(6).ToString("dd-MMM-yyyy") + " </strong></span>";
                            }


                            break;
                        }
                    }
                    else
                    {
                        //var patientEnrollment = new PatientEnrollmentManager();
                        //var enrolDate = patientEnrollment.GetPatientEnrollmentDate(PatientId);

                        var treatmentTrackerManager = new PatientTreatmentTrackerManager();
                        var patientBaseline         = treatmentTrackerManager.GetPatientbaselineRegimenLookup(PatientId);

                        if (patientBaseline != null)
                        {
                            if (patientBaseline.RegimenId > 0)
                            {
                                DateTime today = DateTime.Today;
                                //TimeSpan difference = today.Date - enrolDate.Date;
                                TimeSpan difference = today.Date - patientBaseline.CreateDate;
                                int      days       = (int)difference.TotalDays;

                                if (days < 180)
                                {
                                    lblvlDueDate.Text = "<span class='label label-success'>" + patientBaseline.CreateDate.AddMonths(6).ToString("dd-MMM-yyyy") + "</span>";
                                    lblVL.Text        = "<span class='label label-success fa fa-exclamation'><strong>  VL Not Requested  </strong></span>";
                                }
                                else
                                {
                                    lblVL.Text        = "<span class='label label-danger'> Not Done </span>";
                                    lblvlDueDate.Text = "<span class='label label-danger'><strong>  Overdue Since | " + patientBaseline.CreateDate.AddMonths(6).ToString("dd-MMM-yyyy") + " </strong></span>";
                                }
                            }
                            else
                            {
                                lblVL.Text        = "<span class='label label-danger'> Not Done</span>";
                                lblvlDueDate.Text = "<span class='label label-danger'><strong> unknown </strong></span>";
                            }
                        }
                        else
                        {
                            lblVL.Text        = "<span class='label label-danger'> Not Done </span>";
                            lblvlDueDate.Text = "<span class='label label-danger'><strong> unknown </strong></span>";
                        }
                    }
                    //}
                }
                else
                {
                    //var patientEnrollment = new PatientEnrollmentManager();
                    //var enrolDate = patientEnrollment.GetPatientEnrollmentDate(PatientId);

                    var treatmentTrackerManager = new PatientTreatmentTrackerManager();
                    var patientBaseline         = treatmentTrackerManager.GetPatientbaselineRegimenLookup(PatientId);

                    DateTime today = DateTime.Today;
                    //TimeSpan difference = today.Date - enrolDate.Date;
                    TimeSpan difference = today.Date - patientBaseline.CreateDate;

                    if (patientBaseline != null)
                    {
                        if (patientBaseline.RegimenId > 0)
                        {
                            int days = (int)difference.TotalDays;

                            if (days < 180)
                            {
                                lblvlDueDate.Text = "<span class='label label-success'>" + patientBaseline.CreateDate.AddMonths(6).ToString("dd-MMM-yyyy") + "</span>";
                                lblVL.Text        = "<span class='label label-success fa fa-exclamation'><strong>  VL Not Requested  </strong></span>";
                            }
                            else
                            {
                                lblVL.Text        = "<span class='label label-danger'> Not Available </span>";
                                lblvlDueDate.Text = "<span class='label label-danger'><strong> Overdue </strong></span>";
                            }
                        }
                        else
                        {
                            lblVL.Text        = "<span class='label label-danger'> Not Done </span>";
                            lblvlDueDate.Text = "<span class='label label-danger'><strong> unknown </strong></span>";
                        }
                    }
                    else
                    {
                        lblVL.Text        = "<span class='label label-danger'> Not Done </span>";
                        lblvlDueDate.Text = "<span class='label label-danger'><strong> unknown </strong></span>";
                    }
                }

                PharmacyHistoryDrugSubstitutionsManager pharmacyHistoryDrug = new PharmacyHistoryDrugSubstitutionsManager();
                var pharmacyDrugsSubstitutionsSwitchesData = pharmacyHistoryDrug.GetPharmacyDrugsSubstitutionsSwitchesData(this.ptnPk);

                if (pharmacyDrugsSubstitutionsSwitchesData.Count > 0)
                {
                    for (int p = 0; p < pharmacyDrugsSubstitutionsSwitchesData.Count; p++)
                    {
                        HtmlTableRow  tableRow = new HtmlTableRow();
                        HtmlTableCell idcell   = new HtmlTableCell();
                        idcell.InnerHtml = (p + 1).ToString();
                        tableRow.Controls.Add(idcell);

                        HtmlTableCell cell = new HtmlTableCell();
                        cell.InnerHtml = pharmacyDrugsSubstitutionsSwitchesData[p].regimentype;
                        tableRow.Controls.Add(cell);

                        HtmlTableCell cell2 = new HtmlTableCell();
                        cell2.InnerHtml = pharmacyDrugsSubstitutionsSwitchesData[p].DispensedByDate.HasValue
                            ? pharmacyDrugsSubstitutionsSwitchesData[p].DispensedByDate.Value.ToString("dd-MMM-yyyy")
                            : "not dispensed";
                        tableRow.Controls.Add(cell2);

                        tblPharmacyHistory.Rows.Add(tableRow);
                    }
                }
            }
        }
        public string Update(PatientRegistrationDTO registration)
        {
            ExMessage message = new ExMessage();

            try
            {
                PatientLookupManager          patientLookup            = new PatientLookupManager();
                PatientEntryPointManager      patientEntryPointManager = new PatientEntryPointManager();
                PatientRegistrationValidation registrationValidation   = new PatientRegistrationValidation();
                LookupLogic lookupLogic = new LookupLogic();

                string        cccNumber     = String.Empty;
                string        nationalId    = String.Empty;
                PatientLookup patient       = new PatientLookup();
                int           interopUserId = InteropUser.UserId;
                string        results       = registrationValidation.ValidateDTO(registration);
                if (!String.IsNullOrWhiteSpace(results))
                {
                    throw new Exception(results);
                }

                foreach (var item in registration.PATIENT_IDENTIFICATION.INTERNAL_PATIENT_ID)
                {
                    if (item.IDENTIFIER_TYPE == "CCC_NUMBER" && item.ASSIGNING_AUTHORITY == "CCC")
                    {
                        cccNumber = item.ID;
                    }

                    if (item.IDENTIFIER_TYPE == "NATIONAL_ID" && item.ASSIGNING_AUTHORITY == "GOK")
                    {
                        nationalId = item.ID;
                    }
                }

                if (!String.IsNullOrWhiteSpace(cccNumber))
                {
                    patient = patientLookup.GetPatientByCccNumber(cccNumber);

                    int entryPointId = 0;
                    //Get Gender
                    string gender = registration.PATIENT_IDENTIFICATION.SEX == "F" ? "Female" : "Male";
                    //IQCare Sex
                    int sex = lookupLogic.GetItemIdByGroupAndItemName("Gender", gender)[0].ItemId;
                    //Assume this is a new patient
                    int patientType = lookupLogic.GetItemIdByGroupAndItemName("PatientType", "New")[0].ItemId;
                    //Get Enrollment Id Type
                    int visitType = lookupLogic.GetItemIdByGroupAndItemName("VisitType", "Enrollment")[0].ItemId;
                    //Get DOB
                    DateTime DOB;
                    bool     DOB_Precision;
                    switch (registration.PATIENT_IDENTIFICATION.DATE_OF_BIRTH_PRECISION)
                    {
                    case "ESTIMATED":
                        DOB_Precision = false;
                        break;

                    case "EXACT":
                        DOB_Precision = true;
                        break;

                    default:
                        DOB_Precision = true;
                        break;
                    }
                    //Get Patient Names
                    string firstName  = registration.PATIENT_IDENTIFICATION.PATIENT_NAME.FIRST_NAME;
                    string middleName = registration.PATIENT_IDENTIFICATION.PATIENT_NAME.MIDDLE_NAME;
                    string lastName   = registration.PATIENT_IDENTIFICATION.PATIENT_NAME.LAST_NAME;
                    string godsNumber = registration.PATIENT_IDENTIFICATION.EXTERNAL_PATIENT_ID.ID;
                    //Marital Status
                    string maritalStatusString = String.Empty;
                    int    maritalStatusId     = 0;
                    switch (registration.PATIENT_IDENTIFICATION.MARITAL_STATUS)
                    {
                    case "S":
                        maritalStatusString = "Single";
                        break;

                    case "W":
                        maritalStatusString = "Widowed";
                        break;

                    case "D":
                        maritalStatusString = "Divorced";
                        break;

                    case "MP":
                        maritalStatusString = "Married Polygamous";
                        break;

                    case "C":
                        maritalStatusString = "Cohabiting";
                        break;

                    case "MM":
                        maritalStatusString = "Married Monogamous";
                        break;

                    default:
                        maritalStatusString = "Unknown";
                        break;
                    }

                    maritalStatusId = lookupLogic.GetItemIdByGroupAndItemName("MaritalStatus", maritalStatusString)[0].ItemId;
                    //Get patient Address
                    string village         = String.Empty;
                    string ward            = String.Empty;
                    string sub_county      = String.Empty;
                    string county          = String.Empty;
                    string nearestLandMark = String.Empty;
                    string postalAdress    = String.Empty;
                    string phoneNumber     = String.Empty;
                    string deathDate       = String.Empty;
                    var    patient_address = registration.PATIENT_IDENTIFICATION.PATIENT_ADDRESS;
                    if (patient_address != null)
                    {
                        var physicalAddress = registration.PATIENT_IDENTIFICATION.PATIENT_ADDRESS.PHYSICAL_ADDRESS;
                        if (physicalAddress != null)
                        {
                            village         = registration.PATIENT_IDENTIFICATION.PATIENT_ADDRESS.PHYSICAL_ADDRESS.VILLAGE;
                            ward            = registration.PATIENT_IDENTIFICATION.PATIENT_ADDRESS.PHYSICAL_ADDRESS.WARD;
                            sub_county      = registration.PATIENT_IDENTIFICATION.PATIENT_ADDRESS.PHYSICAL_ADDRESS.SUB_COUNTY;
                            county          = registration.PATIENT_IDENTIFICATION.PATIENT_ADDRESS.PHYSICAL_ADDRESS.COUNTY;
                            nearestLandMark = registration.PATIENT_IDENTIFICATION.PATIENT_ADDRESS.PHYSICAL_ADDRESS.NEAREST_LANDMARK;
                        }
                        postalAdress = registration.PATIENT_IDENTIFICATION.PATIENT_ADDRESS.POSTAL_ADDRESS;
                    }
                    //Lookup Ward, sub_county_county
                    int wardId        = 0;
                    int subCountyId   = 0;
                    int countyId      = 0;
                    var countyDetails = lookupLogic.GetCountyDetailsByWardName(ward);
                    if (countyDetails != null)
                    {
                        wardId      = countyDetails.WardId;
                        subCountyId = countyDetails.SubcountyId;
                        countyId    = countyDetails.CountyId;
                    }
                    //Get Phone Number
                    phoneNumber = registration.PATIENT_IDENTIFICATION.PHONE_NUMBER;
                    deathDate   = registration.PATIENT_IDENTIFICATION.DEATH_DATE;
                    DateTime?DateOfDeath = null;
                    if (!string.IsNullOrWhiteSpace(deathDate))
                    {
                        DateOfDeath = DateTime.ParseExact(deathDate, "yyyyMMdd", null);
                    }
                    //GET NEXT OF KIN
                    var nextOfKin         = registration.NEXT_OF_KIN;
                    var lookupEntryPoints =
                        lookupLogic.GetItemIdByGroupAndDisplayName("Entrypoint",
                                                                   registration.PATIENT_VISIT.PATIENT_SOURCE);
                    if (lookupEntryPoints.Count > 0)
                    {
                        entryPointId = lookupEntryPoints[0].ItemId;
                    }
                    else
                    {
                        entryPointId = lookupLogic.GetItemIdByGroupAndDisplayName("Entrypoint", "Other")[0].ItemId;
                    }

                    DOB = DateTime.ParseExact(registration.PATIENT_IDENTIFICATION.DATE_OF_BIRTH, "yyyyMMdd", null);
                    DateTime enrollmentDate = DateTime.ParseExact(registration.PATIENT_VISIT.HIV_CARE_ENROLLMENT_DATE,
                                                                  "yyyyMMdd", null);
                    int facilityId = Convert.ToInt32(registration.MESSAGE_HEADER.SENDING_FACILITY);

                    if (patient != null)
                    {
                        msg = ProcessPatient.Update(firstName, middleName, lastName, sex, patient.PersonId, patient.Id, patient.ptn_pk, DOB, DOB_Precision, nationalId, facilityId,
                                                    entryPointId, enrollmentDate, cccNumber, patient, godsNumber, maritalStatusId,
                                                    village, wardId, subCountyId, countyId, nearestLandMark, postalAdress, phoneNumber,
                                                    DateOfDeath, nextOfKin, interopUserId);
                    }
                    else
                    {
                        msg = ProcessPatient.Add(firstName, middleName, lastName, sex, interopUserId, DOB, DOB_Precision,
                                                 facilityId, patientType, nationalId, visitType, enrollmentDate, cccNumber, entryPointId,
                                                 godsNumber, maritalStatusId, village, wardId, subCountyId, countyId, nearestLandMark, postalAdress, phoneNumber,
                                                 DateOfDeath, nextOfKin);
                    }
                }
                else
                {
                    throw new Exception("Message without ccc number");
                }

                message.Msg  = msg;
                message.Code = 0;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

            return(new JavaScriptSerializer().Serialize(message));
        }
예제 #6
0
        public string GetPatientEnrollmentDetails()
        {
            try
            {
                EnrollmentDetails enrollmentDetails = new EnrollmentDetails();
                enrollmentDetails.IndentifiersList = new List <Identifier>();
                PersonId = int.Parse(Session["PersonId"].ToString());
                PatientLookupManager     patientLookupManager = new PatientLookupManager();
                PatientEntryPointManager entryPointManager    = new PatientEntryPointManager();
                PatientIdentifierManager identifierManager    = new PatientIdentifierManager();
                IdentifierManager        ideManager           = new IdentifierManager();
                PersonLookUpManager      personLookUp         = new PersonLookUpManager();

                PatientLookup patientList = patientLookupManager.GetPatientByPersonId(PersonId);

                if (patientList != null)
                {
                    enrollmentDetails.DOB          = String.Format("{0:dd-MMM-yyyy}", patientList.DateOfBirth);
                    enrollmentDetails.DobPrecision = patientList.DobPrecision;
                    if (enrollmentDetails.DOB == null)
                    {
                        PersonLookUp person = personLookUp.GetPersonById(PersonId);
                        if (person.DateOfBirth != null)
                        {
                            enrollmentDetails.DOB          = String.Format("{0:dd-MMM-yyyy}", person.DateOfBirth);
                            enrollmentDetails.DobPrecision = person.DobPrecision == null?false:Convert.ToBoolean(person.DobPrecision);
                        }
                    }
                    enrollmentDetails.NationalId     = patientList.NationalId;
                    enrollmentDetails.EnrollmentDate = String.Format("{0:dd-MMM-yyyy}", patientList.EnrollmentDate);

                    var entryPoints   = entryPointManager.GetPatientEntryPoints(patientList.Id);
                    var identifiers   = identifierManager.GetAllPatientEntityIdentifiers(patientList.Id);
                    var dynamicFields = EnrollmentService.ServiceDynamicFields(1);
                    if (entryPoints.Count > 0)
                    {
                        string Name = LookupLogic.GetLookupNameById(entryPoints[0].EntryPointId);
                        if (Name == "Unknown")
                        {
                            enrollmentDetails.EntryPointIdUnknown = true;
                            enrollmentDetails.EntryPointId        = entryPoints[0].EntryPointId;
                        }
                        else
                        {
                            enrollmentDetails.EntryPointIdUnknown = false;
                            enrollmentDetails.EntryPointId        = entryPoints[0].EntryPointId;
                        }
                    }
                    var dynamicObject = new ExpandoObject() as IDictionary <string, Object>;
                    foreach (var field in dynamicFields)
                    {
                        foreach (var itemsEntityIdentifier in identifiers)
                        {
                            if (itemsEntityIdentifier.IdentifierTypeId == field.ID)
                            {
                                var code = field.Code;
                                dynamicObject.Add(code, itemsEntityIdentifier.IdentifierValue);
                            }
                        }
                    }
                    //if (identifiers.Count > 0)
                    //{
                    //    enrollmentDetails.IndentifierId = identifiers[0].IdentifierTypeId;
                    //}

                    foreach (var dynamicItem in dynamicObject)
                    {
                        var key           = dynamicItem.Key;
                        var identifier    = ideManager.GetIdentifierByCode(key);
                        var dynIdentifier = new Identifier();
                        if (identifier.PrefixType != null)
                        {
                            string[] enrollmentParts = dynamicItem.Value.ToString().Split('-');
                            int      parts           = enrollmentParts.Length;
                            if (parts > 1)
                            {
                                dynIdentifier.Code       = key;
                                dynIdentifier.PrefixType = enrollmentParts[0];
                                dynIdentifier.DataType   = enrollmentParts[1];
                                //enrollmentDetails.EnrollmentValue = enrollmentParts[1];
                                //enrollmentDetails.Prefix = enrollmentParts[0];
                                //enrollmentDetails.Suffix = null;
                            }
                            else
                            {
                                dynIdentifier.Code     = key;
                                dynIdentifier.DataType = dynamicItem.Value.ToString();
                                //enrollmentDetails.EnrollmentValue = dynamicItem.Value.ToString();
                            }
                        }
                        else
                        {
                            dynIdentifier.Code     = key;
                            dynIdentifier.DataType = dynamicItem.Value.ToString();
                        }
                        enrollmentDetails.IndentifiersList.Add(dynIdentifier);
                    }

                    //string[] enrollmentParts = patientList[0].EnrollmentNumber.Split('-');
                    //int parts = enrollmentParts.Length;
                    //if (parts > 1)
                    //{
                    //    enrollmentDetails.EnrollmentValue = enrollmentParts[1];
                    //    enrollmentDetails.Prefix = enrollmentParts[0];
                    //    enrollmentDetails.Suffix = null;
                    //}
                    //else
                    //{
                    //    enrollmentDetails.EnrollmentValue = patientList[0].EnrollmentNumber;
                    //}
                }
                else
                {
                    PersonLookUp person = personLookUp.GetPersonById(PersonId);
                    if (person.DateOfBirth != null)
                    {
                        enrollmentDetails.DOB          = String.Format("{0:dd-MMM-yyyy}", person.DateOfBirth);
                        enrollmentDetails.DobPrecision = person.DobPrecision == null ? false : Convert.ToBoolean(person.DobPrecision);
                    }
                }

                return(new JavaScriptSerializer().Serialize(enrollmentDetails));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
예제 #7
0
        public string AddPatient(int facilityId, int entryPointId, string enrollmentDate, string personDateOfBirth, string nationalId, int patientType, string dobPrecision, string identifiersList)
        {
            ExMessage message = new ExMessage();

            try
            {
                PersonId = int.Parse(Session["PersonId"].ToString());
                int userId = Convert.ToInt32(Session["AppUserId"]);

                var patientManager             = new PatientManager();
                var patientMasterVisitManager  = new PatientMasterVisitManager();
                var patientEnrollmentManager   = new PatientEnrollmentManager();
                var patientIdentifierManager   = new PatientIdentifierManager();
                var patientEntryPointManager   = new PatientEntryPointManager();
                var patientLookUpManager       = new PatientLookupManager();
                var mstPatientLogic            = new MstPatientLogic();
                var personContactLookUpManager = new PersonContactLookUpManager();
                var personContacts             = new List <PersonContactLookUp>();
                var personLookUp = new PersonLookUpManager();
                var lookupLogic  = new LookupLogic();

                //var identifiersObjects = JsonConvert.DeserializeObject<Dictionary<int, string>>(identifiersList);
                var           identifiersObjects = new JavaScriptSerializer().Deserialize <Dictionary <string, string> >(identifiersList);
                String        sDate            = DateTime.Now.ToString();
                DateTime      datevalue        = Convert.ToDateTime(sDate);
                PatientLookup isPersonEnrolled = patientLookUpManager.GetPatientByPersonId(PersonId);
                dobPrecision = String.IsNullOrWhiteSpace(dobPrecision) ? "false" : "true";

                foreach (var item in identifiersObjects)
                {
                    var identifiers = patientIdentifierManager.CheckIfIdentifierNumberIsUsed(item.Value, Convert.ToInt32(item.Key));
                    if (identifiers.Count > 0)
                    {
                        foreach (var items in identifiers)
                        {
                            if (isPersonEnrolled != null)
                            {
                                if (items.PatientId == isPersonEnrolled.Id)
                                {
                                }
                                else
                                {
                                    var exception = new SoapException("No: " + item.Value + " already exists", SoapException.ClientFaultCode);
                                    throw exception;
                                }
                            }
                            else
                            {
                                var exception = new SoapException("No: " + item.Value + " already exists", SoapException.ClientFaultCode);
                                throw exception;
                            }
                        }
                    }
                }

                if (isPersonEnrolled != null)
                {
                    List <PatientRegistrationLookup> patientsByPersonId = patientManager.GetPatientIdByPersonId(PersonId);
                    var           patientIndex = datevalue.Year.ToString() + '-' + PersonId;
                    PatientEntity patient      = new PatientEntity();
                    if (patientsByPersonId.Count > 0)
                    {
                        patient.FacilityId  = facilityId;
                        patient.DateOfBirth = DateTime.Parse(personDateOfBirth);
                        patient.NationalId  = nationalId;
                        patient.ptn_pk      = patientsByPersonId[0].ptn_pk > 0 ? patientsByPersonId[0].ptn_pk : 0;

                        patientManager.UpdatePatient(patient, patientsByPersonId[0].Id);
                        patientId = patientsByPersonId[0].Id;
                    }
                    else
                    {
                        patient.PersonId     = PersonId;
                        patient.ptn_pk       = 0;
                        patient.FacilityId   = facilityId;
                        patient.PatientType  = patientType;
                        patient.PatientIndex = patientIndex;
                        patient.DateOfBirth  = DateTime.Parse(personDateOfBirth);
                        patient.NationalId   = (nationalId);
                        patient.Active       = true;
                        patient.CreatedBy    = userId;
                        patient.CreateDate   = DateTime.Now;
                        patient.DeleteFlag   = false;
                        patient.DobPrecision = bool.Parse(dobPrecision);

                        patientId = patientManager.AddPatient(patient);
                    }
                    Session["PatientPK"] = patientId;

                    if (patientId > 0)
                    {
                        var visitTypes = lookupLogic.GetItemIdByGroupAndItemName("VisitType", "Enrollment");
                        var visitType  = 0;
                        if (visitTypes.Count > 0)
                        {
                            visitType = visitTypes[0].ItemId;
                        }

                        //Add enrollment visit
                        patientMasterVisitId =
                            patientMasterVisitManager.AddPatientMasterVisit(patientId, userId, visitType);
                        //Enroll Patient to service
                        patientEnrollmentId = patientEnrollmentManager.addPatientEnrollment(patientId, enrollmentDate, userId);
                        //Add enrollment entry point
                        patientEntryPointId = patientEntryPointManager.addPatientEntryPoint(patientId, entryPointId, userId);

                        //Get User Details to be used in BLUE CARD
                        var patient_person_details = personLookUp.GetPersonById(PersonId);
                        var greencardlookup        = new PersonGreenCardLookupManager();
                        var greencardptnpk         = greencardlookup.GetPtnPkByPersonId(PersonId);

                        if (patient_person_details != null)
                        {
                            var maritalStatus =
                                new PersonMaritalStatusManager().GetCurrentPatientMaritalStatus(PersonId);
                            personContacts = personContactLookUpManager.GetPersonContactByPersonId(PersonId);
                            var address  = "";
                            var phone    = "";
                            var facility = lookupLogic.GetFacility();

                            if (personContacts.Count > 0)
                            {
                                address = personContacts[0].PhysicalAddress;
                                phone   = personContacts[0].MobileNumber;
                            }

                            var MaritalStatusId = 0;
                            if (maritalStatus != null)
                            {
                                MaritalStatusId = maritalStatus.MaritalStatusId;
                            }

                            var sex = 0;
                            var enrollmentBlueCardId = "";

                            if (LookupLogic.GetLookupNameById(patient_person_details.Sex) == "Male")
                            {
                                sex = 16;
                            }
                            else if (LookupLogic.GetLookupNameById(patient_person_details.Sex) == "Female")
                            {
                                sex = 17;
                            }

                            foreach (var item in identifiersObjects)
                            {
                                if (Convert.ToInt32(item.Key) == 1)
                                {
                                    enrollmentBlueCardId = item.Value;
                                }
                            }


                            if (greencardptnpk.Count == 0)
                            {
                                ptn_Pk = mstPatientLogic.InsertMstPatient(
                                    (patient_person_details.FirstName),
                                    (patient_person_details.LastName),
                                    (patient_person_details.MiddleName),
                                    facility.FacilityID, enrollmentBlueCardId, entryPointId,
                                    DateTime.Parse(enrollmentDate), sex,
                                    DateTime.Parse(personDateOfBirth),
                                    1, MaritalStatusId,
                                    address, phone, userId, Session["AppPosID"].ToString(),
                                    203, DateTime.Parse(enrollmentDate), DateTime.Now);

                                patient.ptn_pk = ptn_Pk;
                                patientManager.UpdatePatient(patient, patientId);
                            }
                            else
                            {
                                ptn_Pk         = greencardptnpk[0].Ptn_Pk;
                                patient.ptn_pk = greencardptnpk[0].Ptn_Pk;
                                patientManager.UpdatePatient(patient, patientId);
                            }
                        }

                        Session["PatientMasterVisitId"] = patientMasterVisitId;

                        if (patientMasterVisitId > 0)
                        {
                            foreach (var item in identifiersObjects)
                            {
                                patientIdentifierId = patientIdentifierManager.addPatientIdentifier(patientId,
                                                                                                    patientEnrollmentId, Convert.ToInt32(item.Key), item.Value, facilityId);

                                var identifierManager = new IdentifierManager();
                                var identifierList    = identifierManager.GetIdentifiersById(Convert.ToInt32(item.Key));
                                var hivtesting        = _hivTestingManager.GetAll().OrderByDescending(y => y.Id).FirstOrDefault(n => n.PersonId == PersonId);
                                if (identifierList.Count > 0)
                                {
                                    if (identifierList[0].Code == "CCCNumber")
                                    {
                                        if (hivtesting != null)
                                        {
                                            hivtesting.ReferredToCare = true;
                                            _hivTestingManager.UpdatePatientHivTesting(hivtesting);

                                            PatientLinkage patLinkage = new PatientLinkage();
                                            patLinkage.LinkageDate = DateTime.Parse(enrollmentDate);
                                            patLinkage.CCCNumber   = item.Value;
                                            patLinkage.PersonId    = PersonId;
                                            patLinkage.CreatedBy   = userId;
                                            patLinkage.Enrolled    = true;
                                            patLinkage.PatientId   = patientId;

                                            linkageManager.AddPatientLinkage(patLinkage);
                                        }
                                    }
                                }
                            }

                            if (greencardptnpk.Count == 0)
                            {
                                mstPatientLogic.AddOrdVisit(ptn_Pk, facilityId, DateTime.Now, 110,
                                                            userId, DateTime.Now, 203);
                            }


                            message.errorcode = 0;
                            message.msg      += "<p>Successfully enrolled patient.</p>";
                        }
                    }
                }
                else
                {
                    var                  patientLookManager = new PatientLookupManager();
                    PatientLookup        patient            = patientLookManager.GetPatientByPersonId(PersonId);
                    List <PatientLookup> pk = new List <PatientLookup>();
                    pk.Add(patient);
                    if (patient != null)
                    {
                        Session["PatientPK"] = patient.Id;

                        List <PatientEntity> listPatient = new List <PatientEntity>();
                        var entity = pk.ConvertAll(x => new PatientEntity {
                            Id         = x.Id, Active = x.Active, DateOfBirth = x.DateOfBirth,
                            ptn_pk     = x.ptn_pk, PatientType = x.PatientType, PatientIndex = x.PatientIndex, NationalId = x.NationalId,
                            FacilityId = x.FacilityId
                        });

                        var patientAuditData = AuditDataUtility.Serializer(entity);

                        PatientEntity updatePatient = new PatientEntity();
                        updatePatient.ptn_pk      = patient.ptn_pk;
                        updatePatient.DateOfBirth = patient.DateOfBirth;
                        updatePatient.NationalId  = nationalId;
                        updatePatient.FacilityId  = patient.FacilityId;


                        //listPatient.Add(entity);
                        updatePatient.AuditData = patientAuditData;
                        //var enrollmentAuditData = AuditDataUtility.Serializer(patient);

                        patientManager.UpdatePatient(updatePatient, patient.Id);

                        int patientMasterVisitId = patientMasterVisitManager.PatientMasterVisitCheckin(patient.Id, userId);
                        Session["PatientMasterVisitId"] = patientMasterVisitId;

                        List <PatientEntryPoint> entryPoints = patientEntryPointManager.GetPatientEntryPoints(patient.Id);

                        if (entryPoints.Count > 0)
                        {
                            var entryPointAuditData = AuditDataUtility.Serializer(entryPoints);

                            entryPoints[0].EntryPointId = entryPointId;
                            entryPoints[0].AuditData    = entryPointAuditData;

                            patientEntryPointManager.UpdatePatientEntryPoint(entryPoints[0]);
                        }
                        foreach (var item in identifiersObjects)
                        {
                            var identifiersByPatientId = patientIdentifierManager
                                                         .GetPatientEntityIdentifiersByPatientId(patient.Id, Convert.ToInt32(item.Key));

                            if (identifiersByPatientId.Count > 0)
                            {
                                foreach (var entityIdentifier in identifiersByPatientId)
                                {
                                    int enrollmentId = entityIdentifier.PatientEnrollmentId;

                                    PatientEntityEnrollment entityEnrollment =
                                        patientEnrollmentManager.GetPatientEntityEnrollment(enrollmentId);
                                    List <PatientEntityEnrollment> listEnrollment = new List <PatientEntityEnrollment>();
                                    listEnrollment.Add(entityEnrollment);
                                    var enrollmentAuditData = AuditDataUtility.Serializer(listEnrollment);

                                    entityEnrollment.EnrollmentDate = DateTime.Parse(enrollmentDate);
                                    entityEnrollment.AuditData      = enrollmentAuditData;

                                    patientEnrollmentManager.updatePatientEnrollment(entityEnrollment);

                                    var entityIdentifierAuditData = AuditDataUtility.Serializer(identifiersByPatientId);
                                    entityIdentifier.IdentifierValue = item.Value;
                                    entityIdentifier.AuditData       = entityIdentifierAuditData;
                                    patientIdentifierManager.UpdatePatientIdentifier(entityIdentifier, facilityId);
                                }
                            }
                            else
                            {
                                patientEnrollmentId = patientEnrollmentManager.addPatientEnrollment(patient.Id, enrollmentDate, userId);
                                patientEntryPointId = patientEntryPointManager.addPatientEntryPoint(patient.Id, entryPointId, userId);
                                patientIdentifierId = patientIdentifierManager.addPatientIdentifier(patient.Id,
                                                                                                    patientEnrollmentId, Convert.ToInt32(item.Key), item.Value, facilityId);
                            }
                        }
                    }
                }
            }
            catch (SoapException ex)
            {
                message.errorcode = 1;
                message.msg       = ex.Message;
            }

            return(Msg = new JavaScriptSerializer().Serialize(message));
        }