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  }