Beispiel #1
0
        public IEnumerable <object> Get()
        {
            logData.Info("Get Assay Function is called");
            // getting back the assaytypes from the database table( AssayTypes)
            using (var repo = new AssayRepository())
            {
                try
                {
                    List <DisplayClass> objectAssay = new List <DisplayClass>();
                    var assaynamesobj = repo.GetAssay();
                    foreach (var assaytype in assaynamesobj)
                    {
                        DisplayClass ds = new DisplayClass();
                        ds.Id        = assaytype.ID;
                        ds.TypeId    = assaytype.TypeId;
                        ds.AssayName = assaytype.AssayName;
                        objectAssay.Add(ds);
                    }

                    logData.Info("Get Assay Function is finished");
                    return(objectAssay);
                }

                catch (SqlException odbcEx)
                {
                    Console.WriteLine(odbcEx.Message);
                    logData.Error(odbcEx.Message);
                    return(null);
                }
            }
        }
        public CurveFile Transform(string jsonMessages, string AssayName)
        {
            var delim = new[] { '"' };

            jsonMessages = Regex.Unescape(jsonMessages);
            jsonMessages = jsonMessages.TrimEnd(delim).TrimStart(delim);

            AssayName = Regex.Unescape(AssayName);
            AssayName = AssayName.TrimEnd(delim).TrimStart(delim);

            dynamic data = JObject.Parse(jsonMessages);

            long AssayDBID = 0;

            using (var repo = new AssayRepository())
            {
                AssayDBID = repo.GetAssayID(AssayName);
            }

            CurveFile toReturn = JsonConvert.DeserializeObject <CurveFile>(jsonMessages);

            toReturn.AssayDBID = AssayDBID;

            //Extract extension from file name
            ExtractExtensionService helper = new ExtractExtensionService();

            string[] fullFileName = new string[2];
            fullFileName = helper.ExtractExt(toReturn);

            return(toReturn);
        }
 public AssayController(AssayRepository repository, PurchaseRepository pu_repository, IHubContext <PrintHub> hub, IOptionsSnapshot <WorkOption> option, IHostingEnvironment env)
 {
     r    = repository;
     pu_r = pu_repository;
     _hub = hub;
     _hostingEnvironment = env;
     this.option         = option.Value;
 }
        // POST: api/HashValues
        public IEnumerable <int> Post()
        {
            List <int>    exists       = new List <int>();
            List <string> hashedValues = new List <string>();

            for (var i = 0; i < HttpContext.Current.Request.Files.Count; i++)
            {
                List <string>  hashValues = new List <string>();
                HttpPostedFile file       = HttpContext.Current.Request.Files.Get(i);
                string         filename   = file.FileName;
                Debug.WriteLine(file);
                Debug.WriteLine(filename);
                using (var repo = new AssayRepository())
                {
                    try
                    {
                        var         fileStream   = file.InputStream;
                        SHA1Managed sha          = new SHA1Managed();
                        byte[]      checksum     = sha.ComputeHash(fileStream);
                        string      sendCheckSum = BitConverter.ToString(checksum)
                                                   .Replace("-", string.Empty);

                        var hashValuesObj = repo.GetReport();
                        foreach (var hashtype in hashValuesObj)
                        {
                            hashedValues.Add(hashtype.HashValue);
                        }
                        Debug.WriteLine(hashedValues);
                        if (hashedValues.Contains(sendCheckSum))
                        {
                            exists.Add(1);
                        }
                        else
                        {
                            exists.Add(0);
                        }
                        Debug.WriteLine(exists);
                        // return exists;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        logData.Error(e.Message);
                        return(null);
                    }
                }

                //  return exists;
            }
            return(exists);
        }
        public string GetAssayInDB()
        {
            IEnumerable <long> container      = null;
            List <AssayType>   assayContainer = new List <AssayType>();

            List <AssayType> toReturn = new List <AssayType>();

            using (var repo = new CurveFilesRepository())
            {
                container = repo.GetUniqueTypeID();
            }
            var assayRepo = new AssayRepository();

            foreach (var item in container)
            {
                assayContainer.Add(assayRepo.GetAssayUsingTypeID(item));
            }

            return(JsonConvert.SerializeObject(assayContainer));
        }
        public string Get()
        {
            log.Info("getAssay method is called");
            IEnumerable <AssayType> container = null;
            var toReturn = new List <AssayCount>();

            var repo      = new AssayRepository();
            var curveRepo = new CurveFilesRepository();

            container = repo.GetAssay();
            foreach (var item in container)
            {
                toReturn.Add(new AssayCount
                {
                    assay     = item,
                    fileCount = curveRepo.GetCountOfCurve(item.TypeId)
                });
            }
            log.Info("getAssay method is finished");
            return(JsonConvert.SerializeObject(toReturn));
        }
