Mercurial > hg > orthanc-databases
comparison Framework/Plugins/IndexBackend.cpp @ 561:6c76a050a341 find-refactoring
handling of parent metadata
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Wed, 18 Sep 2024 09:49:18 +0200 |
parents | b0ce1ebc9b90 |
children | 13234fec9438 |
comparison
equal
deleted
inserted
replaced
560:b0ce1ebc9b90 | 561:6c76a050a341 |
---|---|
3160 #define QUERY_ATTACHMENTS 3 | 3160 #define QUERY_ATTACHMENTS 3 |
3161 #define QUERY_METADATA 4 | 3161 #define QUERY_METADATA 4 |
3162 #define QUERY_LABELS 5 | 3162 #define QUERY_LABELS 5 |
3163 #define QUERY_PARENT_MAIN_DICOM_TAGS 10 | 3163 #define QUERY_PARENT_MAIN_DICOM_TAGS 10 |
3164 #define QUERY_PARENT_IDENTIFIER 11 | 3164 #define QUERY_PARENT_IDENTIFIER 11 |
3165 #define QUERY_PARENT_METADATA 12 | |
3165 #define QUERY_GRAND_PARENT_MAIN_DICOM_TAGS 15 | 3166 #define QUERY_GRAND_PARENT_MAIN_DICOM_TAGS 15 |
3167 #define QUERY_GRAND_PARENT_METADATA 16 | |
3166 #define QUERY_CHILDREN_IDENTIFIERS 20 | 3168 #define QUERY_CHILDREN_IDENTIFIERS 20 |
3167 #define QUERY_CHILDREN_MAIN_DICOM_TAGS 21 | 3169 #define QUERY_CHILDREN_MAIN_DICOM_TAGS 21 |
3168 #define QUERY_CHILDREN_METADATA 22 | 3170 #define QUERY_CHILDREN_METADATA 22 |
3169 #define QUERY_GRAND_CHILDREN_IDENTIFIERS 30 | 3171 #define QUERY_GRAND_CHILDREN_IDENTIFIERS 30 |
3170 #define QUERY_GRAND_CHILDREN_MAIN_DICOM_TAGS 31 | 3172 #define QUERY_GRAND_CHILDREN_MAIN_DICOM_TAGS 31 |
3320 " NULL::BIGINT AS c8_big_int1, " | 3322 " NULL::BIGINT AS c8_big_int1, " |
3321 " NULL::BIGINT AS c9_big_int2 " | 3323 " NULL::BIGINT AS c9_big_int2 " |
3322 "FROM Lookup " | 3324 "FROM Lookup " |
3323 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " | 3325 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " |
3324 "INNER JOIN MainDicomTags ON MainDicomTags.id = currentLevel.parentId "; | 3326 "INNER JOIN MainDicomTags ON MainDicomTags.id = currentLevel.parentId "; |
3327 } | |
3328 | |
3329 if (parentSpec->retrieve_metadata()) | |
3330 { | |
3331 sql += "UNION SELECT " | |
3332 " " TOSTRING(QUERY_PARENT_METADATA) " AS c0_queryId, " | |
3333 " Lookup.internalId AS c1_internalId, " | |
3334 " NULL::BIGINT AS c2_rowNumber, " | |
3335 " value AS c3_string1, " | |
3336 " NULL::TEXT AS c4_string2, " | |
3337 " NULL::TEXT AS c5_string3, " | |
3338 " type AS c6_int1, " | |
3339 " NULL::INT AS c7_int2, " | |
3340 " NULL::BIGINT AS c8_big_int1, " | |
3341 " NULL::BIGINT AS c9_big_int2 " | |
3342 "FROM Lookup " | |
3343 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " | |
3344 "INNER JOIN Metadata ON Metadata.id = currentLevel.parentId "; | |
3325 } | 3345 } |
3326 | 3346 |
3327 // need MainDicomTags from grandparent ? | 3347 // need MainDicomTags from grandparent ? |
3328 if (request.level() > Orthanc::DatabasePluginMessages::ResourceType::RESOURCE_STUDY) | 3348 if (request.level() > Orthanc::DatabasePluginMessages::ResourceType::RESOURCE_STUDY) |
3329 { | 3349 { |
3356 " NULL::BIGINT AS c9_big_int2 " | 3376 " NULL::BIGINT AS c9_big_int2 " |
3357 "FROM Lookup " | 3377 "FROM Lookup " |
3358 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " | 3378 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " |
3359 "INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId " | 3379 "INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId " |
3360 "INNER JOIN MainDicomTags ON MainDicomTags.id = parentLevel.parentId "; | 3380 "INNER JOIN MainDicomTags ON MainDicomTags.id = parentLevel.parentId "; |
3381 } | |
3382 | |
3383 if (grandparentSpec->retrieve_metadata()) | |
3384 { | |
3385 sql += "UNION SELECT " | |
3386 " " TOSTRING(QUERY_GRAND_PARENT_METADATA) " AS c0_queryId, " | |
3387 " Lookup.internalId AS c1_internalId, " | |
3388 " NULL::BIGINT AS c2_rowNumber, " | |
3389 " value AS c3_string1, " | |
3390 " NULL::TEXT AS c4_string2, " | |
3391 " NULL::TEXT AS c5_string3, " | |
3392 " type AS c6_int1, " | |
3393 " NULL::INT AS c7_int2, " | |
3394 " NULL::BIGINT AS c8_big_int1, " | |
3395 " NULL::BIGINT AS c9_big_int2 " | |
3396 "FROM Lookup " | |
3397 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " | |
3398 "INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId " | |
3399 "INNER JOIN Metadata ON Metadata.id = currentLevel.parentId "; | |
3361 } | 3400 } |
3362 } | 3401 } |
3363 } | 3402 } |
3364 | 3403 |
3365 // need MainDicomTags from children ? | 3404 // need MainDicomTags from children ? |
3771 | 3810 |
3772 metadata->set_value(statement.ReadString(C3_STRING_1)); | 3811 metadata->set_value(statement.ReadString(C3_STRING_1)); |
3773 metadata->set_key(statement.ReadInteger32(C6_INT_1)); | 3812 metadata->set_key(statement.ReadInteger32(C6_INT_1)); |
3774 }; break; | 3813 }; break; |
3775 | 3814 |
3815 case QUERY_PARENT_METADATA: | |
3816 { | |
3817 Orthanc::DatabasePluginMessages::Find_Response_ResourceContent* content = GetResourceContent(responses[internalId], static_cast<Orthanc::DatabasePluginMessages::ResourceType>(request.level() - 1)); | |
3818 Orthanc::DatabasePluginMessages::Find_Response_Metadata* metadata = content->add_metadata(); | |
3819 | |
3820 metadata->set_value(statement.ReadString(C3_STRING_1)); | |
3821 metadata->set_key(statement.ReadInteger32(C6_INT_1)); | |
3822 }; break; | |
3823 | |
3824 case QUERY_GRAND_PARENT_METADATA: | |
3825 { | |
3826 Orthanc::DatabasePluginMessages::Find_Response_ResourceContent* content = GetResourceContent(responses[internalId], static_cast<Orthanc::DatabasePluginMessages::ResourceType>(request.level() - 2)); | |
3827 Orthanc::DatabasePluginMessages::Find_Response_Metadata* metadata = content->add_metadata(); | |
3828 | |
3829 metadata->set_value(statement.ReadString(C3_STRING_1)); | |
3830 metadata->set_key(statement.ReadInteger32(C6_INT_1)); | |
3831 }; break; | |
3832 | |
3776 case QUERY_PARENT_IDENTIFIER: | 3833 case QUERY_PARENT_IDENTIFIER: |
3777 { | 3834 { |
3778 responses[internalId]->set_parent_public_id(statement.ReadString(C3_STRING_1)); | 3835 responses[internalId]->set_parent_public_id(statement.ReadString(C3_STRING_1)); |
3779 }; break; | 3836 }; break; |
3780 | 3837 |