@@ -178,6 +178,9 @@ void ClinvarUploadDialog::upload()
178
178
if (response.isEmpty ())
179
179
{
180
180
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());
181
184
}
182
185
else if (response.contains (" id" ))
183
186
{
@@ -248,7 +251,7 @@ void ClinvarUploadDialog::upload()
248
251
QString gsvar_publication_folder = Settings::path (" gsvar_publication_folder" );
249
252
if (gsvar_publication_folder!=" " )
250
253
{
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" ;
252
255
Helper::storeTextFile (file_rep, ui_.comment_upload ->toPlainText ().split (" \n " ));
253
256
}
254
257
@@ -456,14 +459,28 @@ QJsonObject ClinvarUploadDialog::createJson()
456
459
{
457
460
QJsonObject disease_info;
458
461
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);
460
470
condition.append (disease_info);
461
471
}
462
472
else if (ui_.tw_disease_info ->item (row_idx, 0 )->text () == " Orpha number" )
463
473
{
464
474
QJsonObject disease_info;
465
475
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);
467
484
condition.append (disease_info);
468
485
}
469
486
else
@@ -550,6 +567,12 @@ QJsonObject ClinvarUploadDialog::createJson()
550
567
}
551
568
variant.insert (" chromosomeCoordinates" , chromosome_coordinates);
552
569
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
+
553
576
// optional
554
577
if (!ui_.le_gene ->text ().trimmed ().isEmpty ())
555
578
{
@@ -825,11 +848,21 @@ bool ClinvarUploadDialog::validateJson(const QJsonObject& json, QStringList& err
825
848
errors << " Required JSON object 'chromosomeCoordinates' in 'variant' missing!" ;
826
849
is_valid = false ;
827
850
}
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
+ }
828
861
}
829
862
}
830
863
else
831
864
{
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!" ;
833
866
is_valid = false ;
834
867
}
835
868
}
@@ -865,7 +898,9 @@ bool ClinvarUploadDialog::validateJson(const QJsonObject& json, QStringList& err
865
898
if (condition.toObject ().contains (" id" ))
866
899
{
867
900
QString id = condition.toObject ().value (" id" ).toString ();
868
- if (!id.startsWith (" #" ))
901
+ bool ok;
902
+ id.toInt (&ok);
903
+ if (!ok)
869
904
{
870
905
errors << " Invalid entry '" + id + " ' in 'id'!" ;
871
906
is_valid = false ;
@@ -882,8 +917,10 @@ bool ClinvarUploadDialog::validateJson(const QJsonObject& json, QStringList& err
882
917
if (condition.toObject ().contains (" id" ))
883
918
{
884
919
QString id = condition.toObject ().value (" id" ).toString ();
885
- if (!id.startsWith (" ORPHA:" ))
886
- {
920
+ bool ok;
921
+ id.toInt (&ok);
922
+ if (!ok)
923
+ {
887
924
errors << " Invalid entry '" + id + " ' in 'id'!" ;
888
925
is_valid = false ;
889
926
}
0 commit comments