public void EditPatientLabOrder(LabOrderEntity labOrder) { using (UnitOfWork _unitOfWork = new UnitOfWork(new GreencardContext())) { _unitOfWork.PatientLabOrderRepository.Update(labOrder); Result = _unitOfWork.Complete(); _unitOfWork.Dispose(); } }
public int AddPatientLabOrder(LabOrderEntity labOrderEntity) { using (UnitOfWork _unitOfWork = new UnitOfWork(new GreencardContext())) { _unitOfWork.PatientLabOrderRepository.Add(labOrderEntity); Result = _unitOfWork.Complete(); _unitOfWork.Dispose(); return(labOrderEntity.Id); } }
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); } }
//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); }
/// <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)); }