Example #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PatientId            = Convert.ToInt32(HttpContext.Current.Session["PatientPK"]);
            PatientMasterVisitId = Convert.ToInt32(Request.QueryString["visitId"] != null ? Request.QueryString["visitId"] : HttpContext.Current.Session["PatientMasterVisitId"]);

            PatientMasterVisitManager VisitManager            = new PatientMasterVisitManager();
            List <PatientMasterVisit> visitPatientMasterVisit = new List <PatientMasterVisit>();

            visitPatientMasterVisit = VisitManager.GetVisitDateByMasterVisitId(PatientId, PatientMasterVisitId);
            VisitDate = visitPatientMasterVisit[0].VisitDate;
            PatientLookupManager patientLookupManager = new PatientLookupManager();
            var patientDetails = patientLookupManager.GetPatientDetailSummary(PatientId);

            Session["DateOfEnrollment"] = patientDetails.EnrollmentDate;
            serviceAreaId = Convert.ToInt32(LookupLogic.GetLookupItemId("MoH 257 GREENCARD"));

            userId = Convert.ToInt32(Session["AppUserId"]);



            if (Request.QueryString["visitId"] != null)
            {
                Session["ExistingRecordPatientMasterVisitID"] = Request.QueryString["visitId"].ToString();
                PatientEncounterExists = Convert.ToInt32(Request.QueryString["visitId"].ToString());
            }
            PmVisitId = Convert.ToInt32(Session["ExistingRecordPatientMasterVisitID"].ToString() == "0" ? Session["PatientMasterVisitID"].ToString() : Session["ExistingRecordPatientMasterVisitID"].ToString());
        }
        public AppointmentStatistics GetAppointmentStatistics(DateTime date)
        {
            AppointmentStatistics statistics = new AppointmentStatistics();

            try
            {
                var appointment = new PatientAppointmentManager();
                var masterVisit = new PatientMasterVisitManager();

                /* JN - Hit the database once
                 * statistics.TotalAppointments = appointment.GetByDate(date).Count;
                 * statistics.MetAppointments = appointment.GetByDate(date).Count(n => n.StatusId==1241);
                 * statistics.MissedAppointments = appointment.GetByDate(date).Count(n => n.StatusId == 1240);
                 * statistics.WalkIns = masterVisit.GetByDate(date).Count(n => n.VisitScheduled == 0); ;
                 */
                var apps = appointment.GetAppointmentSummaryByDate(date).FirstOrDefault();
                statistics.TotalAppointments  = 0;
                statistics.MetAppointments    = 0;
                statistics.MissedAppointments = 0;
                if (apps != null)
                {
                    statistics.TotalAppointments  = apps.Total;
                    statistics.MetAppointments    = apps.Met;
                    statistics.MissedAppointments = apps.Missed + apps.PreviouslyMissed;
                }
                statistics.WalkIns = masterVisit.GetByDate(date).Count(n => n.VisitScheduled == 0);
            }
            catch (Exception e)
            {
                Msg = e.Message;
            }

            return(statistics);
        }
Example #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PatientId            = Convert.ToInt32(HttpContext.Current.Session["PatientPK"]);
            PatientMasterVisitId = Convert.ToInt32(Request.QueryString["visitId"] != null ? Request.QueryString["visitId"] : HttpContext.Current.Session["PatientMasterVisitId"]);
            userId    = Convert.ToInt32(Session["AppUserId"]);
            PmVisitId = Convert.ToInt32(Session["ExistingRecordPatientMasterVisitID"].ToString() == "0" ? Session["PatientMasterVisitID"].ToString() : Session["ExistingRecordPatientMasterVisitID"].ToString());

            PatientMasterVisitManager VisitManager            = new PatientMasterVisitManager();
            List <PatientMasterVisit> visitPatientMasterVisit = new List <PatientMasterVisit>();

            visitPatientMasterVisit = VisitManager.GetVisitDateByMasterVisitId(PatientId, PatientMasterVisitId);
            VisitDate = visitPatientMasterVisit[0].VisitDate;
            PatientLookupManager patientLookupManager = new PatientLookupManager();
            var patientDetails = patientLookupManager.GetPatientDetailSummary(PatientId);

            Session["DateOfEnrollment"] = patientDetails.EnrollmentDate;
            serviceAreaId = Convert.ToInt32(LookupLogic.GetLookupItemId("MoH 257 GREENCARD"));

            if (!IsPostBack)
            {
                //Alcohol Frequency
                getScreeningCTRLs();
                //Alcohol Screening
                getScoreCTRLs();
                //crafft Notes
                getNotesCTRLs();
                //All Data
                getSCRAFFTData(PatientId);
            }
        }