Beispiel #7
0
        // GET: api/AssayNamesReportFile
        public IEnumerable <object> Get()
        {
            logData.Info("Get Assay Name from Report File Function is called");
            // getting assay id from the database table( ReportFile)
            using (var repo = new AssayRepository())
            {
                try
                {
                    List <DisplayClass> objectAssay = new List <DisplayClass>();
                    List <long>         ids         = new List <long>();
                    List <long>         typeId      = new List <long>();
                    List <string>       assayNames  = new List <string>();
                    var assayobject = repo.GetAssayNameFromReportFile();
                    foreach (var assayName in assayobject)
                    {
                        DisplayClass ds = new DisplayClass();
                        ids.Add(assayName.AssayTypeId);
                        ds.Id = assayName.AssayTypeId;
                    }

                    //Using the assayId getting back the assay names
                    foreach (var assayid in ids)
                    {
                        DisplayClass ds = new DisplayClass();
                        ds.AssayName = repo.GetAssayName(assayid);
                        ds.TypeId    = repo.GetTypeIdWithID(assayid);
                        objectAssay.Add(ds);
                    }
                    return(objectAssay);
                }

                catch (SqlException odbcEx)
                {
                    Console.WriteLine(odbcEx.Message);
                    logData.Error(odbcEx.Message);
                    return(null);
                }
            }
        }
        public string Get(Boolean IsGolden, string Tag, string AssayVersion, string SoftwareVersion, int AssayID)
        {
            long   AssayDBID;
            string AssayName = "";

            //Assay name is specified
            if (AssayID != -1)
            {
                using (var repo = new AssayRepository())
                {
                    AssayDBID = repo.GetTypeIdWithID(AssayID);
                    AssayName = repo.GetAssayName(AssayID);
                }
            }
            else
            {
                AssayDBID = -1;
            }
            var files = new List <Pair>();

            if (Tag == "undefined")
            {
                Tag = "";
            }
            if (AssayVersion == "undefined")
            {
                AssayVersion = "";
            }
            if (SoftwareVersion == "undefined")
            {
                SoftwareVersion = "";
            }

            using (var repo = new CurveFilesRepository())
            {
                var tempContainer = repo.GetSpecifiedFile(IsGolden, Tag, AssayVersion, SoftwareVersion, AssayDBID);
                if (tempContainer.Count <CurveFile>() == 0)
                {
                    return(JsonConvert.SerializeObject("No Matching Curve File Found"));
                }
                else
                {
                    var service   = new CurveDataPointService();
                    var assayRepo = new AssayRepository();


                    foreach (var temp in tempContainer)
                    {
                        var container = service.getCurveData(temp.Data, temp.FullFileName);

                        if (AssayDBID == -1)
                        {
                            AssayName = assayRepo.GetAssayNameUsingTypeID(temp.AssayDBID);
                        }

                        files.Add(new Pair
                        {
                            AssayName = AssayName,
                            curveFile = temp,
                            data      = container.dataSet,
                            FileType  = container.FileType
                        });
                    }
                }
            }
            return(JsonConvert.SerializeObject(files));
        }
