diff --git a/resources/prefix-data_clinical_sample.tsv b/resources/prefix-data_clinical_sample.tsv index 226a1b6..dac71c7 100644 --- a/resources/prefix-data_clinical_sample.tsv +++ b/resources/prefix-data_clinical_sample.tsv @@ -1,4 +1,4 @@ -#Patient Identifier Sample Identifier Lokalisation Tumorprobe Bezug Primarius Gewinnung der Tumorprobe Ort der Gewebeentnahme Alter der Gewebeprobe Tumorzellgehalt Sequenzierung DNA Panel Sequenzierung DNA Plattform Fusionsanalyse RNA panel Sequenzierung RNA Plattform TMB Score TPS ICS CPS MSI Immun Graphen MSI aus PCR MSI aus panel Her2 Fish Andere Untersuchung Andere IHC Dako Score Fusionen Splice Varianten Mutationen Copy Number Variations -#Patient identifier Sample identifier Lokalisation Tumorprobe Bezug Primarius Gewinnung der Tumorprobe Ort der Gewebeentnahme Alter der Gewebeprobe Tumorzellgehalt Sequenzierung DNA Panel Sequenzierung DNA Plattform Fusionsanalyse RNA panel Sequenzierung RNA Plattform TMB Score TPS ICS CPS MSI Immun Graphen MSI aus PCR MSI aus panel Her2 Fish Andere Untersuchung Andere IHC Dako Score Fusionen Splice Varianten Mutationen Copy Number Variations -#STRING STRING STRING STRING STRING NUMBER NUMBER STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING -#1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +#Patient Identifier Sample Identifier Lokalisation Tumorprobe Bezug Primarius Gewinnung der Tumorprobe Ort der Gewebeentnahme Alter der Gewebeprobe Tumorzellgehalt Sequenzierung DNA Panel Sequenzierung DNA Plattform Fusionsanalyse RNA panel Sequenzierung RNA Plattform TMB Score TPS ICS CPS MSI Immun Graphen MSI aus PCR MSI aus panel Her2 Fish Andere Untersuchung Andere IHC Dako Score Fusionen Splice Varianten Mutationen Copy Number Variations GIM Score HRD Score +#Patient identifier Sample identifier Lokalisation Tumorprobe Bezug Primarius Gewinnung der Tumorprobe Ort der Gewebeentnahme Alter der Gewebeprobe Tumorzellgehalt Sequenzierung DNA Panel Sequenzierung DNA Plattform Fusionsanalyse RNA panel Sequenzierung RNA Plattform TMB Score TPS ICS CPS MSI Immun Graphen MSI aus PCR MSI aus panel Her2 Fish Andere Untersuchung Andere IHC Dako Score Fusionen Splice Varianten Mutationen Copy Number Variations GIM Score HRD Score +#STRING STRING STRING STRING STRING NUMBER NUMBER STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING STRING +#1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 diff --git a/samples.go b/samples.go index fffaca6..caf43e1 100644 --- a/samples.go +++ b/samples.go @@ -222,6 +222,15 @@ func fetchSamplesForDisease(patientID string, diseaseID string, ocaPlusOnly bool // TMB_SCORE aus neuem Formular "OS.Molekulargenetik" ab rev 81 data = *tmb(fmt.Sprint(id), &data) + + // GIM_/HRD_SCORE + data.GimScore = "NA" + data.HrdScore = "NA" + if panelCode, err := panelCode.Value(); err == nil && panelCode == "OCAPlus" { + data.GimScore, _ = hrd(fmt.Sprint(id)) + } else { + data.HrdScore, _ = hrd(fmt.Sprint(id)) + } } data.Her2Fish = "NA" @@ -311,6 +320,28 @@ func msi(prozedurID string, sampleData *SampleData) *SampleData { return sampleData } +// Ermittelt den HRD Score für angegebene Hauptprozedur +func hrd(prozedurID string) (string, error) { + query := `SELECT score FROM prozedur_prozedur pp + JOIN dk_molekulargenetik ON pp.prozedur1 = dk_molekulargenetik.id + JOIN dk_molekluargenmsi ON pp.prozedur2 = dk_molekluargenmsi.id + WHERE pp.prozedur1 = ? AND komplexerbiomarker = 'HRD'` + + var score sql.NullString + + if rows, err := db.Query(query, prozedurID); err == nil { + for rows.Next() { + if err := rows.Scan(&score); err == nil { + if score.Valid { + return score.String, nil + } + } + } + } + + return "NA", fmt.Errorf("No HRD Score entry found") +} + func tmb(prozedurID string, sampleData *SampleData) *SampleData { query := `SELECT tumormutationalburden FROM dk_molekluargenmsi JOIN prozedur_prozedur pp ON pp.prozedur2 = dk_molekluargenmsi.id @@ -372,6 +403,8 @@ type SampleData struct { SpliceVariants string `csv:"SPLICE_VARIANTS"` Mutations string `csv:"MUTATIONS"` Cnv string `csv:"CNV"` + GimScore string `csv:"GIM_SCORE"` + HrdScore string `csv:"HRD_SCORE"` } func SampleDataHeaders() []string { @@ -402,6 +435,8 @@ func SampleDataHeaders() []string { "SPLICE_VARIANTS", "MUTATIONS", "CNV", + "GIM_SCORE", + "HRD_SCORE", } } @@ -433,5 +468,7 @@ func (data *SampleData) AsStringArray() []string { data.SpliceVariants, data.Mutations, data.Cnv, + data.GimScore, + data.HrdScore, } }