Example #4
0
        public int PatientCheckin()
        {
            int result = 0;

            try
            {
                int patientId = Convert.ToInt32(Session["PatientPK"]);
                int userId    = Convert.ToInt32(Session["AppUserId"]);
                PatientMasterVisitManager patientMasterVisit = new PatientMasterVisitManager();
                LookupLogic lookupLogic     = new LookupLogic();
                var         currentfacility = lookupLogic.GetFacility(Session["AppPosID"].ToString());
                if (currentfacility == null)
                {
                    currentfacility = lookupLogic.GetFacility();
                }
                result = patientMasterVisit.PatientMasterVisitCheckin(patientId, userId, currentfacility.FacilityID);

                /* Assign to patientMsterVisitId session*/
                Session["EncounterStatusId"]    = 1;
                Session["PatientMasterVisitId"] = result;
                Session["PatientEditId"]        = patientId;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            return(result);
        }
Example #5
0
 public string GetVisitById(int visitId)
 {
     try
     {
         PatientMasterVisitManager patientMasterVisitManager = new PatientMasterVisitManager();
         _jsonMessage = new JavaScriptSerializer().Serialize(patientMasterVisitManager.GetVisitById(visitId));
     }
     catch (Exception e)
     {
         _jsonMessage = e.Message;
     }
     return(_jsonMessage);
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            ILookupManager mgr = (ILookupManager)ObjectFactory.CreateInstance("BusinessProcess.CCC.BLookupManager, BusinessProcess.CCC");

            GetSessionDetails();
            userId = Convert.ToInt32(Session["AppUserId"]);

            PatientMasterVisitManager VisitManager            = new PatientMasterVisitManager();
            List <PatientMasterVisit> visitPatientMasterVisit = new List <PatientMasterVisit>();

            visitPatientMasterVisit = VisitManager.GetVisitDateByMasterVisitId(PatientId, PatientMasterVisitId);
            VisitDate = visitPatientMasterVisit[0].VisitDate;
            pregnancySection.Visible = Gender != "Male";
            List <LookupItemView> areas           = mgr.GetLookItemByGroup("PregnancyStatus");
            List <LookupItemView> artRefillModels = mgr.GetLookItemByGroup("ARTRefillModel");

            serviceAreaId = 203;

            if (areas != null && areas.Count > 0)
            {
                pregnancyStatus.Items.Add(new ListItem("select", "0"));
                foreach (var k in areas)
                {
                    pregnancyStatus.Items.Add(new ListItem(k.ItemDisplayName, k.ItemId.ToString()));
                }
            }

            if (artRefillModels != null && artRefillModels.Count > 0)
            {
                ArtRefill.Items.Add(new ListItem("select", ""));
                foreach (var item in artRefillModels)
                {
                    ArtRefill.Items.Add(new ListItem(item.ItemDisplayName, item.ItemId.ToString()));
                }
            }


            PatientArtDistributionManager artDistributionManager = new PatientArtDistributionManager();
            PatientArtDistribution        artDistribution        = artDistributionManager.GetPatientArtDistributionByPatientIdAndVisitId(PatientId, PatientMasterVisitId);

            if (artDistribution != null)
            {
                IsPatientArtDistributionDone = 1;
            }
        }
        public int PatientCheckout(int id, int visitSchedule, int visitBy, int visitType, DateTime visitDate)
        {
            int result = 0;

            try
            {
                int patientId = Convert.ToInt32(Session["PatientPK"]);
                int visitId   = Convert.ToInt32(Session["patientMasterVisitId"]);
                PatientMasterVisitManager patientMasterVisit = new PatientMasterVisitManager();
                result = patientMasterVisit.PatientMasterVisitCheckout(visitId, patientId, visitSchedule, visitBy, visitType, visitDate);
                Session["EncounterStatusId"] = 0;
                Session["PatientEditId"]     = 0;
                Session["PatientPK"]         = 0;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

            return(result);
        }
        public int PatientCheckin()
        {
            int result = 0;

            try
            {
                int patientId = Convert.ToInt32(Session["PatientPK"]);
                int userId    = Convert.ToInt32(Session["AppUserId"]);
                PatientMasterVisitManager patientMasterVisit = new PatientMasterVisitManager();
                result = patientMasterVisit.PatientMasterVisitCheckin(patientId, userId);

                /* Assign to patientMsterVisitId session*/
                Session["EncounterStatusId"]    = 1;
                Session["PatientMasterVisitId"] = result;
                Session["PatientEditId"]        = patientId;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            return(result);
        }
Example #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PatientId            = Convert.ToInt32(HttpContext.Current.Session["PatientPK"]);
            PatientMasterVisitId = Convert.ToInt32(Request.QueryString["visitId"] != null ? Request.QueryString["visitId"] : HttpContext.Current.Session["PatientMasterVisitId"]);
            userId = Convert.ToInt32(Session["AppUserId"]);
            PatientMasterVisitManager VisitManager            = new PatientMasterVisitManager();
            List <PatientMasterVisit> visitPatientMasterVisit = new List <PatientMasterVisit>();

            visitPatientMasterVisit = VisitManager.GetVisitDateByMasterVisitId(PatientId, PatientMasterVisitId);
            VisitDate = visitPatientMasterVisit[0].VisitDate;
            PatientLookupManager patientLookupManager = new PatientLookupManager();
            var patientDetails = patientLookupManager.GetPatientDetailSummary(PatientId);

            Session["DateOfEnrollment"] = patientDetails.EnrollmentDate;

            if (!IsPostBack)
            {
                populateQuestions();
                getCaseSummaries(PatientId, PatientMasterVisitId);
                // getVitals(PatientId);
            }
        }
        public string GetPatientMasterVisitId(int PatientId, DateTime visitDate, string EncounterType, int ServiceAreaId, int UserId)
        {
            PatientMasterVisitManager pmvManager       = new PatientMasterVisitManager();
            List <PatientMasterVisit> pmv              = new List <PatientMasterVisit>();
            PatientEncounterLogic     patientEncounter = new PatientEncounterLogic();
            OutCome ResultOutcome = new OutCome();

            pmv = pmvManager.GetPatientMasterVisitBasedonVisitDate(PatientId, visitDate);
            if (pmv != null)
            {
                if (pmv.Count > 0)
                {
                    MasterVisitId = pmv[0].Id;
                }
            }


            if (MasterVisitId > 0)
            {
                Result = patientEncounter.SavePatientPreviousEncounter(PatientId, MasterVisitId, EncounterType, ServiceAreaId, Convert.ToInt32(Session["AppUserId"]), visitDate);
                if (Result > 0)
                {
                    ResultOutcome.Result = MasterVisitId;
                    ResultOutcome.Msg    = EncounterType + " Encounter Saved";
                }
            }
            else
            {
                var lookupLogic = new LookupLogic();
                var facility    = lookupLogic.GetFacility(Session["AppPosID"].ToString());
                if (facility == null)
                {
                    facility = lookupLogic.GetFacility();
                }

                PatientMasterVisit pm = new PatientMasterVisit();
                pm.ServiceId  = 1;
                pm.VisitDate  = visitDate;
                pm.VisitBy    = UserId;
                pm.Start      = visitDate;
                pm.End        = visitDate;
                pm.PatientId  = PatientId;
                pm.CreatedBy  = UserId;
                pm.Active     = true;
                pm.Status     = 2;
                pm.FacilityId = facility.FacilityID;

                int PatientMasterVisitId = pmvManager.AddPatientMasterVisit(pm);

                int res = patientEncounter.SavePatientPreviousEncounter(PatientId, PatientMasterVisitId, EncounterType, ServiceAreaId, Convert.ToInt32(Session["AppUserId"]), visitDate);
                if (res > 0)
                {
                    Result = PatientMasterVisitId;
                    ResultOutcome.Result = Result;
                    ResultOutcome.Msg    = EncounterType + "Encounter Saved";
                }
            }
            string jsonScreeningObject = "[]";

            jsonScreeningObject = new JavaScriptSerializer().Serialize(ResultOutcome);
            return(jsonScreeningObject);
        }
Example #11
0
        public static ObservationResultDTO GetWHOStage(int entityId)
        {
            try
            {
                ObservationResultDTO   observationResult = new ObservationResultDTO();
                PatientWhoStageManager whoStageManager   = new PatientWhoStageManager();
                var whoStage = whoStageManager.GetWhoStageById(entityId);

                if (whoStage != null)
                {
                    LookupLogic lookupLogic = new LookupLogic();
                    PatientMasterVisitManager visitManager            = new PatientMasterVisitManager();
                    PersonIdentifierManager   personIdentifierManager = new PersonIdentifierManager();
                    IdentifierManager         identifierManager       = new IdentifierManager();
                    Identifier            identifier            = identifierManager.GetIdentifierByCode("GODS_NUMBER");
                    PatientMessageManager patientMessageManager = new PatientMessageManager();
                    PatientMessage        patientMessage        = patientMessageManager.GetPatientMessageByEntityId(whoStage.PatientId);
                    PatientMasterVisit    visit = visitManager.GetVisitById(whoStage.PatientMasterVisitId);

                    List <PersonIdentifier> personIdentifiers = personIdentifierManager.GetPersonIdentifiers(patientMessage.Id, identifier.Id);
                    string whoStageString = lookupLogic.GetLookupItemNameByMasterNameItemId(whoStage.WHOStage, "WHOStage");

                    //Initialize default values
                    observationResult.PATIENT_IDENTIFICATION = observationResult.PATIENT_IDENTIFICATION == null ? new OBSERVATIONPATIENTIDENTIFICATION() : observationResult.PATIENT_IDENTIFICATION;
                    observationResult.PATIENT_IDENTIFICATION.INTERNAL_PATIENT_ID = observationResult.PATIENT_IDENTIFICATION.INTERNAL_PATIENT_ID == null ? new List <INTERNALPATIENTID>() : observationResult.PATIENT_IDENTIFICATION.INTERNAL_PATIENT_ID;
                    observationResult.PATIENT_IDENTIFICATION.EXTERNAL_PATIENT_ID = observationResult.PATIENT_IDENTIFICATION.EXTERNAL_PATIENT_ID == null ? new EXTERNALPATIENTID() : observationResult.PATIENT_IDENTIFICATION.EXTERNAL_PATIENT_ID;
                    observationResult.PATIENT_IDENTIFICATION.PATIENT_NAME        = observationResult.PATIENT_IDENTIFICATION.PATIENT_NAME == null ? new PATIENTNAME() : observationResult.PATIENT_IDENTIFICATION.PATIENT_NAME;
                    observationResult.OBSERVATION_RESULT = observationResult.OBSERVATION_RESULT == null ? new List <OBSERVATION_RESULT>() : observationResult.OBSERVATION_RESULT;

                    //External Patient Id
                    observationResult.PATIENT_IDENTIFICATION.EXTERNAL_PATIENT_ID = PatientIdentificationSegment.GetExternalPatientId(personIdentifiers);

                    //CCC Number
                    INTERNALPATIENTID internalPatientId = PatientIdentificationSegment.getInternalPatientIdCCC(patientMessage);
                    observationResult.PATIENT_IDENTIFICATION.INTERNAL_PATIENT_ID.Add(internalPatientId);

                    //National ID
                    INTERNALPATIENTID internalNationalId = PatientIdentificationSegment.getInternalPatientIdNationalId(patientMessage);
                    if (internalNationalId != null)
                    {
                        observationResult.PATIENT_IDENTIFICATION.INTERNAL_PATIENT_ID.Add(internalNationalId);
                    }

                    //Patient Names
                    observationResult.PATIENT_IDENTIFICATION.PATIENT_NAME = PatientIdentificationSegment.GetPatientName(patientMessage);

                    //set visitdate value
                    DateTime visitDate       = visit.VisitDate.HasValue ? visit.VisitDate.Value : DateTime.Now;
                    string   observationDate = visitDate.ToString("yyyyMMddHmmss", CultureInfo.InvariantCulture);

                    string observationValue = String.Empty;
                    switch (whoStageString)
                    {
                    case "Stage1":
                        observationValue = "1";
                        break;

                    case "Stage2":
                        observationValue = "2";
                        break;

                    case "Stage3":
                        observationValue = "3";
                        break;

                    case "Stage4":
                        observationValue = "4";
                        break;
                    }
                    //WHO STAGE
                    OBSERVATION_RESULT observation = new OBSERVATION_RESULT()
                    {
                        OBSERVATION_IDENTIFIER = "WHO_STAGE",
                        OBSERVATION_SUB_ID     = "",
                        CODING_SYSTEM          = "WHO",
                        VALUE_TYPE             = "NM",
                        OBSERVATION_VALUE      = observationValue,
                        UNITS = "",
                        OBSERVATION_RESULT_STATUS = "F",
                        OBSERVATION_DATETIME      = observationDate,
                        ABNORMAL_FLAGS            = "N"
                    };

                    observationResult.OBSERVATION_RESULT.Add(observation);
                }

                return(observationResult);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Example #12
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));
        }
Example #13
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);
            }
        }
        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));
            }
        }
