Mercurial > hg > orthanc-tests
comparison NewTests/WithIngestTranscoding/test_with_ingest_transcoding.py @ 506:2170c10f9d49
added new tests with ingest transcoding
author | Alain Mazy <am@osimis.io> |
---|---|
date | Fri, 27 Jan 2023 12:51:18 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
505:9f28cb3d7979 | 506:2170c10f9d49 |
---|---|
1 import unittest | |
2 import time | |
3 import os | |
4 from helpers import OrthancTestCase, Helpers | |
5 | |
6 from orthanc_api_client import OrthancApiClient, generate_test_dicom_file | |
7 from orthanc_tools import OrthancTestDbPopulator | |
8 | |
9 import pathlib | |
10 import glob | |
11 import pprint | |
12 | |
13 here = pathlib.Path(__file__).parent.resolve() | |
14 | |
15 | |
16 class TestWithIngestTranscoding(OrthancTestCase): | |
17 | |
18 @classmethod | |
19 def prepare(cls): | |
20 print('-------------- preparing TestWithIngestTranscoding tests') | |
21 | |
22 cls.clear_storage(storage_name="WithIngestTranscoding") | |
23 | |
24 config = { | |
25 "IngestTranscoding": "1.2.840.10008.1.2.4.70" | |
26 } | |
27 | |
28 config_path = cls.generate_configuration( | |
29 config_name="with_ingest_transcoding", | |
30 storage_name="WithIngestTranscoding", | |
31 config=config, | |
32 plugins=Helpers.plugins | |
33 ) | |
34 | |
35 print('-------------- prepared TestWithIngestTranscoding tests') | |
36 if Helpers.break_after_preparation: | |
37 print(f"++++ It is now time to start your Orthanc under tests with configuration file '{config_path}' +++++") | |
38 input("Press Enter to continue") | |
39 else: | |
40 print('-------------- launching TestWithIngestTranscoding tests') | |
41 cls.launch_orthanc_under_tests( | |
42 config_path=config_path, | |
43 config_name="with_ingest_transcoding", | |
44 storage_name="WithIngestTranscoding", | |
45 plugins=Helpers.plugins | |
46 ) | |
47 | |
48 print('-------------- waiting for orthanc-under-tests to be available') | |
49 cls.o.wait_started() | |
50 | |
51 def test_modify(self): | |
52 self.o.delete_all_content() | |
53 | |
54 # upload a study | |
55 self.o.upload_file(here / "../../Database/Brainix/Flair/IM-0001-0001.dcm") | |
56 | |
57 # first modify it without transcoding | |
58 r = self.o.post( | |
59 endpoint="studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988/modify", | |
60 json={ | |
61 "Replace": {"PatientID": "TUTU"}, | |
62 "Force": True, | |
63 "KeepSource": True, | |
64 "Synchronous": True | |
65 } | |
66 ).json() | |
67 | |
68 study_id = r['ID'] | |
69 instance_id = self.o.studies.get_first_instance_id(orthanc_id=study_id) | |
70 | |
71 r = self.o.get( | |
72 endpoint=f"instances/{instance_id}/metadata?expand" | |
73 ).json() | |
74 self.assertEqual("1.2.840.10008.1.2.4.70", r['TransferSyntax']) | |
75 self.o.studies.delete(orthanc_id=study_id) | |
76 | |
77 # first modify it with transcoding -> IngestTranscoding shall not be applied | |
78 r = self.o.post( | |
79 endpoint="studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988/modify", | |
80 json={ | |
81 "Replace": {"PatientID": "TUTU"}, | |
82 "Force": True, | |
83 "KeepSource": True, | |
84 "Synchronous": True, | |
85 "Transcode": "1.2.840.10008.1.2.4.80" | |
86 } | |
87 ).json() | |
88 | |
89 instance_id = self.o.studies.get_first_instance_id(orthanc_id=r['ID']) | |
90 | |
91 r = self.o.get( | |
92 endpoint=f"instances/{instance_id}/metadata?expand" | |
93 ).json() | |
94 self.assertEqual("1.2.840.10008.1.2.4.80", r['TransferSyntax']) | |
95 | |
96 | |
97 def test_anonymize(self): | |
98 self.o.delete_all_content() | |
99 | |
100 # upload a study | |
101 self.o.upload_file(here / "../../Database/Brainix/Flair/IM-0001-0001.dcm") | |
102 | |
103 # first anonymize it without transcoding | |
104 r = self.o.post( | |
105 endpoint="studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988/anonymize", | |
106 json={ | |
107 "Synchronous": True | |
108 } | |
109 ).json() | |
110 | |
111 study_id = r['ID'] | |
112 instance_id = self.o.studies.get_first_instance_id(orthanc_id=study_id) | |
113 | |
114 r = self.o.get( | |
115 endpoint=f"instances/{instance_id}/metadata?expand" | |
116 ).json() | |
117 self.assertEqual("1.2.840.10008.1.2.4.70", r['TransferSyntax']) | |
118 self.o.studies.delete(orthanc_id=study_id) | |
119 | |
120 # first anonymize it with transcoding -> IngestTranscoding shall not be applied | |
121 r = self.o.post( | |
122 endpoint="studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988/anonymize", | |
123 json={ | |
124 "Synchronous": True, | |
125 "Transcode": "1.2.840.10008.1.2.4.80" | |
126 } | |
127 ).json() | |
128 | |
129 instance_id = self.o.studies.get_first_instance_id(orthanc_id=r['ID']) | |
130 | |
131 r = self.o.get( | |
132 endpoint=f"instances/{instance_id}/metadata?expand" | |
133 ).json() | |
134 self.assertEqual("1.2.840.10008.1.2.4.80", r['TransferSyntax']) |