github.com/Bio-core/jtree@v0.0.0-20190705165106-1d7a7e7d6272/repos/sample_repo.go (about) 1 package repos 2 3 import ( 4 "fmt" 5 "log" 6 7 database "github.com/Bio-core/jtree/database" 8 "github.com/Bio-core/jtree/models" 9 ) 10 11 //GetAllSamples gets all and results a list of samples 12 func GetAllSamples(query string) []*models.Record { 13 samples := []*models.Record{} 14 err := database.DBSelect.Select(&samples, query) 15 if err != nil { 16 fmt.Println(err) 17 return nil 18 } 19 return samples 20 } 21 22 //InsertSample allows users to add generic objects to a collection in the database 23 func InsertSample(sample *models.Sample) bool { 24 stmt, err := database.DBUpdate.Prepare("INSERT INTO `samples` (`sample_id`, `facility`, `test_requested`, `se_num`, `date_collected`, `date_received`, `sample_type`, `material_received`, `material_received_num`, `material_received_other`, `volume_of_blood_marrow`, `surgical_num`, `tumor_site`, `historical_diagnosis`, `tumor_percnt_of_total`, `tumor_percnt_of_circled`, `reviewed_by`, `h_e_slide_location`, `non_uhn_id`, `name_of_requestor`, `dna_concentration`, `dna_volume`, `dna_location`, `rna_concentration`, `rna_volume`, `rna_location`, `wbc_location`, `plasma_location`, `cf_plasma_location`, `pb_bm_location`, `rna_lysate_location`, `sample_size`, `study_id`, `sample_name`, `date_submitted`, `container_type`, `container_name`, `container_id`, `container_well`, `copath_num`, `other_identifier`, `has_sample_files`, `dna_sample_barcode`, `dna_extraction_date`, `dna_quality`, `ffpe_qc_date`, `delta_ct_value`, `comments`, `rnase_p_date`, `dna_quality_by_rnase_p`, `rna_quality`, `rna_extraction_date`, `patient_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); ") 25 26 if err != nil { 27 log.Fatal(err) 28 } 29 _, err = stmt.Exec( 30 sample.SampleID, 31 sample.Facility, 32 sample.TestRequested, 33 sample.SeNum, 34 sample.DateCollected.Format(shortForm), 35 sample.DateReceived.Format(shortForm), 36 sample.SampleType, 37 sample.MaterialReceived, 38 sample.MaterialReceivedNum, 39 sample.MaterialReceivedOther, 40 sample.VolumeOfBloodMarrow, 41 sample.SurgicalNum, 42 sample.TumorSite, 43 sample.HistoricalDiagnosis, 44 sample.TumorPercntOfTotal, 45 sample.TumorPercntOfCircled, 46 sample.ReviewedBy, 47 sample.HESlideLocation, 48 sample.NonUhnID, 49 sample.NameOfRequestor, 50 sample.DnaConcentration, 51 sample.DnaVolume, 52 sample.DnaLocation, 53 sample.RnaConcentration, 54 sample.RnaVolume, 55 sample.RnaLocation, 56 sample.WbcLocation, 57 sample.PlasmaLocation, 58 sample.CfPlasmaLocation, 59 sample.PbBmLocation, 60 sample.RnaLysateLocation, 61 sample.SampleSize, 62 sample.StudyID, 63 sample.SampleName, 64 sample.DateSubmitted.Format(shortForm), 65 sample.ContainerType, 66 sample.ContainerName, 67 sample.ContainerID, 68 sample.ContainerWell, 69 sample.CopathNum, 70 sample.OtherIdentifier, 71 sample.HasSampleFiles, 72 sample.DnaSampleBarcode, 73 sample.DnaExtractionDate, 74 sample.DnaQuality, 75 sample.FfpeQcDate, 76 sample.DeltaCtValue, 77 sample.Comments, 78 sample.RnasePDate.Format(shortForm), 79 sample.DnaQualityByRnaseP, 80 sample.RnaQuality, 81 sample.RnaExtractionDate.Format(shortForm), 82 sample.PatientID) 83 stmt.Close() 84 if err != nil { 85 fmt.Println(err) 86 return false 87 } 88 return true 89 } 90 91 //GetSampleByID gets all and results a list of samples 92 func GetSampleByID(ID string) *models.Sample { 93 samples := []*models.Sample{} 94 query := models.Query{} 95 query.SelectedFields = make([]string, 0) 96 query.SelectedFields = append(query.SelectedFields, "*") 97 query.SelectedTables = make([]string, 0) 98 query.SelectedTables = append(query.SelectedTables, "samples") 99 query.SelectedCondition = make([][]string, 0) 100 //query.SelectedCondition = append(query.SelectedCondition, make([]string, 0)) 101 conditions := []string{"AND", "samples.sample_id", "Equal to", ID} 102 query.SelectedCondition = append(query.SelectedCondition, conditions) 103 104 queryString := database.BuildQuery(query) 105 err := database.DBSelect.Select(&samples, queryString) 106 if err != nil { 107 fmt.Println(err) 108 return nil 109 } 110 if len(samples) == 0 { 111 return nil 112 } 113 return samples[0] 114 } 115 116 //UpdateSample allows users to update generic objects to a collection in the database 117 func UpdateSample(sample *models.Sample) bool { 118 stmt, err := database.DBUpdate.Prepare("UPDATE `samples` SET `sample_id` = ?,`facility` = ?,`test_requested` = ?,`se_num` = ?,`date_collected` = ?,`date_received` = ?,`sample_type` = ?,`material_received` = ?,`material_received_num` = ?,`material_received_other` = ?,`volume_of_blood_marrow` = ?,`surgical_num` = ?,`tumor_site` = ?,`historical_diagnosis` = ?,`tumor_percnt_of_total` = ?,`tumor_percnt_of_circled` = ?,`reviewed_by` = ?,`h_e_slide_location` = ?,`non_uhn_id` = ?,`name_of_requestor` = ?,`dna_concentration` = ?,`dna_volume` = ?,`dna_location` = ?,`rna_concentration` = ?,`rna_volume` = ?,`rna_location` = ?,`wbc_location` = ?,`plasma_location` = ?,`cf_plasma_location` = ?,`pb_bm_location` = ?,`rna_lysate_location` = ?,`sample_size` = ?,`study_id` = ?,`sample_name` = ?,`date_submitted` = ?,`container_type` = ?,`container_name` = ?,`container_id` = ?,`container_well` = ?,`copath_num` = ?,`other_identifier` = ?,`has_sample_files` = ?,`dna_sample_barcode` = ?,`dna_extraction_date` = ?,`dna_quality` = ?,`ffpe_qc_date` = ?,`delta_ct_value` = ?,`comments` = ?,`rnase_p_date` = ?,`dna_quality_by_rnase_p` = ?,`rna_quality` = ?,`rna_extraction_date` = ?,`patient_id` = ? WHERE `sample_id` = ?;") 119 120 if err != nil { 121 log.Fatal(err) 122 } 123 _, err = stmt.Exec( 124 sample.SampleID, 125 sample.Facility, 126 sample.TestRequested, 127 sample.SeNum, 128 sample.DateCollected.Format(shortForm), 129 sample.DateReceived.Format(shortForm), 130 sample.SampleType, 131 sample.MaterialReceived, 132 sample.MaterialReceivedNum, 133 sample.MaterialReceivedOther, 134 sample.VolumeOfBloodMarrow, 135 sample.SurgicalNum, 136 sample.TumorSite, 137 sample.HistoricalDiagnosis, 138 sample.TumorPercntOfTotal, 139 sample.TumorPercntOfCircled, 140 sample.ReviewedBy, 141 sample.HESlideLocation, 142 sample.NonUhnID, 143 sample.NameOfRequestor, 144 sample.DnaConcentration, 145 sample.DnaVolume, 146 sample.DnaLocation, 147 sample.RnaConcentration, 148 sample.RnaVolume, 149 sample.RnaLocation, 150 sample.WbcLocation, 151 sample.PlasmaLocation, 152 sample.CfPlasmaLocation, 153 sample.PbBmLocation, 154 sample.RnaLysateLocation, 155 sample.SampleSize, 156 sample.StudyID, 157 sample.SampleName, 158 sample.DateSubmitted.Format(shortForm), 159 sample.ContainerType, 160 sample.ContainerName, 161 sample.ContainerID, 162 sample.ContainerWell, 163 sample.CopathNum, 164 sample.OtherIdentifier, 165 sample.HasSampleFiles, 166 sample.DnaSampleBarcode, 167 sample.DnaExtractionDate.Format(shortForm), 168 sample.DnaQuality, 169 sample.FfpeQcDate.Format(shortForm), 170 sample.DeltaCtValue, 171 sample.Comments, 172 sample.RnasePDate.Format(shortForm), 173 sample.DnaQualityByRnaseP, 174 sample.RnaQuality, 175 sample.RnaExtractionDate.Format(shortForm), 176 sample.PatientID, 177 sample.SampleID) 178 stmt.Close() 179 if err != nil { 180 fmt.Println(err) 181 return false 182 } 183 return true 184 }