Example #15
0
        public static string Update(PatientAppointSchedulingDTO appointmentScheduling)
        {
            try
            {
                //todo: fetch assigning facility from the message
                string assigning_Facility               = "";
                PatientAppointmentManager manager       = new PatientAppointmentManager();
                PatientLookupManager      patientLookup = new PatientLookupManager();
                LookupLogic lookupLogic = new LookupLogic();
                PatientMasterVisitManager masterVisitManager = new PatientMasterVisitManager();
                var           personIdentifierManager        = new PersonIdentifierManager();
                var           interopPlacerValuesManager     = new InteropPlacerValuesManager();
                PatientLookup patient           = new PatientLookup();
                string        cccNumber         = String.Empty;
                string        appointmentReason = String.Empty;
                string        appointmentStatus = String.Empty;
                string        appointmentType   = String.Empty;
                int           interopUserId     = InteropUser.UserId;

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

                if (!String.IsNullOrWhiteSpace(cccNumber))
                {
                    patient = patientLookup.GetPatientByCccNumber(cccNumber);
                    if (patient != null)
                    {
                        if (!string.IsNullOrWhiteSpace(godsNumber))
                        {
                            IdentifierManager identifierManager = new IdentifierManager();
                            Identifier        identifier        = identifierManager.GetIdentifierByCode("GODS_NUMBER");
                            var personIdentifiers = personIdentifierManager.GetPersonIdentifiers(patient.PersonId, identifier.Id);
                            if (personIdentifiers.Count == 0)
                            {
                                personIdentifierManager.AddPersonIdentifier(patient.PersonId, identifier.Id, godsNumber, interopUserId, assigning_Facility);
                            }
                        }

                        int patientMasterVisitId = masterVisitManager.GetLastPatientVisit(patient.Id).Id;
                        int serviceAreaId        = lookupLogic.GetItemIdByGroupAndItemName("ServiceArea", "MoH 257 GREENCARD")[0].ItemId;


                        foreach (var appointment in appointmentScheduling.APPOINTMENT_INFORMATION)
                        {
                            switch (appointment.APPOINTMENT_REASON)
                            {
                            case "PHARMACY_REFILL":
                                appointmentReason = "Pharmacy Refill";
                                break;

                            case "TREATMENT_PREP":
                                appointmentReason = "Treatment Preparation";
                                break;

                            case "LAB_TEST":
                                appointmentReason = "Lab Tests";
                                break;

                            case "FOLLOWUP":
                                appointmentReason = "Follow Up";
                                break;

                            default:
                                appointmentReason = "Follow Up";
                                break;
                            }

                            switch (appointment.APPOINTMENT_STATUS)
                            {
                            case "HONORED":
                                appointmentStatus = "Met";
                                break;

                            case "MISSED":
                                appointmentStatus = "Missed";
                                break;

                            case "PENDING":
                                appointmentStatus = "Pending";
                                break;

                            case "CANCELLED":
                                appointmentStatus = "CareEnded";
                                break;

                            default:
                                appointmentStatus = "Pending";
                                break;
                            }

                            switch (appointment.APPOINTMENT_TYPE)
                            {
                            case "CLINICAL":
                                appointmentType = "Standard Care";
                                break;

                            case "PHARMACY":
                                appointmentType = "Express Care";
                                break;

                            case "INVESTIGATION":
                                appointmentType = "Express Care";
                                break;

                            default:
                                appointmentType = "Standard Care";
                                break;
                            }
                            var reasons  = lookupLogic.GetItemIdByGroupAndItemName("AppointmentReason", appointmentReason);
                            int reasonId = 0;
                            if (reasons == null || reasons.Count > 0)
                            {
                                throw new Exception($"No matching reasons in the databases {appointmentReason}");
                            }
                            reasonId = reasons[0].ItemId;
                            int statusId = 0;
                            var status   = lookupLogic.GetItemIdByGroupAndItemName("AppointmentStatus", appointmentStatus);
                            if (status == null || status.Count > 0)
                            {
                                throw new Exception($"No matching appointmentstatus in the databases {appointmentStatus}");
                            }
                            statusId = status[0].ItemId;

                            int differentiatedCareId = 0;
                            var diffCare             = lookupLogic.GetItemIdByGroupAndItemName("DifferentiatedCare", appointmentType);
                            if (diffCare == null || diffCare.Count > 0)
                            {
                                throw new Exception($"No matching differentiated care option in the databases {appointmentType}");
                            }
                            differentiatedCareId = diffCare[0].ItemId;

                            InteropPlacerTypeManager interopPlacerTypeManager = new InteropPlacerTypeManager();
                            int interopPlacerTypeId = interopPlacerTypeManager.GetInteropPlacerTypeByName(appointment.PLACER_APPOINTMENT_NUMBER.ENTITY).Id;

                            var interopPlacerValues = interopPlacerValuesManager.GetInteropPlacerValues(interopPlacerTypeId, 3, Convert.ToInt32(appointment.PLACER_APPOINTMENT_NUMBER.NUMBER));
                            if (interopPlacerValues != null)
                            {
                                PatientAppointment patientAppointment = manager.GetPatientAppointment(interopPlacerValues.EntityId);
                                patientAppointment.AppointmentDate      = DateTime.ParseExact(appointment.APPOINTMENT_DATE, "yyyyMMdd", null);
                                patientAppointment.Description          = appointment.APPOINTMENT_NOTE;
                                patientAppointment.DifferentiatedCareId = differentiatedCareId;
                                patientAppointment.ReasonId             = reasonId;
                                patientAppointment.ServiceAreaId        = serviceAreaId;
                                patientAppointment.StatusId             = statusId;
                                manager.UpdatePatientAppointments(patientAppointment);
                            }
                            else
                            {
                                PatientAppointment patientAppointment = new PatientAppointment()
                                {
                                    PatientId            = patient.Id,
                                    PatientMasterVisitId = patientMasterVisitId,
                                    AppointmentDate      = DateTime.ParseExact(appointment.APPOINTMENT_DATE, "yyyyMMdd", null),
                                    Description          = appointment.APPOINTMENT_NOTE,
                                    DifferentiatedCareId = differentiatedCareId,
                                    ReasonId             = reasonId,
                                    ServiceAreaId        = serviceAreaId,
                                    StatusId             = statusId,
                                    CreatedBy            = interopUserId,
                                    CreateDate           = DateTime.Now
                                };

                                int appointmentId = manager.AddPatientAppointments(patientAppointment);
                                InteropPlacerValues placerValues = new InteropPlacerValues()
                                {
                                    IdentifierType      = 3,
                                    EntityId            = appointmentId,
                                    InteropPlacerTypeId = interopPlacerTypeId,
                                    PlacerValue         = Convert.ToInt32(appointment.PLACER_APPOINTMENT_NUMBER.NUMBER)
                                };
                                interopPlacerValuesManager.AddInteropPlacerValue(placerValues);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

            return(String.Empty);
        }
Example #16
0
        //int _userId = Convert.ToInt32(HttpContext.Current.Session["AppUserId"]);
        //int _facilityId = Convert.ToInt32(HttpContext.Current.Session["AppLocationId"]);
        public string Save(ViralLoadResultsDto viralLoadResults)
        {
            LabOrderEntity          labOrder   = null;
            List <LabDetailsEntity> labDetails = null;
            var results = viralLoadResults.ViralLoadResult;

            if (results != null)
            {
                try
                {
                    var            patientLookup            = new PatientLookupManager();
                    var            labOrderManager          = new PatientLabOrderManager();
                    var            patientCcc               = viralLoadResults.PatientIdentification.INTERNAL_PATIENT_ID.FirstOrDefault(n => n.IdentifierType == "CCC_NUMBER").IdentifierValue;
                    var            patient                  = patientLookup.GetPatientByCccNumber(patientCcc);
                    string         receivingFacilityMFLCode = viralLoadResults.MesssageHeader.ReceivingFacility;
                    LookupLogic    flm           = new LookupLogic();
                    LookupFacility thisFacility  = flm.GetFacility(receivingFacilityMFLCode);
                    int            interopUserId = InteropUser.UserId;
                    if (thisFacility == null)
                    {
                        Msg = $"The facility {receivingFacilityMFLCode} does not exist";
                        throw new Exception(Msg);
                    }
                    if (patient == null)
                    {
                        Msg = $"Patient {patientCcc} does not exist ";
                        throw new Exception(Msg);
                    }
                    if (results.Count(r => string.IsNullOrWhiteSpace(r.VlResult.Trim())) > 0)
                    {
                        Msg = $"Viral load message has no results indicated ";
                        throw new Exception(Msg);
                    }
                    int invalidResult = 0;
                    foreach (var result in results)
                    {
                        if (result.VlResult.Contains("LDL"))
                        {
                        }
                        else if (Regex.Split(result.VlResult, @"[^0-9\.]+").Length > 0)
                        {
                        }
                        else
                        {
                            invalidResult++;
                        }
                    }

                    if (invalidResult > 0)
                    {
                        Msg = $"Viral load message has invalid results indicated ";
                        throw new Exception(Msg);
                    }
                    if (patient != null && thisFacility != null)
                    {
                        //todo brian check
                        labOrder = labOrderManager.GetPatientLabOrdersByDate((int)patient.ptn_pk, results.FirstOrDefault().DateSampleCollected).DefaultIfEmpty(null).FirstOrDefault();
                        DateTime sampleCollectionDate = results.FirstOrDefault().DateSampleCollected;
                        if (labOrder == null)
                        {
                            var patientMasterVisitManager = new PatientMasterVisitManager();

                            //var visitType = flm.GetItemIdByGroupAndItemName("VisitType", "Enrollment")[0]
                            //    .ItemId;
                            int patientMasterVisitId =
                                patientMasterVisitManager.AddPatientMasterVisit(patient.Id, interopUserId, 316);
                            var listOfTestsOrdered = new List <ListLabOrder>();
                            var order = new ListLabOrder()
                            {
                                FacilityId   = Convert.ToInt32(viralLoadResults.MesssageHeader.ReceivingFacility),
                                LabName      = "Viral Load",// results.FirstOrDefault().LabTestedIn,
                                LabNameId    = 3,
                                LabNotes     = results.FirstOrDefault().Regimen + " " + results.FirstOrDefault().SampleType,
                                LabOrderDate = sampleCollectionDate,
                                LabOrderId   = 0,
                                OrderReason  = "",
                                Results      = results.FirstOrDefault().VlResult,
                                VisitId      = patientMasterVisitId,
                                ResultDate   = viralLoadResults.MesssageHeader.MessageDatetime
                            };
                            listOfTestsOrdered.Add(order);
                            var    jss             = new JavaScriptSerializer();
                            string patientLabOrder = jss.Serialize(listOfTestsOrdered);
                            //include userid and facility ID
                            int orderId = labOrderManager.savePatientLabOrder(patient.Id, (int)patient.ptn_pk, interopUserId, thisFacility.FacilityID, 203, patientMasterVisitId, sampleCollectionDate.ToString(), "IL lab order", patientLabOrder, "Complete");

                            labOrder   = labOrderManager.GetLabOrdersById(orderId);
                            labDetails = labOrderManager.GetLabTestsOrderedById(labOrder.Id);
                        }
                        else
                        {
                            labDetails = labOrderManager.GetLabTestsOrderedById(labOrder.Id);
                        }

                        if (labOrder != null)
                        {
                            bool    isUndetectable = false;
                            string  resultText     = "";
                            decimal?resultValue    = null;
                            foreach (var result in results)
                            {
                                if (result.VlResult.Contains("LDL"))
                                {
                                    isUndetectable = true;
                                    resultText     = result.VlResult;
                                }
                                else
                                {
                                    var      resultString = result.VlResult.Replace("copies/ml", "");
                                    string[] numbers      = Regex.Split(resultString, @"[^0-9\.]+");
                                    //bool isSuccess = decimal.TryParse(resultString, out decimalValue);
                                    //if (isSuccess) resultValue = decimalValue;
                                    for (int i = 0; i < numbers.Length; i++)
                                    {
                                        if (Regex.IsMatch(numbers[i], @"^\d+$"))
                                        {
                                            resultValue = Convert.ToDecimal(numbers[i]);
                                            break;
                                        }
                                    }
                                }

                                if (labOrder != null)
                                {
                                    var labResults = new LabResultsEntity()
                                    {
                                        //todo remove hard coding
                                        LabOrderId     = labOrder.Id,
                                        LabOrderTestId = labDetails.FirstOrDefault().Id,
                                        ParameterId    = 3,
                                        LabTestId      = 3,
                                        ResultText     = resultText,
                                        ResultValue    = resultValue,
                                        ResultUnit     = "copies/ml",
                                        ResultUnitId   = 129,
                                        Undetectable   = isUndetectable,
                                        StatusDate     = result.DateSampleTested,
                                        HasResult      = true
                                    };
                                    labOrderManager.AddPatientLabResults(labResults);
                                    labOrder.OrderStatus = "Complete";
                                    labOrderManager.savePatientLabOrder(labOrder);
                                }
                            }
                            Msg = "Success";
                        }
                    }
                    else
                    {
                        Msg = "Patient does not exist";
                        return(Msg);
                    }
                }
                catch (Exception e)
                {
                    Msg = "error " + e.Message;
                    throw e;
                }
            }
            else
            {
                Msg = "Message does not contain results";
                throw new Exception(Msg);
            }
            return(Msg);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            PatientId            = Convert.ToInt32(HttpContext.Current.Session["PatientPK"]);
            PatientMasterVisitId = Convert.ToInt32(Request.QueryString["visitId"] != null ? Request.QueryString["visitId"] : HttpContext.Current.Session["PatientMasterVisitId"]);
            userId = Convert.ToInt32(Session["AppUserId"]);
            PatientMasterVisitManager VisitManager            = new PatientMasterVisitManager();
            List <PatientMasterVisit> visitPatientMasterVisit = new List <PatientMasterVisit>();

            visitPatientMasterVisit = VisitManager.GetVisitDateByMasterVisitId(PatientId, PatientMasterVisitId);
            VisitDate = visitPatientMasterVisit[0].VisitDate;
            visitPatientMasterVisitId = visitPatientMasterVisit[0].Id;
            PatientLookupManager patientLookupManager = new PatientLookupManager();
            var patientDetails = patientLookupManager.GetPatientDetailSummary(PatientId);

            Session["DateOfEnrollment"] = patientDetails.EnrollmentDate;
            if (Request.QueryString["visitId"] != null)
            {
                Session["ExistingRecordPatientMasterVisitID"] = Request.QueryString["visitId"].ToString();
                PatientEncounterExists = Convert.ToInt32(Request.QueryString["visitId"].ToString());
            }
            //if (Request.QueryString["data"].ToString() == "getdata")
            //{
            //    response = GetClinicalSummaryData(Convert.ToInt32(PatientId), visitPK, locationId);
            //    SendResponse(response);
            //}
            //        int PatientId = 0;
            //        int visitPK = 0;
            //        int locationId = 0;
            //        int userId = 0;
            //        if (!IsPostBack)
            //        {
            //            //try
            //            //{
            //            //if (Session["AppLocation"] == null || Session.Count == 0 || Session["AppUserID"].ToString() == "")
            //            //{
            //            //    Response.Redirect("~/frmlogin.aspx", true);
            //            //}

            //            if (!object.Equals(Session["PatientId"], null))
            //            {
            //                PatientId = Convert.ToInt32(HttpContext.Current.Session["PatientPK"]);
            //                //PatientId = Convert.ToInt32(Session["PatientId"]);
            //                if (PatientId == 0)
            //                {
            //                    Response.Redirect("~/ClinicalForms/frmPatient_Home.aspx", true);
            //                }
            //                this.hidPID.Value = PatientId.ToString();
            //            }
            //            if (!object.Equals(Session["PatientVisitId"], null))
            //            {
            //                if (!object.Equals(Request.QueryString["add"], null))
            //                {
            //                    if (Request.QueryString["add"].ToString() == "0")
            //                    {
            //                        visitPK = 0;
            //                        Session["PatientVisitId"] = "0";
            //                    }
            //                }
            //                else
            //                {
            //                    visitPK = Convert.ToInt32(Session["PatientVisitId"]);
            //                }
            //            }
            //            else
            //            {
            //                if (!object.Equals(Request.QueryString["add"], null))
            //                {
            //                    if (Request.QueryString["add"].ToString() == "0")
            //                    {
            //                        visitPK = 0;
            //                    }
            //                }
            //            }
            //            this.hidVId.Value = visitPK.ToString();

            //            if (!object.Equals(Session["AppLocationId"], null))
            //            {
            //                locationId = Convert.ToInt32(Session["AppLocationId"]);
            //            }
            //            if (!object.Equals(Session["AppUserId"], null))
            //            {
            //                userId = Convert.ToInt32(Session["AppUserId"]);
            //            }
            //            if (!object.Equals(Session["TechnicalAreaName"], null))
            //            {
            //                Label lblFacility = (Label)this.ucCaseSummary.FindControl("lblFacility");
            //                if (lblFacility != null)
            //                    lblFacility.Text = Session["TechnicalAreaName"].ToString();
            //                this.hidsrvNm.Value = Session["TechnicalAreaName"].ToString();
            //            }
            //            if (!object.Equals(Session["TechnicalAreaId"], null))
            //            {
            //                this.hidMOD.Value = Session["TechnicalAreaId"].ToString();
            //            }

            //            //  Authenticate();

            //            if (!object.Equals(Request.QueryString["data"], null))
            //            {
            //                string response = string.Empty;


            //                if (Session["AppLocation"] == null || Session.Count == 0 || Session["AppUserID"].ToString() == "")
            //                {
            //                 ////   CLogger.WriteLog(ELogLevel.ERROR, "Session expired!!");

            //                 //   ResponseType responsetype = new ResponseType() { Success = EnumUtil.GetEnumDescription(Success.False), ErrorMessage = "Session expired" };
            //                 //   response = SerializerUtil.ConverToJson<ResponseType>(responsetype);
            //                 //   SendResponse(response);
            //                }

            //                if (Request.QueryString["data"].ToString() == "getdata")
            //                {
            //                    response = GetClinicalSummaryData(Convert.ToInt32(PatientId), visitPK, locationId);
            //                    SendResponse(response);
            //                }
            //                if (Request.QueryString["data"].ToString() == "savedata")
            //                {
            //                    System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream);
            //                    string jsonString = "";
            //                    jsonString = sr.ReadToEnd();
            //                    // response = SaveUpdateClinicalSummaryData(jsonString, PatientId, visitPK, locationId, userId);
            //                    SendResponse(response);
            //                }

            //            }

            //        }
            //    }
            //    private void SendResponse(string data)
            //    {
            //        //try
            //        //{
            //        Response.Clear();
            //        Response.ContentType = "application/json";
            //        Response.AddHeader("Content-type", "text/json");
            //        Response.AddHeader("Content-type", "application/json");
            //        Response.Write(data);
            //        Response.End();
            //        //HttpContext.Current.ApplicationInstance.CompleteRequest();
            //        //}
            //        //catch (Exception ex)
            //        //{
            //        //}
            //    }
            //    private string GetClinicalSummaryData(int ptn_pk, int visitPK, int locationId)
            //    {
            //        string result = string.Empty;
            //        try
            //        {
            //            IClinicalSummaryForm ipatientClinicalSummary;
            //            ipatientClinicalSummary = (IClinicalSummaryForm)ObjectFactory.CreateInstance("BusinessProcess.CCC.ClinicalSummary.BClinicalSummary, BusinessProcess.CCC.ClinicalSummary");
            //          //  ClinicalSummary patientClinicalSummary = ipatientClinicalSummary.GetClinicalSummaryData(ptn_pk, visitPK, locationId);
            //            result = ConverToJson(ipatientClinicalSummary.GetClinicalSummaryData(ptn_pk, visitPK, locationId));
            //          //result = SerializerUtil.ConverToJson<ClinicalSummary>(patientClinicalSummary);
            //        }
            //        catch (Exception ex)
            //        {
            //            string str = "ptn_pk: " + ptn_pk.ToString() + ",visitPK: " + visitPK.ToString() + ",locationId:" + locationId.ToString();
            //            //CLogger.WriteLog(ELogLevel.ERROR, "GetClinicalSummaryData() exception: " + str + "-" + ex.ToString());
            //            //ResponseType response = new ResponseType() { Success = EnumUtil.GetEnumDescription(Success.False) };
            //            //result = SerializerUtil.ConverToJson<ResponseType>(response);
            //        }
            //        finally
            //        {

            //        }
            //        return result;
            //    }

            //    private string ConverToJson(IClinicalSummaryForm clinicalSummaryForm)
            //    {
            //        throw new NotImplementedException();
            //    }
            //}
        }
Example #18
0
        public string UpdatePatientEnrollment(string enrollmentNo, string enrollmentDate, string serviceName)
        {
            ExMessage message = new ExMessage();

            try
            {
                var patientPK                 = Convert.ToInt32(Session["PatientPK"]);
                var patientEnrollment         = new PatientEnrollmentManager();
                var patientIdentifier         = new PatientIdentifierManager();
                var patientMasterVisitManager = new PatientMasterVisitManager();
                var patientManager            = new PatientLookupManager();

                var lookupLogic        = new LookupLogic();
                var patientIdentifiers = lookupLogic.GetItemIdByGroupAndDisplayName("PatientIdentifier", serviceName);
                var identifierId       = 0;
                if (patientIdentifiers.Count > 0)
                {
                    identifierId = patientIdentifiers[0].ItemId;
                }

                var patient = patientManager.GetPatientDetailSummary(patientPK);
                if (DateTime.Parse(enrollmentDate) < DateTime.Parse(patient.DateOfBirth.ToString()))
                {
                    var DOBexception = new SoapException("Enrollment Date: " + enrollmentDate + " should not be before the date of birth " + DateTime.Parse(patient.DateOfBirth.ToString()).ToString("dd-MM-yyyy"), SoapException.ClientFaultCode);
                    throw DOBexception;
                }

                var enrollmentIdentifiers = lookupLogic.GetItemIdByGroupAndDisplayName("VisitType", "Enrollment");
                var itemId = 0;
                if (enrollmentIdentifiers.Count > 0)
                {
                    itemId = enrollmentIdentifiers[0].ItemId;
                }

                List <PatientMasterVisit> visitsNonEnrollments = patientMasterVisitManager.GetNonEnrollmentVisits(patientPK, itemId);

                var identifierTypesCheck = patientIdentifier.CheckIfIdentifierNumberIsUsed(enrollmentNo, identifierId);

                if (identifierTypesCheck.Count > 0)
                {
                    if (patientPK != identifierTypesCheck[0].PatientId)
                    {
                        var exception = new SoapException("No: " + enrollmentNo + " already exists", SoapException.ClientFaultCode);
                        throw exception;
                    }
                }

                if (visitsNonEnrollments.Count > 0)
                {
                    foreach (var items in visitsNonEnrollments)
                    {
                        if (DateTime.Parse(enrollmentDate) > items.VisitDate)
                        {
                            var newexception = new SoapException("Enrollment Date: " + enrollmentDate + " is after encounters in the system", SoapException.ClientFaultCode);
                            throw newexception;
                        }
                    }
                }

                List <PatientEntityEnrollment> entityEnrollments = new List <PatientEntityEnrollment>();

                if (patientPK > 0)
                {
                    entityEnrollments = patientEnrollment.GetPatientEnrollmentByPatientId(patientPK);

                    if (entityEnrollments.Count > 0)
                    {
                        var identifiers = patientIdentifier.GetPatientEntityIdentifiers(patientPK, entityEnrollments[0].Id, identifierId);

                        if (identifiers.Count > 0)
                        {
                            var identifiersAuditData = AuditDataUtility.Serializer(identifiers);
                            identifiers[0].IdentifierValue = enrollmentNo;
                            identifiers[0].AuditData       = identifiersAuditData;


                            patientIdentifier.UpdatePatientIdentifier(identifiers[0], patient.FacilityId);
                        }

                        var enrollmentAuditData = AuditDataUtility.Serializer(entityEnrollments);

                        entityEnrollments[0].EnrollmentDate = DateTime.Parse(enrollmentDate);
                        entityEnrollments[0].AuditData      = enrollmentAuditData;

                        patientEnrollment.updatePatientEnrollment(entityEnrollments[0]);

                        message.errorcode = 0;
                        message.msg      += "<p>Successfully edited patient enrollment.</p>";
                    }
                }
            }
            catch (SoapException ex)
            {
                message.errorcode = 1;
                message.msg       = ex.Message;
            }

            return(Msg = new JavaScriptSerializer().Serialize(message));
        }
Example #19
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);
            }
        }
Example #20
0
        public string saveTracingData(int PatientId, int PersonId, string tracingdate, int tracingmethod, int tracingoutcome, string othertracingoutcome, string tracingdateofdeath,
                                      string tracingdateoftransfer, string transferfacility, string tracingnotes, string tracingstatus, int?visitid)
        {
            ILookupManager mgr     = (ILookupManager)ObjectFactory.CreateInstance("BusinessProcess.CCC.BLookupManager, BusinessProcess.CCC");
            var            tracing = new ReportingResultsManager();
            int            userId  = Convert.ToInt32(Session["AppUserId"]);
            int            patientmastervisitresult = 0;
            int            EncounterResult          = 0;
            string         savestatus       = "";
            DateTime?      deathTracingDate = new DateTime();
            int            CheckoutResult   = 0;

            //save tracing data
            if (tracingdateofdeath == "")
            {
                deathTracingDate = null;
            }
            else
            {
                deathTracingDate = Convert.ToDateTime(tracingdateofdeath);
            }

            DateTime?transferTracingDate = new DateTime();

            if (tracingdateoftransfer == "")
            {
                transferTracingDate = null;
            }
            else
            {
                transferTracingDate = Convert.ToDateTime(tracingdateoftransfer);
            }

            try
            {
                //create patient master visit id
                PatientMasterVisitManager patientMasterVisit = new PatientMasterVisitManager();
                LookupLogic lookupLogic     = new LookupLogic();
                var         currentfacility = lookupLogic.GetFacility(Session["AppPosID"].ToString());
                if (currentfacility == null)
                {
                    currentfacility = lookupLogic.GetFacility();
                }

                if (visitid.HasValue && visitid.Value > 0)
                {
                    Tracing[] patientTracingData = tracing.getTracingData(visitid.Value).ToArray();
                    if (patientTracingData.Length > 0)
                    {
                        patientTracingData[0].Mode                    = tracingmethod;
                        patientTracingData[0].Outcome                 = tracingoutcome;
                        patientTracingData[0].DateTracingDone         = Convert.ToDateTime(tracingdate);
                        patientTracingData[0].TracingDateOfDeath      = deathTracingDate;
                        patientTracingData[0].TracingTransferFacility = transferfacility;
                        patientTracingData[0].TracingTransferDate     = transferTracingDate;
                        patientTracingData[0].Remarks                 = tracingnotes;

                        tracing.UpdatePatientTracing(patientTracingData[0]);
                        Session["PatientTrace"] = "";
                    }
                }
                else
                {
                    patientmastervisitresult = patientMasterVisit.PatientMasterVisitCheckin(PatientId, userId, currentfacility.FacilityID);

                    //create encounter
                    PatientEncounterManager patientEncounterManager = new PatientEncounterManager();
                    EncounterResult = patientEncounterManager.AddpatientEncounterTracing(Convert.ToInt32(PatientId), Convert.ToInt32(patientmastervisitresult),
                                                                                         patientEncounterManager.GetPatientEncounterId("EncounterType", "Patient-Tracing"), 203, userId, Convert.ToDateTime(tracingdate), Convert.ToDateTime(tracingdate));
                    int tracingType = Convert.ToInt32(mgr.GetLookupItemId("DefaulterTracing"));
                    //save tracing data
                    Tracing patientTracing = new Tracing()
                    {
                        PersonID             = PersonId,
                        TracingType          = tracingType,
                        PatientMasterVisitId = patientmastervisitresult,
                        DateTracingDone      = Convert.ToDateTime(tracingdate),
                        Mode                    = tracingmethod,
                        Outcome                 = tracingoutcome,
                        TracingDateOfDeath      = deathTracingDate,
                        TracingTransferFacility = transferfacility,
                        TracingTransferDate     = transferTracingDate,
                        Remarks                 = tracingnotes,
                        CreateDate              = DateTime.Now,
                        CreatedBy               = Convert.ToInt32(Session["AppUserId"])
                    };

                    Result = tracing.AddPatientTracing(patientTracing);

                    //checkout patient master visit
                    PatientMasterVisitManager patientMasterVisitcheckout = new PatientMasterVisitManager();
                    CheckoutResult = patientMasterVisit.PatientMasterVisitCheckout(patientmastervisitresult, PatientId, 0, 0, 0, Convert.ToDateTime(tracingdate));

                    Session["EncounterStatusId"] = 0;
                    Session["PatientEditId"]     = 0;
                    Session["PatientPK"]         = 0;
                    Session["PatientTrace"]      = "";

                    if (Result > 0 && CheckoutResult > 0)
                    {
                        Msg = "Patient appointment Added Successfully!";
                    }
                }
            }
            catch (Exception e)
            {
                Msg = e.Message;
            }
            return(savestatus);
        }