Example #1
0
 public void EditPatientLabOrder(LabOrderEntity labOrder)
 {
     using (UnitOfWork _unitOfWork = new UnitOfWork(new GreencardContext()))
     {
         _unitOfWork.PatientLabOrderRepository.Update(labOrder);
         Result = _unitOfWork.Complete();
         _unitOfWork.Dispose();
     }
 }
Example #2
0
 public int AddPatientLabOrder(LabOrderEntity labOrderEntity)
 {
     using (UnitOfWork _unitOfWork = new UnitOfWork(new GreencardContext()))
     {
         _unitOfWork.PatientLabOrderRepository.Add(labOrderEntity);
         Result = _unitOfWork.Complete();
         _unitOfWork.Dispose();
         return(labOrderEntity.Id);
     }
 }
Example #3
0
 public LabOrderEntity GetLabOrderById(int labOrderId)
 {
     using (UnitOfWork _unitOfWork = new UnitOfWork(new GreencardContext()))
     {
         LabOrderEntity patientLabOrders = _unitOfWork.PatientLabOrderRepository.GetById(labOrderId);
         //.FindBy(
         //            x =>                                x.Id == labOrderId)
         //        .OrderByDescending(x => x.Id).Take(1).ToList();
         _unitOfWork.Dispose();
         return(patientLabOrders);
     }
 }
Example #4
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);
        }
Example #5
0
        /// <summary>
        /// Saves the patient lab order.
        /// </summary>
        /// <param name="patientID">The patient identifier.</param>
        /// <param name="patient_Pk">The patient pk.</param>
        /// <param name="userId">The user identifier.</param>
        /// <param name="facilityID">The facility identifier.</param>
        /// <param name="moduleId">The module identifier.</param>
        /// <param name="patientMasterVisitId">The patient master visit identifier.</param>
        /// <param name="labOrderDate">The lab order date.</param>
        /// <param name="orderNotes">The order notes.</param>
        /// <param name="patientLabOrder">The patient lab order.</param>
        /// <param name="orderStatus">The order status.</param>
        /// <returns>order Id</returns>
        public int savePatientLabOrder(int patientID, int patient_Pk, int userId, int facilityID, int moduleId, int patientMasterVisitId, string labOrderDate, string orderNotes, string patientLabOrder, string orderStatus)
        {
            int visitId = 0;
            int orderId = 0;
            int testId  = 0;
            //int _paramId = 0;
            DateTime orderDate = Convert.ToDateTime(labOrderDate);
            // DateTime orderDate = DateTime.Now;
            //DateTime orderDate = DateTime.Parse(labOrderDate);
            var jss = new JavaScriptSerializer();
            IList <ListLabOrder> data = jss.Deserialize <IList <ListLabOrder> >(patientLabOrder);

            if (patientID > 0)
            {
                PatientVisit visit = new PatientVisit()
                {
                    Ptn_Pk      = patient_Pk,
                    LocationID  = facilityID,
                    UserID      = userId,
                    TypeofVisit = 70, //Self (70) 71 (Treatmentsupporter)
                    VisitDate   = orderDate,
                    ModuleId    = moduleId,
                    VisitType   = 6
                };
                visitId = _visitManager.AddPatientVisit(visit);

                LabOrderEntity labOrder = new LabOrderEntity()
                {
                    Ptn_pk               = patient_Pk,
                    PatientId            = patientID,
                    LocationId           = facilityID,
                    VisitId              = visitId,
                    ModuleId             = moduleId,
                    OrderedBy            = userId,
                    ClinicalOrderNotes   = orderNotes,
                    PatientMasterVisitId = patientMasterVisitId,
                    OrderStatus          = orderStatus,
                    OrderDate            = orderDate,
                    UserId               = userId
                };
                orderId = _mgr.AddPatientLabOrder(labOrder);
                // DateTime? nullDate = null;
                foreach (ListLabOrder t in data)
                {
                    LabDetailsEntity labDetails = new LabDetailsEntity()
                    {
                        LabOrderId = orderId,
                        LabTestId  = t.LabNameId,
                        TestNotes  = t.LabNotes,
                        UserId     = userId,
                        CreatedBy  = userId,
                        StatusDate = DateTime.Now,
                        ResultDate = t.ResultDate
                    };
                    testId = _mgr.AddLabOrderDetails(labDetails);

                    PatientLabTracker labTracker = new PatientLabTracker()
                    {
                        PatientId            = patientID,
                        PatientMasterVisitId = patientMasterVisitId,
                        LabName    = t.LabName,
                        SampleDate = orderDate,
                        Reasons    = t.OrderReason,

                        CreatedBy      = userId,
                        Results        = orderStatus,
                        LabOrderId     = orderId,
                        LabTestId      = t.LabNameId, //parameter
                        LabOrderTestId = testId,      //uniquely identifies a particular test
                        FacilityId     = facilityID,
                        ResultDate     = t.ResultDate
                    };

                    Result = _mgr.AddPatientLabTracker(labTracker);
                    if (Result > 0)
                    {
                        Id = _patientEncounterManager.AddpatientEncounter(patientID, patientMasterVisitId, _patientEncounterManager.GetPatientEncounterId("EncounterType", "lab-encounter".ToLower()), 205, userId);
                    }
                    //add to dtlresults

                    List <LookupTestParameter> _parameters = _lookupTest.GetTestParameter(t.LabNameId);
                    if (_parameters != null)
                    {
                        foreach (LookupTestParameter p in _parameters)
                        {
                            LabResultsEntity labresults = new LabResultsEntity()
                            {
                                LabOrderId     = orderId,
                                LabTestId      = t.LabNameId,
                                LabOrderTestId = testId,
                                ParameterId    = p.Id,
                                UserId         = userId,
                                CreatedBy      = userId,
                                StatusDate     = DateTime.Now
                            };
                            _mgr.AddPatientLabResults(labresults);
                        }
                    }
                }
            }
            return(orderId);
        }
 public int savePatientLabOrder(LabOrderEntity labOrder, string patientLabOrders)
 {
     return(savePatientLabOrder(labOrder.Id, labOrder.PatientId, labOrder.Ptn_pk, labOrder.UserId, labOrder.LocationId, labOrder.ModuleId, labOrder.PatientMasterVisitId, labOrder.OrderDate.ToString(), labOrder.ClinicalOrderNotes, patientLabOrders, labOrder.OrderStatus));
 }
 /// <summary>
 /// Saves the patient lab order.
 /// </summary>
 /// <param name="patientID">The patient identifier.</param>
 /// <param name="patient_Pk">The patient pk.</param>
 /// <param name="userId">The user identifier.</param>
 /// <param name="facilityID">The facility identifier.</param>
 /// <param name="moduleId">The module identifier.</param>
 /// <param name="patientMasterVisitId">The patient master visit identifier.</param>
 /// <param name="labOrderDate">The lab order date.</param>
 /// <param name="orderNotes">The order notes.</param>
 /// <param name="patientLabOrder">The patient lab order.</param>
 /// <param name="orderStatus">The order status.</param>
 /// <returns>order Id</returns>
 public int savePatientLabOrder(LabOrderEntity labOrder)
 {
     return(savePatientLabOrder(labOrder, null));
 }