Mercurial > hg > orthanc
comparison OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp @ 5803:e219e272650d find-refactoring
fix retrieval of grandchildren info + cleanup
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Fri, 20 Sep 2024 18:18:52 +0200 |
parents | 16ce3c920f71 |
children | 25df40a274fd |
comparison
equal
deleted
inserted
replaced
5801:90ca8c1bc75c | 5803:e219e272650d |
---|---|
584 " NULL AS c5_string3, " | 584 " NULL AS c5_string3, " |
585 " Metadata.type AS c6_int1, " | 585 " Metadata.type AS c6_int1, " |
586 " NULL AS c7_int2, " | 586 " NULL AS c7_int2, " |
587 " NULL AS c8_big_int1, " | 587 " NULL AS c8_big_int1, " |
588 " NULL AS c9_big_int2 " | 588 " NULL AS c9_big_int2 " |
589 " FROM Metadata " | 589 " FROM OneInstance " |
590 " INNER JOIN OneInstance ON Metadata.id = OneInstance.instanceInternalId "; | 590 " INNER JOIN Metadata ON Metadata.id = OneInstance.instanceInternalId "; |
591 | 591 |
592 sql += " UNION SELECT" | 592 sql += " UNION SELECT" |
593 " " TOSTRING(QUERY_ONE_INSTANCE_ATTACHMENTS) " AS c0_queryId, " | 593 " " TOSTRING(QUERY_ONE_INSTANCE_ATTACHMENTS) " AS c0_queryId, " |
594 " parentInternalId AS c1_internalId, " | 594 " parentInternalId AS c1_internalId, " |
595 " NULL AS c2_rowNumber, " | 595 " NULL AS c2_rowNumber, " |
598 " compressedMD5 AS c5_string3, " | 598 " compressedMD5 AS c5_string3, " |
599 " fileType AS c6_int1, " | 599 " fileType AS c6_int1, " |
600 " compressionType AS c7_int2, " | 600 " compressionType AS c7_int2, " |
601 " compressedSize AS c8_big_int1, " | 601 " compressedSize AS c8_big_int1, " |
602 " uncompressedSize AS c9_big_int2 " | 602 " uncompressedSize AS c9_big_int2 " |
603 " FROM AttachedFiles " | 603 " FROM OneInstance " |
604 " INNER JOIN OneInstance ON AttachedFiles.id = OneInstance.instanceInternalId "; | 604 " INNER JOIN AttachedFiles ON AttachedFiles.id = OneInstance.instanceInternalId "; |
605 | 605 |
606 } | 606 } |
607 | 607 |
608 // need MainDicomTags from resource ? | 608 // need MainDicomTags from resource ? |
609 if (request.IsRetrieveMainDicomTags()) | 609 if (request.IsRetrieveMainDicomTags()) |
617 " NULL AS c5_string3, " | 617 " NULL AS c5_string3, " |
618 " tagGroup AS c6_int1, " | 618 " tagGroup AS c6_int1, " |
619 " tagElement AS c7_int2, " | 619 " tagElement AS c7_int2, " |
620 " NULL AS c8_big_int1, " | 620 " NULL AS c8_big_int1, " |
621 " NULL AS c9_big_int2 " | 621 " NULL AS c9_big_int2 " |
622 "FROM MainDicomTags " | 622 "FROM Lookup " |
623 "INNER JOIN Lookup ON MainDicomTags.id = Lookup.internalId "; | 623 "INNER JOIN MainDicomTags ON MainDicomTags.id = Lookup.internalId "; |
624 } | 624 } |
625 | 625 |
626 // need resource metadata ? | 626 // need resource metadata ? |
627 if (request.IsRetrieveMetadata()) | 627 if (request.IsRetrieveMetadata()) |
628 { | 628 { |
635 " NULL AS c5_string3, " | 635 " NULL AS c5_string3, " |
636 " type AS c6_int1, " | 636 " type AS c6_int1, " |
637 " NULL AS c7_int2, " | 637 " NULL AS c7_int2, " |
638 " NULL AS c8_big_int1, " | 638 " NULL AS c8_big_int1, " |
639 " NULL AS c9_big_int2 " | 639 " NULL AS c9_big_int2 " |
640 "FROM Metadata " | 640 "FROM Lookup " |
641 "INNER JOIN Lookup ON Metadata.id = Lookup.internalId "; | 641 "INNER JOIN Metadata ON Metadata.id = Lookup.internalId "; |
642 } | 642 } |
643 | 643 |
644 // need resource attachments ? | 644 // need resource attachments ? |
645 if (request.IsRetrieveAttachments()) | 645 if (request.IsRetrieveAttachments()) |
646 { | 646 { |
653 " compressedMD5 AS c5_string3, " | 653 " compressedMD5 AS c5_string3, " |
654 " fileType AS c6_int1, " | 654 " fileType AS c6_int1, " |
655 " compressionType AS c7_int2, " | 655 " compressionType AS c7_int2, " |
656 " compressedSize AS c8_big_int1, " | 656 " compressedSize AS c8_big_int1, " |
657 " uncompressedSize AS c9_big_int2 " | 657 " uncompressedSize AS c9_big_int2 " |
658 "FROM AttachedFiles " | 658 "FROM Lookup " |
659 "INNER JOIN Lookup ON AttachedFiles.id = Lookup.internalId "; | 659 "INNER JOIN AttachedFiles ON AttachedFiles.id = Lookup.internalId "; |
660 } | 660 } |
661 | 661 |
662 | 662 |
663 // need resource labels ? | 663 // need resource labels ? |
664 if (request.IsRetrieveLabels()) | 664 if (request.IsRetrieveLabels()) |
672 " NULL AS c5_string3, " | 672 " NULL AS c5_string3, " |
673 " NULL AS c6_int1, " | 673 " NULL AS c6_int1, " |
674 " NULL AS c7_int2, " | 674 " NULL AS c7_int2, " |
675 " NULL AS c8_big_int1, " | 675 " NULL AS c8_big_int1, " |
676 " NULL AS c9_big_int2 " | 676 " NULL AS c9_big_int2 " |
677 "FROM Labels " | 677 "FROM Lookup " |
678 "INNER JOIN Lookup ON Labels.id = Lookup.internalId "; | 678 "INNER JOIN Labels ON Labels.id = Lookup.internalId "; |
679 } | 679 } |
680 | 680 |
681 if (requestLevel > ResourceType_Patient) | 681 if (requestLevel > ResourceType_Patient) |
682 { | 682 { |
683 // need MainDicomTags from parent ? | 683 // need MainDicomTags from parent ? |
795 " tagElement AS c7_int2, " | 795 " tagElement AS c7_int2, " |
796 " NULL AS c8_big_int1, " | 796 " NULL AS c8_big_int1, " |
797 " NULL AS c9_big_int2 " | 797 " NULL AS c9_big_int2 " |
798 "FROM Lookup " | 798 "FROM Lookup " |
799 " INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId " | 799 " INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId " |
800 " INNER JOIN Resources grandChildLevel ON childLevel.parentId = Lookup.internalId " | 800 " INNER JOIN Resources grandChildLevel ON grandChildLevel.parentId = childLevel.internalId " |
801 " INNER JOIN MainDicomTags ON MainDicomTags.id = grandChildLevel.internalId AND " + JoinRequestedTags(request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 2))); | 801 " INNER JOIN MainDicomTags ON MainDicomTags.id = grandChildLevel.internalId AND " + JoinRequestedTags(request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 2))); |
802 } | 802 } |
803 | 803 |
804 // need parent identifier ? | 804 // need parent identifier ? |
805 if (request.IsRetrieveParentIdentifier()) | 805 if (request.IsRetrieveParentIdentifier()) |
813 " NULL AS c5_string3, " | 813 " NULL AS c5_string3, " |
814 " NULL AS c6_int1, " | 814 " NULL AS c6_int1, " |
815 " NULL AS c7_int2, " | 815 " NULL AS c7_int2, " |
816 " NULL AS c8_big_int1, " | 816 " NULL AS c8_big_int1, " |
817 " NULL AS c9_big_int2 " | 817 " NULL AS c9_big_int2 " |
818 "FROM Resources AS currentLevel " | 818 "FROM Lookup " |
819 " INNER JOIN Lookup ON currentLevel.internalId = Lookup.internalId " | 819 " INNER JOIN Resources currentLevel ON currentLevel.internalId = Lookup.internalId " |
820 " INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId "; | 820 " INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId "; |
821 } | 821 } |
822 | 822 |
823 // need children metadata ? | 823 // need children metadata ? |
824 if (requestLevel <= ResourceType_Series && request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 1)).GetMetadata().size() > 0) | 824 if (requestLevel <= ResourceType_Series && request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 1)).GetMetadata().size() > 0) |
853 " NULL AS c7_int2, " | 853 " NULL AS c7_int2, " |
854 " NULL AS c8_big_int1, " | 854 " NULL AS c8_big_int1, " |
855 " NULL AS c9_big_int2 " | 855 " NULL AS c9_big_int2 " |
856 "FROM Lookup " | 856 "FROM Lookup " |
857 " INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId " | 857 " INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId " |
858 " INNER JOIN Resources grandChildLevel ON childLevel.parentId = Lookup.internalId " | 858 " INNER JOIN Resources grandChildLevel ON grandChildLevel.parentId = childLevel.internalId " |
859 " INNER JOIN Metadata ON Metadata.id = grandChildLevel.internalId AND Metadata.type IN (" + JoinRequestedMetadata(request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 2))) + ") "; | 859 " INNER JOIN Metadata ON Metadata.id = grandChildLevel.internalId AND Metadata.type IN (" + JoinRequestedMetadata(request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 2))) + ") "; |
860 } | 860 } |
861 | 861 |
862 // need children identifiers ? | 862 // need children identifiers ? |
863 if ((requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Study).IsRetrieveIdentifiers()) || | 863 if ((requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Study).IsRetrieveIdentifiers()) || |
873 " NULL AS c5_string3, " | 873 " NULL AS c5_string3, " |
874 " NULL AS c6_int1, " | 874 " NULL AS c6_int1, " |
875 " NULL AS c7_int2, " | 875 " NULL AS c7_int2, " |
876 " NULL AS c8_big_int1, " | 876 " NULL AS c8_big_int1, " |
877 " NULL AS c9_big_int2 " | 877 " NULL AS c9_big_int2 " |
878 "FROM Resources AS currentLevel " | 878 "FROM Lookup " |
879 " INNER JOIN Lookup ON currentLevel.internalId = Lookup.internalId " | 879 " INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId "; |
880 " INNER JOIN Resources childLevel ON currentLevel.internalId = childLevel.parentId "; | |
881 } | 880 } |
882 | 881 |
883 // need grandchildren identifiers ? | 882 // need grandchildren identifiers ? |
884 if ((requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Series).IsRetrieveIdentifiers()) || | 883 if ((requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Series).IsRetrieveIdentifiers()) || |
885 (requestLevel == ResourceType_Study && request.GetChildrenSpecification(ResourceType_Instance).IsRetrieveIdentifiers())) | 884 (requestLevel == ResourceType_Study && request.GetChildrenSpecification(ResourceType_Instance).IsRetrieveIdentifiers())) |
893 " NULL AS c5_string3, " | 892 " NULL AS c5_string3, " |
894 " NULL AS c6_int1, " | 893 " NULL AS c6_int1, " |
895 " NULL AS c7_int2, " | 894 " NULL AS c7_int2, " |
896 " NULL AS c8_big_int1, " | 895 " NULL AS c8_big_int1, " |
897 " NULL AS c9_big_int2 " | 896 " NULL AS c9_big_int2 " |
898 "FROM Resources AS currentLevel " | 897 "FROM Lookup " |
899 "INNER JOIN Lookup ON currentLevel.internalId = Lookup.internalId " | 898 "INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId " |
900 "INNER JOIN Resources childLevel ON currentLevel.internalId = childLevel.parentId " | |
901 "INNER JOIN Resources grandChildLevel ON childLevel.internalId = grandChildLevel.parentId "; | 899 "INNER JOIN Resources grandChildLevel ON childLevel.internalId = grandChildLevel.parentId "; |
902 } | 900 } |
903 | 901 |
904 // need grandgrandchildren identifiers ? | 902 // need grandgrandchildren identifiers ? |
905 if (requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Instance).IsRetrieveIdentifiers()) | 903 if (requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Instance).IsRetrieveIdentifiers()) |
913 " NULL AS c5_string3, " | 911 " NULL AS c5_string3, " |
914 " NULL AS c6_int1, " | 912 " NULL AS c6_int1, " |
915 " NULL AS c7_int2, " | 913 " NULL AS c7_int2, " |
916 " NULL AS c8_big_int1, " | 914 " NULL AS c8_big_int1, " |
917 " NULL AS c9_big_int2 " | 915 " NULL AS c9_big_int2 " |
918 "FROM Resources AS currentLevel " | 916 "FROM Lookup " |
919 "INNER JOIN Lookup ON currentLevel.internalId = Lookup.internalId " | 917 "INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId " |
920 "INNER JOIN Resources childLevel ON currentLevel.internalId = childLevel.parentId " | |
921 "INNER JOIN Resources grandChildLevel ON childLevel.internalId = grandChildLevel.parentId " | 918 "INNER JOIN Resources grandChildLevel ON childLevel.internalId = grandChildLevel.parentId " |
922 "INNER JOIN Resources grandGrandChildLevel ON grandChildLevel.internalId = grandGrandChildLevel.parentId "; | 919 "INNER JOIN Resources grandGrandChildLevel ON grandChildLevel.internalId = grandGrandChildLevel.parentId "; |
923 } | 920 } |
924 | 921 |
925 | 922 |