annotate Sphinx/source/plugins/python/received-instance-callback.py @ 806:71492ec8af49

fix
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 24 Jan 2022 14:01:39 +0100
parents ecf431e1bd44
children b14dbbb8eda9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
799
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
1 from io import BytesIO
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
2
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
3 from pydicom import dcmread, dcmwrite
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
4 from pydicom.filebase import DicomFileLike
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
5
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
6
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
7 # from https://pydicom.github.io/pydicom/stable/auto_examples/memory_dataset.html
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
8 def write_dataset_to_bytes(dataset):
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
9 with BytesIO() as buffer:
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
10 memory_dataset = DicomFileLike(buffer)
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
11 dcmwrite(memory_dataset, dataset)
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
12 memory_dataset.seek(0)
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
13
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
14 return memory_dataset.read()
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
15
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
16
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
17 def ReceivedInstanceCallback(receivedDicom):
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
18
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
19 dataset = dcmread(BytesIO(receivedDicom))
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
20
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
21 if dataset.PatientID.startswith('001-'):
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
22 return orthanc.ReceivedInstanceCallbackResult.DISCARD, None
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
23
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
24 if dataset.PatientID.startswith('002-'):
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
25 return orthanc.ReceivedInstanceCallbackResult.KEEP_AS_IS, None
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
26
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
27 dataset.PatientName = str(dataset.PatientName).upper()
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
28 dataset.PatientID = '002-' + dataset.PatientID
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
29 dataset.InstitutionName = "MY INSTITUTION"
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
30
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
31 return orthanc.ReceivedInstanceCallbackResult.MODIFIED, write_dataset_to_bytes(dataset)
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
32
ecf431e1bd44 python sample for ReceivedInstanceCallback
Alain Mazy <am@osimis.io>
parents:
diff changeset
33 orthanc.RegisterReceivedInstanceCallback(ReceivedInstanceCallback)