Beispiel #1
0
        private static bool MeningococciFound(MeningoSending sending)
        {
            var isolateInterpretation = new MeningoIsolateInterpretation();

            isolateInterpretation.Interpret(sending.Isolate);
            var meningococciFound = isolateInterpretation.NoMeningococci == false;

            return(meningococciFound);
        }
        public ActionResult Index()
        {
            var tempFile = Path.GetTempFileName();

            var samplingLocations = new List <MeningoSamplingLocation> {
                MeningoSamplingLocation.Blood, MeningoSamplingLocation.Liquor
            };

            var sendings = _db.MeningoSendings.Include(s => s.Patient)
                           .Where(s => !s.Deleted && samplingLocations.Contains(s.SamplingLocation) &&
                                  (s.SamplingDate == null && s.ReceivingDate >= new DateTime(2019, 10, 01) ||
                                   s.SamplingDate > new DateTime(2019, 10, 01)))
                           .OrderBy(s => s.MeningoPatientId).ToList();

            var patientLines = new Dictionary <int, string>();

            foreach (var sending in sendings)
            {
                var interpretation = new MeningoIsolateInterpretation();
                interpretation.Interpret(sending.Isolate);

                var serogroup = interpretation.Serogroup;

                if (string.IsNullOrEmpty(serogroup) || serogroup is "NG" or "cnl")
                {
                    continue;
                }

                var coordinate = _geonamesService.QueryCoordinateByPostalCode(sending.Patient.PostalCode, sending.Patient.City);
                if (coordinate == null)
                {
                    continue;
                }
                var patientId          = sending.MeningoPatientId;
                FormattableString line =
                    $"{patientId};{sending.ReceivingDate.ToReportFormat()};{sending.SamplingDate.ToReportFormat(string.Empty)};{interpretation.Serogroup};{sending.Isolate.PorAVr1};{sending.Isolate.PorAVr2};{sending.Isolate.FetAVr};{sending.Isolate.PatientAgeAtSampling()};{coordinate?.Latitude};{coordinate?.Longitude}";
                var newLine = line.ToString(CultureInfo.InvariantCulture);

                if (!patientLines.ContainsKey(patientId) ||
                    patientLines[patientId].Length < newLine.Length)
                {
                    patientLines[patientId] = newLine;
                }
            }

            System.IO.File.WriteAllLines(tempFile, patientLines.Values);
            var result = File(System.IO.File.ReadAllBytes(tempFile),
                              "text/csv",
                              $"EpiscanGis_Export_{DateTime.Now:yyyyMMdd}.csv");

            System.IO.File.Delete(tempFile);
            return(result);
        }
        public void Process(MeningoIsolate source, MeningoIsolateViewModel destination)
        {
            var sending = source.Sending;

            ParseAndMapLaboratoryNumber(source, destination);
            destination.SamplingLocation = sending.SamplingLocation == MeningoSamplingLocation.OtherInvasive
                ? sending.OtherInvasiveSamplingLocation
                : sending.SamplingLocation == MeningoSamplingLocation.OtherNonInvasive
                ? sending.OtherNonInvasiveSamplingLocation
                : EnumEditor.GetEnumDescription(sending.SamplingLocation);
            destination.Material                  = EnumEditor.GetEnumDescription(sending.Material);
            destination.Invasive                  = EnumEditor.GetEnumDescription(sending.Invasive);
            destination.PatientAgeAtSampling      = source.PatientAgeAtSampling();
            destination.EpsilometerTestViewModels = EpsilometerTestsModelToViewModel(source.EpsilometerTests);

            //Report fields
            destination.SamplingDate           = source.Sending.SamplingDate.ToReportFormat();
            destination.ReceivingDate          = source.Sending.ReceivingDate.ToReportFormat();
            destination.PatientId              = source.Sending.Patient.PatientId;
            destination.Patient                = source.Sending.Patient.ToReportFormat();
            destination.PatientBirthDate       = source.Sending.Patient.BirthDate.ToReportFormat();
            destination.PatientPostalCode      = source.Sending.Patient.PostalCode;
            destination.SenderLaboratoryNumber = source.Sending.SenderLaboratoryNumber;

            //destination.EvaluationString = source.Evaluation.ToReportFormat();

            var isolateInterpretation = new MeningoIsolateInterpretation();

            isolateInterpretation.Interpret(source);
            destination.Report  = isolateInterpretation.Result.Report;
            destination.Typings = isolateInterpretation.Typings;
            destination.Comment = isolateInterpretation.Result.Comment;

            var sender = db.Senders.Find(source.Sending.SenderId);

            if (sender != null) // special case for Meningo as old senders were not imported
            {
                destination.SenderName   = sender.Name;
                destination.SenderStreet = sender.StreetWithNumber;
                destination.SenderCity   = $"{sender.PostalCode} {sender.City}";
            }
        }