Esempio n. 1
0
        protected result_files AddResultFile(string filePath, result_sources source)
        {
            string hash = GetFileHash(filePath);

            var file = new result_files()
            {
                md5 = hash,
                name = filePath,
                received_on = DateTime.Now,
                result_source_id = source.id
            };
            return fileRepo.AddResultFile(file);
        }
Esempio n. 2
0
        public result_entities AddPhenotype(result_files resultFile, patient patient, attribute attribute, DateTime? resultedOn)
        {
            result_entities rootEntity = new result_entities()
            {
                patient_id = patient.id,
                result_file_id = resultFile.id,
                attribute_id = attribute.id,
            };

            result_entities resultedOnEntity = new result_entities()
            {
                patient_id = patient.id,
                result_file_id = resultFile.id,
                attribute_id = GetAttribute(null, null, "Resulted on", null).id,
                parent = rootEntity,
                value_date_time = resultedOn
            };

            entities.result_entities.AddRange(new[] { rootEntity, resultedOnEntity });
            entities.SaveChanges();
            return rootEntity;
        }
Esempio n. 3
0
 public result_files AddResultFile(result_files file)
 {
     entities.result_files.Add(file);
     entities.SaveChanges();
     return file;
 }
Esempio n. 4
0
        public result_entities[] AddSnps(result_files resultFile, patient patient, DateTime? resultedOn, List<SnpResult> snps)
        {
            var results = new List<result_entities>();
            var snpAlleleAttributeId = GetAttribute(null, null, "SNP allele", null).id;
            var referenceBaseAttributeId = GetAttribute(null, null, "Reference base", null).id;
            var resultedOnAttributeId = GetAttribute(null, null, "Resulted on", null).id;
            foreach (var snp in snps)
            {
                var entityParts = new List<result_entities>();
                result_entities rootEntity = new result_entities()
                {
                    patient_id = patient.id,
                    result_file_id = resultFile.id,
                    attribute_id = GetAttribute(snp.RSID, "dbSNP", snp.RSID, snp.RSID).id,
                };

                result_entities resultedOnEntity = new result_entities()
                {
                    patient_id = patient.id,
                    result_file_id = resultFile.id,
                    attribute_id = resultedOnAttributeId,
                    parent = rootEntity,
                    value_date_time = resultedOn
                };

                result_entities referenceBaseEntity = new result_entities()
                {
                    patient_id = patient.id,
                    result_file_id = resultFile.id,
                    attribute_id = referenceBaseAttributeId,
                    parent = rootEntity,
                    value_short_text = snp.ReferenceBase
                };

                result_entities allele1Entity = new result_entities()
                {
                    patient_id = patient.id,
                    result_file_id = resultFile.id,
                    attribute_id = snpAlleleAttributeId,
                    parent = rootEntity,
                    value_short_text = snp.Genotype[0].ToString()
                };

                result_entities allele2Entity = new result_entities()
                {
                    patient_id = patient.id,
                    result_file_id = resultFile.id,
                    attribute_id = snpAlleleAttributeId,
                    parent = rootEntity,
                    value_short_text = snp.Genotype[1].ToString()
                };

                entities.result_entities.AddRange(new[] { rootEntity, resultedOnEntity, referenceBaseEntity, allele1Entity, allele2Entity });
                results.Add(rootEntity);
            }

            entities.SaveChanges();
            return results.ToArray();
        }
Esempio n. 5
0
        public result_entities[] AddStarVariants(patient patient, result_files resultFile, DateTime resultedOn, List<StarVariantResult> stars)
        {
            var results = new List<result_entities>();
            foreach (var star in stars)
            {
                var entityParts = new List<result_entities>();
                result_entities rootEntity = new result_entities()
                {
                    patient_id = patient.id,
                    result_file_id = resultFile.id,
                    attribute_id = GetAttribute(star.Gene, "HGNC", star.Gene, star.Gene).id
                };
                entityParts.Add(rootEntity);

                result_entities resultedOnEntity = new result_entities()
                {
                    patient_id = patient.id,
                    result_file_id = resultFile.id,
                    attribute_id = GetAttribute(null, null, "Resulted on", null).id,
                    parent = rootEntity,
                    value_date_time = resultedOn
                };
                entityParts.Add(resultedOnEntity);

                string[] splitStars = star.Result.Split(new string[] { "*" }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var value in splitStars)
                {
                    result_entities alleleEntity = new result_entities()
                    {
                        patient_id = patient.id,
                        result_file_id = resultFile.id,
                        attribute_id = GetAttribute(null, null, "Star allele", null).id,
                        parent = rootEntity,
                        value_short_text = value
                    };
                    entityParts.Add(alleleEntity);
                }

                entities.result_entities.AddRange(entityParts);
                results.Add(rootEntity);
            }

            entities.SaveChanges();
            return results.ToArray();
        }
