コード例 #1
0
        public IActionResult Create(int patientId, PatientImmunoglobulin patientIg)
        {
            var patient = _context.Patients.Where(p => p.ID == patientId).SingleOrDefault();

            if (patient == null)
            {
                return(NotFound());
            }

            patientIg.PatientId = patient.ID;
            if (ModelState.IsValid)
            {
                _context.Add(patientIg);
                _context.SaveChanges();
            }
            else
            {
                Hashtable errors = ModelStateHelper.Errors(ModelState);
                return(StatusCode(422, Json(new { success = false, errors })));
            }
            var igs = _context.PatientImmunoglobulins.
                      Include(pi => pi.ImmunoglobulinType).
                      Where(pm => pm.PatientId == patientId).
                      OrderByDescending(pm => pm.DateTaken).
                      ToList();

            ViewBag.SelectedIg = new List <int>();
            return(PartialView(igs));
        }
コード例 #2
0
        private void ParseAndSaveLines(List <string> matched)
        {
            var patient = _context.Patients.Where(p => p.RM2Number.Contains(_id))
                          .Include(p => p.PatientImmunoglobulines)
                          .ThenInclude(p => p.ImmunoglobulinType)
                          .FirstOrDefault();

            var igType = _context.ImmunoglobulinTypes
                         .Where(it => it.Name == "Total IgE")
                         .FirstOrDefault();

            var existingDates = patient.PatientImmunoglobulines
                                .Where(ig => ig.ImmunoglobulinTypeId == igType.ID)
                                .Select(pi => pi.DateTaken.Date)
                                .ToList();

            foreach (string line in matched)
            {
                var    dataArray  = line.Split(" ");
                string range      = "";
                string dateString = dataArray.Take(3).ToList().Join(" ");
                string igeValue   = dataArray[5].Replace("*", String.Empty)
                                    .Replace("<", String.Empty)
                                    .Replace(">", String.Empty);
                string sampleId = dataArray[4];
                if (dataArray.Length > 6)
                {
                    range = dataArray[6] + dataArray[7] + dataArray[8];
                }
                else
                {
                    range = "(" + Regex.Match(_lines[11], @"\(([^)]*)\)").Groups[1].Value + ")";
                    Console.WriteLine(dataArray);
                }
                DateTime parsedDate;
                DateTime.TryParseExact(dateString, "dd MMM yyyy", null, System.Globalization.DateTimeStyles.None, out parsedDate);
                if (existingDates.FindAll(d => d.Date == parsedDate.Date).ToList().Count == 0)
                {
                    var totalIgE = new PatientImmunoglobulin();
                    totalIgE.ImmunoglobulinType = igType;
                    totalIgE.SampleId           = sampleId;
                    totalIgE.Range     = range;
                    totalIgE.PatientId = patient.ID;
                    totalIgE.Value     = decimal.Parse(igeValue);
                    totalIgE.DateTaken = parsedDate;
                    _context.PatientImmunoglobulins.Add(totalIgE);
                    Imported.Add(totalIgE);
                }
            }
        }
コード例 #3
0
        private void ParseAndSaveLines(List <string> matched)
        {
            var patient = _context.Patients.Where(p => p.RM2Number.Contains(_id))
                          .Include(p => p.PatientImmunoglobulines)
                          .ThenInclude(p => p.ImmunoglobulinType)
                          .FirstOrDefault();

            var igType = _context.ImmunoglobulinTypes
                         .Where(it => it.Name == "Aspergillus F IgG")
                         .FirstOrDefault();

            var existingDates = patient.PatientImmunoglobulines
                                .Where(pi => pi.ImmunoglobulinTypeId == igType.ID)
                                .Select(pi => pi.DateTaken.Date)
                                .ToList();

            foreach (string line in matched)
            {
                var    dataArray  = line.Split(" ");
                string dateString = dataArray.Take(3).ToList().Join(" ");
                string igGValue   = dataArray[5].Replace("*", String.Empty)
                                    .Replace("<", String.Empty)
                                    .Replace(">", String.Empty);
                DateTime parsedDate;
                DateTime.TryParseExact(dateString, "dd MMM yyyy", null, System.Globalization.DateTimeStyles.None, out parsedDate);
                if (existingDates.FindAll(d => d.Date == parsedDate.Date).ToList().Count == 0)
                {
                    var patientIGg = new PatientImmunoglobulin();
                    patientIGg.ImmunoglobulinType = igType;
                    patientIGg.PatientId          = patient.ID;
                    patientIGg.Value     = decimal.Parse(igGValue);
                    patientIGg.DateTaken = parsedDate;
                    _context.PatientImmunoglobulins.Add(patientIGg);
                    Imported.Add(patientIGg);
                }
            }
        }
