Mercurial > hg > orthanc-education
changeset 54:b931dabc2b47
fix detection of volview and wsi
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Wed, 22 Oct 2025 13:22:08 +0200 |
| parents | a5d238852e69 |
| children | e33cb0f03dc9 b62242c540db |
| files | Resources/IntegrationTests/Run.py Sources/OrthancDatabase.cpp |
| diffstat | 2 files changed, 76 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/Resources/IntegrationTests/Run.py Wed Oct 22 12:27:20 2025 +0200 +++ b/Resources/IntegrationTests/Run.py Wed Oct 22 13:22:08 2025 +0200 @@ -967,6 +967,12 @@ def test_create_free_link(self): + def Link(project, data): + requests.post(URL + '/education/api/link', json.dumps({ + 'data' : data, + 'project' : project, + }), headers = AdministratorHeaders()).raise_for_status() + def CheckNoResource(project): lst = requests.get(URL + '/education/api/user-projects', headers = AdministratorHeaders()).json() self.assertEqual(0, len(lst['projects'][project]['resources'])) @@ -1002,11 +1008,7 @@ CheckNoResource(project) - requests.post(URL + '/education/api/link', json.dumps({ - 'data' : study, - 'project' : project, - }), headers = AdministratorHeaders()).raise_for_status() - + Link(project, study) resource = CheckHasResource(project, 'Study', study) self.assertEqual('TEST - MY^STUDY', resource['title']) self.assertEqual([ project ], resource['projects']) @@ -1016,11 +1018,7 @@ self.assertEqual('../api/preview-study/%s' % study, resource['preview_url']) Unlink(project) - requests.post(URL + '/education/api/link', json.dumps({ - 'data' : series, - 'project' : project, - }), headers = AdministratorHeaders()).raise_for_status() - + Link(project, series) resource = CheckHasResource(project, 'Series', series) self.assertEqual('TEST - MY^STUDY', resource['title']) self.assertEqual([ project ], resource['projects']) @@ -1030,11 +1028,7 @@ self.assertEqual('../api/preview-series/%s' % series, resource['preview_url']) Unlink(project) - requests.post(URL + '/education/api/link', json.dumps({ - 'data' : instance, - 'project' : project, - }), headers = AdministratorHeaders()).raise_for_status() - + Link(project, instance) resource = CheckHasResource(project, 'Instance', instance) self.assertEqual('TEST - MY^STUDY', resource['title']) self.assertEqual([ project ], resource['projects']) @@ -1044,29 +1038,79 @@ self.assertEqual('../api/preview-instance/%s' % instance, resource['preview_url']) Unlink(project) - requests.post(URL + '/education/api/link', json.dumps({ - 'data' : tags['0020,000d'], - 'project' : project, - }), headers = AdministratorHeaders()).raise_for_status() + Link(project, tags['0020,000d']) + CheckHasResource(project, 'Study', study) + Unlink(project) + + Link(project, tags['0020,000e']) + CheckHasResource(project, 'Series', series) + Unlink(project) + + Link(project, tags['0008,0018']) + CheckHasResource(project, 'Instance', instance) + Unlink(project) + + Link(project, 'http://my-public/stone-webviewer/index.html?study=%s' % tags['0020,000d']) + CheckHasResource(project, 'Study', study) + Unlink(project) - resource = CheckHasResource(project, 'Study', study) + Link(project, 'http://my-public/stone-webviewer/index.html?series=%s' % tags['0020,000e']) + CheckHasResource(project, 'Series', series) + Unlink(project) + + Link(project, 'http://my-public/volview/index.html?names=[archive.zip]&urls=[../studies/%s/archive]' % study) + CheckHasResource(project, 'Study', study) + Unlink(project) + + Link(project, 'http://my-public/volview/index.html?names=[archive.zip]&urls=[../series/%s/archive]' % series) + CheckHasResource(project, 'Series', series) + Unlink(project) + + Link(project, 'http://my-public/ohif/viewer?StudyInstanceUIDs=%s' % tags['0020,000d']) + CheckHasResource(project, 'Study', study) + Unlink(project) + + Link(project, 'http://my-public/ohif/viewer?hangingprotocolId=mprAnd3DVolumeViewport&StudyInstanceUIDs=%s' % tags['0020,000d']) + CheckHasResource(project, 'Study', study) Unlink(project) - requests.post(URL + '/education/api/link', json.dumps({ - 'data' : tags['0020,000e'], - 'project' : project, - }), headers = AdministratorHeaders()).raise_for_status() + Link(project, 'http://my-public/ohif/tmtv?StudyInstanceUIDs=%s' % tags['0020,000d']) + CheckHasResource(project, 'Study', study) + Unlink(project) - resource = CheckHasResource(project, 'Series', series) + Link(project, 'http://my-public/ohif/segmentation?StudyInstanceUIDs=%s' % tags['0020,000d']) + CheckHasResource(project, 'Study', study) + Unlink(project) + + Link(project, 'http://my-public/ohif/microscopy?StudyInstanceUIDs=%s' % tags['0020,000d']) + CheckHasResource(project, 'Study', study) + Unlink(project) + + Link(project, 'http://my-public/wsi/app/viewer.html?series=%s' % series) + CheckHasResource(project, 'Series', series) Unlink(project) - requests.post(URL + '/education/api/link', json.dumps({ - 'data' : tags['0008,0018'], + Link(project, 'http://my-public/wsi/app/viewer.html?instance=%s' % instance) + CheckHasResource(project, 'Instance', instance) + Unlink(project) + + Link(project, 'http://my-public/app/explorer.html#study?uuid=%s' % study) + CheckHasResource(project, 'Study', study) + Unlink(project) + + Link(project, 'http://my-public/app/explorer.html#series?uuid=%s' % series) + CheckHasResource(project, 'Series', series) + Unlink(project) + + Link(project, 'http://my-public/app/explorer.html#instance?uuid=%s' % instance) + CheckHasResource(project, 'Instance', instance) + Unlink(project) + + self.assertEqual(400, requests.post(URL + '/education/api/link', json.dumps({ + 'data' : 'nope', 'project' : project, - }), headers = AdministratorHeaders()).raise_for_status() + }), headers = AdministratorHeaders()).status_code) - resource = CheckHasResource(project, 'Instance', instance) - Unlink(project) try: print('\nStarting the tests...')
--- a/Sources/OrthancDatabase.cpp Wed Oct 22 12:27:20 2025 +0200 +++ b/Sources/OrthancDatabase.cpp Wed Oct 22 13:22:08 2025 +0200 @@ -902,7 +902,7 @@ Json::Value v; { - boost::regex pattern("/volview/index.html?.*(/(studies|series)/[0-9a-z-]+)/archive.*"); + boost::regex pattern("/volview/index.html?.*(/(studies|series)/([0-9a-z-]+))/archive.*"); boost::smatch what; if (regex_match(base, what, pattern) && @@ -957,7 +957,7 @@ OrthancPlugins::RestApiGet(v, "/series/" + what[1], false)) { resourceId = what[1]; - level = Orthanc::ResourceType_Study; + level = Orthanc::ResourceType_Series; return true; } }
