public void AddPatientVariantsToCollection(patient_result_collections collection, List<patient_variants> patientVariants) { foreach (var variant in patientVariants) { var member = new patient_result_members() { collection_id = collection.id, member_id = variant.id, member_type = Enums.ResultMemberType.Variant, }; entities.patient_result_members.Add(member); } entities.SaveChanges(); }
public patient_result_collections AddResult(patient patient, result_files file, string name, string value, string externalId, string externalSource, DateTime resultedOn) { // First, identify the reference phenotype and if it exists var phenotype = (from pheno in entities.phenotypes where pheno.name == name && pheno.value == value select pheno).FirstOrDefault(); if (phenotype == null) { phenotype = new phenotype() { name = name, value = value, external_source = externalSource, external_id = externalId }; entities.phenotypes.Add(phenotype); entities.SaveChanges(); } // Now add the patient phenotype var patientPhenotype = new patient_phenotypes() { phenotype = phenotype, resulted_on = resultedOn }; entities.patient_phenotypes.Add(patientPhenotype); entities.SaveChanges(); // Add the patient result collection for this entry var collection = patientRepo.AddCollection(patient, file); // Finally, link the collection to the phenotype var member = new patient_result_members() { collection_id = collection.id, member_id = patientPhenotype.id, member_type = Enums.ResultMemberType.Phenotype, }; entities.patient_result_members.Add(member); entities.SaveChanges(); return collection; }
public patient_result_collections AddSnps(patient patient, result_files file, DateTime resultedOn, List<SnpResult> snps) { // Create a collection var collection = patientRepo.AddCollection(patient, file); // Create patient variant entries List<patient_variants> variants = new List<patient_variants>(); foreach (var snp in snps) { var variant = GetVariant(snp.RSID, "dbSNP", snp.Position, snp.Position); var patientVariant = new patient_variants() { patient_id = patient.id, variant_type = Enums.PatientVariantType.SNP, reference_id = variant.id, resulted_on = resultedOn, value1 = snp.Genotype[0].ToString(), value2 = snp.Genotype[1].ToString() }; variants.Add(patientVariant); } entities.patient_variants.AddRange(variants); entities.SaveChanges(); // Finally, link the collection to the SNPs foreach (var variant in variants) { var member = new patient_result_members() { collection_id = collection.id, member_id = variant.id, member_type = Enums.ResultMemberType.Variant, }; entities.patient_result_members.Add(member); } entities.SaveChanges(); return collection; }
public patient_result_collections AddStarVariants(patient patient, result_files file, DateTime resultedOn, List<StarVariantResult> stars) { // Create a collection var collection = patientRepo.AddCollection(patient, file); // Create patient variant entries List<patient_variants> variants = new List<patient_variants>(); foreach (var star in stars) { var gene = AddGene(star.Gene, star.Gene, null, null, null); var variant = AddVariant(star.Gene, star.Result, "Star Variant", null, null, null, null, null); string[] splitStars = star.Result.Split(new string[]{"*"}, StringSplitOptions.RemoveEmptyEntries); var patientVariant = new patient_variants() { patient_id = patient.id, variant_type = Enums.PatientVariantType.StarVariant, reference_id = variant.id, resulted_on = resultedOn, value1 = splitStars[0], value2 = splitStars[1] }; variants.Add(patientVariant); } entities.patient_variants.AddRange(variants); entities.SaveChanges(); // Finally, link the collection to the stars foreach (var variant in variants) { var member = new patient_result_members() { collection_id = collection.id, member_id = variant.id, member_type = Enums.ResultMemberType.Variant, }; entities.patient_result_members.Add(member); } entities.SaveChanges(); return collection; }