コード例 #4
0
        public async Task <IActionResult> Ig()
        {
            var allPatients = _context.Patients
                              .Include(p => p.PatientImmunoglobulines);

            //var uom = _context.UnitOfMeasurements.Where(u => u.Name == "mg/L").FirstOrDefault();
            foreach (var code in PatientImmunoglobulin.Codes().Keys)
            {
                var igType = _context.ImmunoglobulinTypes
                             .Where(it => it.Name == PatientImmunoglobulin.IgFromCode(code))
                             .FirstOrDefault();

                foreach (var patient in allPatients)
                {
                    var igLevels = _externalImportDbContext.PathologyReports
                                   .Where(r => r.OrderItemCode.Equals(code) &&
                                          r.RM2Number == "RM2" + patient.RM2Number);
                    if (!igLevels.Any())
                    {
                        continue;
                    }

                    var existingDates = patient.PatientImmunoglobulines
                                        .Where(pi => pi.ImmunoglobulinTypeId == igType.ID)
                                        .Select(pi => pi.DateTaken.Date)
                                        .ToList();


                    foreach (var iggLevel in igLevels)
                    {
                        if (existingDates.FindAll(d => d.Date == iggLevel.DatePerformed.Date).ToList().Count == 0)
                        {
                            if (iggLevel.Result == null)
                            {
                                continue;
                            }
                            var patientIgG = new PatientImmunoglobulin();
                            patientIgG.PatientId            = patient.ID;
                            patientIgG.DateTaken            = iggLevel.DatePerformed;
                            patientIgG.ImmunoglobulinTypeId = igType.ID;
                            patientIgG.SourceSystemGUID     = iggLevel.ObservationGUID;
                            patientIgG.CreatedDate          = DateTime.Now;
                            try
                            {
                                patientIgG.Value = Decimal.Parse(iggLevel.Result
                                                                 .Replace("<", String.Empty)
                                                                 .Replace("*", String.Empty)
                                                                 .Replace(">", String.Empty));
                            } catch (System.FormatException e)
                            {
                                Console.WriteLine("VALUE::::::::::::" + iggLevel.Result);
                                continue;
                            }
                            patientIgG.Range = iggLevel.NormalRange;

                            await _context.PatientImmunoglobulins.AddAsync(patientIgG);
                        }
                    }
                }
            }
            await _context.SaveChangesAsync();

            return(Ok());
        }
コード例 #5
0
        public override Task ProcessInScope(IServiceProvider serviceProvider)
        {
            using (IServiceScope scope = _serviceProvider.CreateScope())
            {
                var context         = scope.ServiceProvider.GetRequiredService <AspergillosisContext>();
                var externalContext = scope.ServiceProvider.GetRequiredService <ExternalImportDbContext>();

                var allPatients = context.Patients.Include(p => p.PatientImmunoglobulines);
                //var uom = _context.UnitOfMeasurements.Where(u => u.Name == "mg/L").FirstOrDefault();
                foreach (var code in PatientImmunoglobulin.Codes().Keys)
                {
                    var igType = context.ImmunoglobulinTypes.Where(it => it.Name == PatientImmunoglobulin.IgFromCode(code))
                                 .FirstOrDefault();

                    foreach (var patient in allPatients)
                    {
                        var igLevels = externalContext.PathologyReports.Where(r => r.OrderItemCode.Equals(code) &&
                                                                              r.RM2Number == "RM2" + patient.RM2Number);
                        if (!igLevels.Any())
                        {
                            continue;
                        }
                        var existingDates = patient.PatientImmunoglobulines
                                            .Where(pi => pi.ImmunoglobulinTypeId == igType.ID)
                                            .Select(pi => pi.DateTaken.Date)
                                            .ToList();


                        foreach (var iggLevel in igLevels)
                        {
                            if (existingDates.FindAll(d => d.Date == iggLevel.DatePerformed.Date).ToList().Count == 0)
                            {
                                if (iggLevel.Result == null)
                                {
                                    continue;
                                }
                                var patientIgG = new PatientImmunoglobulin();
                                patientIgG.PatientId            = patient.ID;
                                patientIgG.DateTaken            = iggLevel.DatePerformed;
                                patientIgG.ImmunoglobulinTypeId = igType.ID;
                                patientIgG.SourceSystemGUID     = iggLevel.ObservationGUID;
                                patientIgG.CreatedDate          = DateTime.Now;
                                try
                                {
                                    patientIgG.Value = Decimal.Parse(iggLevel.Result
                                                                     .Replace("<", String.Empty)
                                                                     .Replace("*", String.Empty)
                                                                     .Replace(">", String.Empty));
                                }
                                catch (System.FormatException e)
                                {
                                    Console.WriteLine("IG VALUE ERROR::::::::::::" + iggLevel.Result);
                                    continue;
                                }
                                patientIgG.Range = iggLevel.NormalRange;

                                context.PatientImmunoglobulins.Add(patientIgG);
                            }
                        }
                    }
                }
                context.SaveChanges();
            }

            return(Task.CompletedTask);
        }