Beispiel #9
0
        // POST: api/ExtractAssayName
        public IEnumerable <string> Post()
        {
            /*  lock (ControllerSync)
             * {
             */
            List <string> assayNames = new List <string>();

            for (var i = 0; i < HttpContext.Current.Request.Files.Count; i++)
            {
                int flag = 0;
                logData.Info("Get all files from the staged area to extract assayname");
                HttpPostedFile file            = HttpContext.Current.Request.Files.Get(i);
                string         filename        = file.FileName;
                var            tempPathToStore = Path.GetTempPath();
                tempPathToStore += "assaynames";
                System.IO.Directory.CreateDirectory(tempPathToStore);
                //save the file in temp folder
                file.SaveAs(tempPathToStore + file.FileName);
                //getting the path of stored file
                var    tempStoredPath = tempPathToStore + file.FileName;
                var    tempfilename   = filename.Replace(".pdf", ".txt");
                string pathToText     = System.IO.Path.Combine(tempPathToStore, tempfilename);
                //Convert PDF file to Text file
                SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
                f.OpenPdf(tempStoredPath);
                if (f.PageCount > 0)
                {
                    int count = 0;
                    try
                    {
                        string line;
                        //getting assaynames from database
                        var           repo       = new AssayRepository();
                        List <string> assaylist1 = new List <string>();
                        //string[] assayFromDb;
                        var assaynamesobj = repo.GetAssay();
                        foreach (var assaytype in assaynamesobj)
                        {
                            string assayname = assaytype.AssayShortName;
                            assaylist1.Add(assayname);
                        }
                        string[] assaylistFromDB = assaylist1.ToArray();
                        foreach (var ind in assaylistFromDB)
                        {
                            Debug.WriteLine(ind);
                        }
                        //string[] assaylist1 = { "AC2", "AC2 250  (1)", "AdV/hMPV/RV", "Babesia", "C. diff", "CT", "CT 250", "DENV", "dHBV", "dHCV", "dHIV", "DNA60", "Flu A/B/RSV", "GBS", "GC", "GC 250  (6)", "GT HPV", "HEV", "HPV", "HPV 250  (14)", "HSV 1&2", "LDT RT TMA-1", "LDT RT TMA-2", "LDT RT TMA-3", "LDT TMA-1", "LDT TMA-2", "LDT TMA-3", "LDT1", "M gen", "MRSA", "OADNA55", "OADNA58", "OADNA62", "OADNA65", "Paraflu", "Parvo/HAV", "PSA 100", "QCDNAIC", "QCFluPPR", "QCRNAIC", "qHBV", "qHCV", "qHIV-1", "RNA60", "RNA60-10uL", "TRICH", "TRICH 250  (10)", "Ultrio Elite", "WNV", "ZIKV", "ZIKV  (51)" };
                        string[] assaylist2 = { "AC2 100  (21)", "AC2 250  (1)", "AdV/hMPV/RV  (102)", "Babesia  (50)", "C. diff  (108)", "CT 100  (22)", "CT 250  (5)", "DENV  (36)", "dHBV  (97)", "dHCV  (98)", "dHIV  (99)", "DNA60  (1507)", "Flu A/B/RSV  (101)", "GBS  (106)", "GC 100  (23)", "GC 250  (6)", "GT HPV  (20)", "HEV  (39)", "HPV 100  (24)", "HPV 250  (14)", "HSV 1&2  (40)", "LDT RT TMA-1  (90)", "LDT RT TMA-2  (91)", "LDT RT TMA-3  (92)", "LDT TMA-1  (95)", "LDT TMA-2  (88)", "LDT TMA-3  (89)", "LDT1  (1001)", "M gen  (43)", "MRSA  (107)", "OADNA55  (1505)", "OADNA58  (1506)", "OADNA62  (1508)", "OADNA65  (1509)", "Paraflu  (103)", "Parvo/HAV  (29)", "PSA 100  (31)", "QCDNAIC  (1501)", "QCFluPPR  (1503)", "QCRNAIC  (1502)", "qHBV  (34)", "qHCV  (32)", "qHIV-1  (28)", "RNA60  (1510)", "RNA60-10uL  (1512)", "TRICH 100  (9)", "TRICH 250  (10)", "Ultrio Elite  (25)", "WNV  (4)", "ZIKV  (52)", "ZIKV  (51)" };
                        int      result     = f.ToText(pathToText);
                        if (result == 0)
                        {
                            var lineCount = File.ReadLines(pathToText).Count();
                            Debug.WriteLine(lineCount);
                            FileStream inFile = new FileStream(pathToText, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                            using (StreamReader sr = new StreamReader(inFile))
                            {
                                while ((line = sr.ReadLine()) != null)
                                {
                                    count++;
                                    foreach (string word in assaylist1)
                                    {
                                        if (line.Contains(word))
                                        {
                                            var indexOfAssay       = Array.IndexOf(assaylistFromDB, word);
                                            var assayNameExtracted = assaylist2[indexOfAssay];
                                            assayNames.Add(assayNameExtracted);
                                            flag = 1;
                                            break;
                                        }
                                    }
                                    if (flag == 1)
                                    {
                                        break;
                                    }
                                }
                                Debug.WriteLine(count);
                                if (count == lineCount)
                                {
                                    var assayNameExtracted = "Choose AssayName";
                                    assayNames.Add(assayNameExtracted);
                                }
                            }
                            if (assayNames[i] == "")
                            {
                                assayNames.Add("Choose AssayName");
                            }
                        }
                        logData.Info("Returning the assay name");
                    }
                    catch (Exception e)
                    {
                        logData.Error(e.Message);
                    }
                    f.ClosePdf();
                }
                else
                {
                    assayNames.Add("Choose AssayName");
                }
            }
            return(assayNames);
            // }
        }
Beispiel #10
0
        public string getAssayFromFile(Byte[] byteFile, string fileName)
        {
            var delim = new[] { '"' };

            fileName = Regex.Unescape(fileName);
            fileName = fileName.TrimEnd(delim).TrimStart(delim);

            var tempPath     = Path.GetTempPath();
            var tempPathFile = Path.Combine(tempPath, fileName);

            File.WriteAllBytes(tempPathFile, byteFile);

            var repo = new AssayRepository();

            var typeID = "";

            using (var streamReader = new StreamReader(tempPathFile))
            {
                var firstLine  = streamReader.ReadLine();
                var secondLine = streamReader.ReadLine();

                if (firstLine == null || secondLine == null)
                {
                    return("Invalid");
                }

                var lowerFirstLine = firstLine.ToLower();

                string[] seperatedValueFirst = lowerFirstLine.Split(',');

                if (lowerFirstLine.Contains("sampleid") &&
                    (lowerFirstLine.Contains("testorderid") || lowerFirstLine.Contains("testorder id")))
                {
                    //RPTool files
                    if (seperatedValueFirst.Length == 9)
                    {
                        List <string> firstColHolder = new List <string>();
                        var           newStream      = new StreamReader(tempPathFile);
                        while (!newStream.EndOfStream)
                        {
                            var      newLine      = newStream.ReadLine();
                            String[] seperatedVal = newLine.Split(',');
                            firstColHolder.Add(seperatedVal[0]);
                        }

                        //check the string with number
                        for (var index = 0; index < firstColHolder.Count; index++)
                        {
                            var charArr = firstColHolder[index].ToCharArray();
                            if (Char.IsNumber(charArr[0]))
                            {
                                typeID = charArr[0].ToString();
                                typeID = typeID.Insert(1, charArr[1].ToString());
                                var toReturn = repo.GetAssayNameUsingTypeID(Int32.Parse(typeID));
                                return(toReturn);
                            }
                        }
                    }
                    //TCycle and some versions of .curve
                    if (lowerFirstLine.Contains("cyclenum"))
                    {
                        String[] seperatedValue = secondLine.Split(',');
                        //TCYC
                        if (seperatedValue.Length != 15)
                        {
                            typeID = seperatedValue[7];
                        }
                        //.Curve
                        else
                        {
                            typeID = seperatedValue[6];
                        }
                        var toReturn = repo.GetAssayNameUsingTypeID(Int32.Parse(typeID));
                        //If assay are outdated
                        if (toReturn == "")
                        {
                            return("Invalid-Outdated");
                        }
                        return(toReturn);
                    }
                    //Fluorescence curve
                    else if (lowerFirstLine.Contains("rtf"))
                    {
                        String[] seperatedValue = secondLine.Split(';');

                        var Assay = seperatedValue[2];

                        String[] assayNumber = seperatedValue[2].Split(',');

                        var AssayDBID = assayNumber[0];

                        var toReturn = repo.GetAssayNameUsingTypeID(Int32.Parse(AssayDBID));
                        //If assay are outdated
                        if (toReturn == "")
                        {
                            return("Invalid-Outdated");
                        }
                        return(toReturn);
                    }
                }
                //validates FLUO.csv file
                else if (seperatedValueFirst.Length == 19)
                {
                    var typeIDStr = seperatedValueFirst[8];
                    var toReturn  = repo.GetAssayNameUsingTypeID(Int32.Parse(typeIDStr));
                    //If assay are outdated
                    if (toReturn == "")
                    {
                        return("Invalid-Outdated");
                    }
                    return(toReturn);
                }
                //validates LUMI.csv file
                else
                {
                    var typeIDStr = "";
                    if (seperatedValueFirst.Length > 5)
                    {
                        if (seperatedValueFirst[5] != null)
                        {
                            var numOfDataPts = seperatedValueFirst[5];
                            typeIDStr = seperatedValueFirst[Int32.Parse(numOfDataPts) + 8];
                        }
                        else
                        {
                            return("Invalid");
                        }
                        var toReturn = repo.GetAssayNameUsingTypeID(Int32.Parse(typeIDStr));
                        //If assay are outdated
                        if (toReturn == "")
                        {
                            return("Invalid-Outdated");
                        }
                        return(toReturn);
                    }
                }
            }
            return("Invalid");
        }
Beispiel #11
0
        public PairResponse ValidateFile(Byte [] byteFile, string fileName, string AssayName)
        {
            var delim = new[] { '"' };

            AssayName = Regex.Unescape(AssayName);
            AssayName = AssayName.TrimEnd(delim).TrimStart(delim);

            var tempPath     = Path.GetTempPath();
            var tempPathFile = Path.Combine(tempPath, fileName);

            File.WriteAllBytes(tempPathFile, byteFile);

            using (var streamReader = new StreamReader(tempPathFile))
            {
                var    firstLine       = streamReader.ReadLine();
                var    secondLine      = streamReader.ReadLine();
                var    lowerFirstLine  = firstLine.ToLower();
                string lowerSecondLine = "";
                if (secondLine != null)
                {
                    lowerSecondLine = secondLine.ToLower();
                }
                else
                {
                    return(new PairResponse {
                        Indicator = false, message = "^Curve File has no content"
                    });
                }
                long TypeId;

                //parse
                String[] seperatedValue = firstLine.Split(',');

                //validates TCYC, .curve, LUMI.RPTool, FLUO.RPTool
                if (lowerFirstLine.Contains("sampleid") &&
                    (lowerFirstLine.Contains("testorderid") || lowerFirstLine.Contains("testorder id")))
                {
                    using (var repo = new AssayRepository())
                    {
                        TypeId = repo.GetAssayTypeId(AssayName);
                    }
                    //RPTool files
                    if (seperatedValue.Length == 9)
                    {
                        List <string> firstColHolder = new List <string>();
                        var           newStream      = new StreamReader(tempPathFile);
                        while (!newStream.EndOfStream)
                        {
                            var      newLine      = newStream.ReadLine();
                            String[] seperatedVal = newLine.Split(',');
                            firstColHolder.Add(seperatedVal[0]);
                        }

                        //check the string with number
                        for (var index = 0; index < firstColHolder.Count; index++)
                        {
                            var charArr = firstColHolder[index].ToCharArray();
                            if (Char.IsNumber(charArr[0]))
                            {
                                //TODO get index 0 and 1 and combine them
                                string typeID = charArr[0].ToString();
                                typeID = typeID.Insert(1, charArr[1].ToString());

                                return(new PairResponse {
                                    Indicator = true, message = ""
                                });
                            }
                        }
                        return(new PairResponse {
                            Indicator = false, message = "^Curve does not match Assay type"
                        });
                    }
                    //TCycle curve
                    if (lowerFirstLine.Contains("cyclenum"))
                    {
                        if (TypeId > 99)
                        {
                            if (lowerSecondLine.Contains(AssayName.ToLower()) && lowerSecondLine != null)
                            {
                                return(new PairResponse {
                                    Indicator = true, message = ""
                                });
                            }
                        }
                        return(new PairResponse {
                            Indicator = false, message = "^Curve does not match Assay type"
                        });
                        //Fluorescence curve
                    }
                    else if (lowerFirstLine.Contains("rtf"))
                    {
                        if (TypeId < 100 && lowerSecondLine != null)
                        {
                            return(new PairResponse {
                                Indicator = true, message = ""
                            });
                        }
                        else
                        {
                            return(new PairResponse {
                                Indicator = false, message = "^Curve does not match Assay type"
                            });
                        }
                    }
                    //Else
                    else if (lowerFirstLine.Contains("rfu"))
                    {
                        if (TypeId < 100 && lowerSecondLine != null)
                        {
                            return(new PairResponse {
                                Indicator = true, message = ""
                            });
                        }
                        else
                        {
                            return(new PairResponse {
                                Indicator = false, message = "^Curve does not match Assay type"
                            });
                        }
                    }
                }
                //validates FLUO.csv file
                else if (seperatedValue.Length == 19)
                {
                    //TODO validate if mapped correctly
                    var typeIDStr = seperatedValue[8];
                    return(new PairResponse {
                        Indicator = true, message = ""
                    });
                }
                //validates LUMI.csv file
                else
                {
                    var typeIDStr = "";
                    if (seperatedValue.Length > 5)
                    {
                        if (seperatedValue[5] != null)
                        {
                            var numOfDataPts = seperatedValue[5];
                            typeIDStr = seperatedValue[Int32.Parse(numOfDataPts) + 8];
                            return(new PairResponse {
                                Indicator = true, message = ""
                            });
                        }
                        else
                        {
                            return(new PairResponse {
                                Indicator = false, message = "^Invalid Curve File"
                            });
                        }
                    }
                }
            }
            return(new PairResponse {
                Indicator = false, message = "^Invalid Curve File"
            });
        }