Esempio n. 6
0
        private List<string> GetPhenotypeDetailsForStar(result_files file, string phenotype)
        {
            List<string> details = new List<string>();
            var geneIds = GetGeneFilterForPhenotype(phenotype);
            if (geneIds == null)
            {
                return details;
            }

            var results = (from re in entities.result_entities
                           join parentEnt in entities.result_entities on re.parent_id equals parentEnt.id
                           join attr in entities.attributes on parentEnt.attribute_id equals attr.id
                           where geneIds.Contains(attr.id)
                            && re.result_file_id == file.id && re.attribute_id == 129
                           select new DetailResult() { AttributeName = attr.name, Result = re }).ToArray();

            string currentGene = "";
            foreach (var result in results)
            {
                if (string.IsNullOrEmpty(currentGene))
                {
                    details.Add(string.Format("<div>{0}: *{1}", result.AttributeName, FormatResultEntityValue(result.Result)));
                }
                else if (currentGene != result.AttributeName)
                {
                    details.Add(string.Format("</div><div>{0}: {1}", result.AttributeName, FormatResultEntityValue(result.Result)));
                }
                else
                {
                    details.Add(string.Format("/*{0}", FormatResultEntityValue(result.Result)));
                }

                currentGene = result.AttributeName;
            }
            details.Add("</div>");

            return details;
        }
Esempio n. 7
0
        private List<string> GetPhenotypeDetailsForSNP(result_files file, string phenotype)
        {
            List<string> details = new List<string>();
            var geneIds = GetGeneFilterForPhenotype(phenotype);
            if (geneIds == null)
            {
                return details;
            }

            var results = (from valRes in entities.result_entities
                           join varRes in entities.result_entities on valRes.parent_id equals varRes.id
                           join attr in entities.attributes on varRes.attribute_id equals attr.id
                           join rel in entities.attribute_relationships on attr.id equals rel.attribute1_id
                           where rel.relationship_id == 5 && geneIds.Contains(rel.attribute2_id) && varRes.result_file_id == file.id
                             && (valRes.attribute_id == 128 || valRes.attribute_id == 129)
                           orderby attr.name
                           select new DetailResult() { AttributeName = attr.name, Result = valRes }).ToArray();

            string currentVariant = "";
            foreach (var result in results)
            {
                if (string.IsNullOrEmpty(currentVariant))
                {
                    details.Add(string.Format("<div>{0}: {1}", result.AttributeName, FormatResultEntityValue(result.Result)));
                }
                else if (currentVariant != result.AttributeName)
                {
                    details.Add(string.Format("</div><div>{0}: {1}", result.AttributeName, FormatResultEntityValue(result.Result)));
                }
                else
                {
                    details.Add(FormatResultEntityValue(result.Result));
                }

                currentVariant = result.AttributeName;
            }
            details.Add("</div>");

            return details;
        }
Esempio n. 8
0
        private List<string> GetPhenotypeDetails(result_files file, string phenotype)
        {
            List<string> details = new List<string>();
            var geneIds = GetGeneFilterForPhenotype(phenotype);
            if (geneIds == null)
            {
                return details;
            }

            var results = (from re in entities.result_entities
                           join attr in entities.attributes on re.attribute_id equals attr.id
                           join phenRel in entities.attribute_relationships on attr.id equals phenRel.attribute1_id
                           join phenAttr in entities.attributes on phenRel.attribute2_id equals phenAttr.id
                           join geneRel in entities.attribute_relationships on phenRel.attribute2_id equals geneRel.attribute1_id
                           where phenRel.relationship_id == 2 && geneIds.Contains(geneRel.attribute2_id) && geneRel.relationship_id == 3
                            && re.result_file_id == file.id
                           select new List<string>() { phenAttr.name, attr.name }).ToArray();

            List<string> uniqueValues = new List<string>();
            foreach (var result in results)
            {
                string value = string.Format("<div>{0}: {1}</div>", result[0], result[1]);
                if (!uniqueValues.Contains(value))
                {
                    details.Add(value);
                    uniqueValues.Add(value);
                }

            }

            return details;
        }