Mercurial > hg > orthanc-book
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) |