comparison Sphinx/source/plugins/python/received-instance-callback.py @ 799:ecf431e1bd44

python sample for ReceivedInstanceCallback
author Alain Mazy <am@osimis.io>
date Tue, 14 Dec 2021 22:22:37 +0100
parents
children b14dbbb8eda9
comparison
equal deleted inserted replaced
798:80b9ceeb4045 799:ecf431e1bd44
1 from io import BytesIO
2
3 from pydicom import dcmread, dcmwrite
4 from pydicom.filebase import DicomFileLike
5
6
7 # from https://pydicom.github.io/pydicom/stable/auto_examples/memory_dataset.html
8 def write_dataset_to_bytes(dataset):
9 with BytesIO() as buffer:
10 memory_dataset = DicomFileLike(buffer)
11 dcmwrite(memory_dataset, dataset)
12 memory_dataset.seek(0)
13
14 return memory_dataset.read()
15
16
17 def ReceivedInstanceCallback(receivedDicom):
18
19 dataset = dcmread(BytesIO(receivedDicom))
20
21 if dataset.PatientID.startswith('001-'):
22 return orthanc.ReceivedInstanceCallbackResult.DISCARD, None
23
24 if dataset.PatientID.startswith('002-'):
25 return orthanc.ReceivedInstanceCallbackResult.KEEP_AS_IS, None
26
27 dataset.PatientName = str(dataset.PatientName).upper()
28 dataset.PatientID = '002-' + dataset.PatientID
29 dataset.InstitutionName = "MY INSTITUTION"
30
31 return orthanc.ReceivedInstanceCallbackResult.MODIFIED, write_dataset_to_bytes(dataset)
32
33 orthanc.RegisterReceivedInstanceCallback(ReceivedInstanceCallback)