Skip to content

Commit 62eaa58

Browse files
committed
Merge branch 'master' of https://github.com/imgag/ngs-bits
2 parents cc06f4f + 26d11fd commit 62eaa58

File tree

1 file changed

+44
-7
lines changed

1 file changed

+44
-7
lines changed

src/GSvar/ClinvarUploadDialog.cpp

+44-7
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,9 @@ void ClinvarUploadDialog::upload()
178178
if (response.isEmpty())
179179
{
180180
messages << "MESSAGE: Dry-run successful!";
181+
// QFile jsonFile(clinvar_upload_data_.processed_sample + "_submission.json");
182+
// jsonFile.open(QFile::WriteOnly);
183+
// jsonFile.write(QJsonDocument(clinvar_submission).toJson());
181184
}
182185
else if (response.contains("id"))
183186
{
@@ -248,7 +251,7 @@ void ClinvarUploadDialog::upload()
248251
QString gsvar_publication_folder = Settings::path("gsvar_publication_folder");
249252
if (gsvar_publication_folder!="")
250253
{
251-
QString file_rep = gsvar_publication_folder + "/" + clinvar_upload_data_.processed_sample + "_CLINVAR_" + QDate::currentDate().toString("yyyyMMdd") + ".txt";
254+
QString file_rep = gsvar_publication_folder + "/" + clinvar_upload_data_.processed_sample + "_CLINVAR_" + QDate::currentDate().toString("yyyyMMdd_hhmmss") + ".txt";
252255
Helper::storeTextFile(file_rep, ui_.comment_upload->toPlainText().split("\n"));
253256
}
254257

@@ -456,14 +459,28 @@ QJsonObject ClinvarUploadDialog::createJson()
456459
{
457460
QJsonObject disease_info;
458461
disease_info.insert("db", "OMIM");
459-
disease_info.insert("id", ui_.tw_disease_info->item(row_idx, 1)->text());
462+
//extract ID
463+
QString omim_id = ui_.tw_disease_info->item(row_idx, 1)->text();
464+
if (!omim_id.startsWith("#")) THROW(ArgumentException, "Invalid OMIM id '" + ui_.tw_disease_info->item(row_idx, 1)->text() + "'!");
465+
omim_id = omim_id.split('#').at(1);
466+
bool ok;
467+
omim_id.toInt(&ok);
468+
if (!ok) THROW(ArgumentException, "Invalid OMIM id '" + ui_.tw_disease_info->item(row_idx, 1)->text() + "'!");
469+
disease_info.insert("id", omim_id);
460470
condition.append(disease_info);
461471
}
462472
else if (ui_.tw_disease_info->item(row_idx, 0)->text() == "Orpha number")
463473
{
464474
QJsonObject disease_info;
465475
disease_info.insert("db", "Orphanet");
466-
disease_info.insert("id", ui_.tw_disease_info->item(row_idx, 1)->text());
476+
//extract ID
477+
QString orphanet_id = ui_.tw_disease_info->item(row_idx, 1)->text();
478+
if (!orphanet_id.startsWith("ORPHA:")) THROW(ArgumentException, "Invalid Orphanet id '" + ui_.tw_disease_info->item(row_idx, 1)->text() + "'!");
479+
orphanet_id = orphanet_id.split(':').at(1);
480+
bool ok;
481+
orphanet_id.toInt(&ok);
482+
if (!ok) THROW(ArgumentException, "Invalid Orphanet id '" + ui_.tw_disease_info->item(row_idx, 1)->text() + "'!");
483+
disease_info.insert("id", orphanet_id);
467484
condition.append(disease_info);
468485
}
469486
else
@@ -550,6 +567,12 @@ QJsonObject ClinvarUploadDialog::createJson()
550567
}
551568
variant.insert("chromosomeCoordinates", chromosome_coordinates);
552569

570+
//optional (but required for deletions and insertions)
571+
QString variant_type;
572+
if (ui_.le_ref->text().contains("-") || ui_.le_ref->text().trimmed().isEmpty()) variant_type = "Insertion";
573+
if (ui_.le_obs->text().contains("-") || ui_.le_obs->text().trimmed().isEmpty()) variant_type = "Deletion";
574+
if (!variant_type.isEmpty()) variant.insert("variantType", variant_type);
575+
553576
//optional
554577
if (!ui_.le_gene->text().trimmed().isEmpty())
555578
{
@@ -825,11 +848,21 @@ bool ClinvarUploadDialog::validateJson(const QJsonObject& json, QStringList& err
825848
errors << "Required JSON object 'chromosomeCoordinates' in 'variant' missing!";
826849
is_valid = false;
827850
}
851+
852+
if (variant.toObject().contains("variantType"))
853+
{
854+
QString variant_type = variant.toObject().value("chromosomeCoordinates").toString();
855+
if (!VARIANT_TYPE.contains(variant_type))
856+
{
857+
errors << "Invalid variantType '" + variant_type + "'!";
858+
is_valid = false;
859+
}
860+
}
828861
}
829862
}
830863
else
831864
{
832-
errors << "JSON array 'variant' in 'variantSet' has to have at least one entry! 730";
865+
errors << "JSON array 'variant' in 'variantSet' has to have at least one entry!";
833866
is_valid = false;
834867
}
835868
}
@@ -865,7 +898,9 @@ bool ClinvarUploadDialog::validateJson(const QJsonObject& json, QStringList& err
865898
if (condition.toObject().contains("id"))
866899
{
867900
QString id = condition.toObject().value("id").toString();
868-
if (!id.startsWith("#"))
901+
bool ok;
902+
id.toInt(&ok);
903+
if (!ok)
869904
{
870905
errors << "Invalid entry '" + id + "' in 'id'!";
871906
is_valid = false;
@@ -882,8 +917,10 @@ bool ClinvarUploadDialog::validateJson(const QJsonObject& json, QStringList& err
882917
if (condition.toObject().contains("id"))
883918
{
884919
QString id = condition.toObject().value("id").toString();
885-
if (!id.startsWith("ORPHA:"))
886-
{
920+
bool ok;
921+
id.toInt(&ok);
922+
if (!ok)
923+
{
887924
errors << "Invalid entry '" + id + "' in 'id'!";
888925
is_valid = false;
889926
}

0 commit comments

Comments
 (0)