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'])