annotate Sphinx/source/plugins/python/storage-commitment-default.py @ 1077:df28170c2af3

documenting java
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 14 Jun 2024 17:39:11 +0200
parents 2d817288cad4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
973
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
1 import orthanc
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
2 import json
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
3
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
4 # this plugins provides the same behavior as the default Orthanc implementation
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
5
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
6 def StorageCommitmentScpCallback(jobId, transactionUid, sopClassUids, sopInstanceUids, remoteAet, calledAet):
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
7 # At the beginning of a Storage Commitment operation, you can build a custom data structure
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
8 # that will be provided as the "data" argument in the StorageCommitmentLookup
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
9 return None
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
10
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
11
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
12 # Reference: `StorageCommitmentScpJob::Lookup` in `OrthancServer/Sources/ServerJobs/StorageCommitmentScpJob.cpp`
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
13 def StorageCommitmentLookup(sopClassUid, sopInstanceUid, data):
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
14 success = False
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
15 reason = orthanc.StorageCommitmentFailureReason.NO_SUCH_OBJECT_INSTANCE
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
16
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
17 result = json.loads(orthanc.RestApiPost("/tools/lookup", sopInstanceUid))
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
18 if len(result) == 1:
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
19 tags = json.loads(orthanc.RestApiGet(result[0]["Path"] + "/simplified-tags"))
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
20 if all(tag in tags for tag in ["SOPClassUID", "SOPInstanceUID"]) and \
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
21 tags["SOPInstanceUID"] == sopInstanceUid:
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
22 if tags["SOPClassUID"] == sopClassUid:
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
23 success = True
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
24 reason = orthanc.StorageCommitmentFailureReason.SUCCESS
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
25 else:
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
26 # Mismatch in the SOP class UID
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
27 reason = orthanc.StorageCommitmentFailureReason.CLASS_INSTANCE_CONFLICT
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
28
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
29 orthanc.LogInfo(" Storage commitment SCP job: " + ("Success" if success else "Failure") + \
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
30 " while looking for " + sopClassUid + " / " + sopInstanceUid)
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
31
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
32 return reason
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
33
2d817288cad4 added python storage commitment
Alain Mazy <am@osimis.io>
parents:
diff changeset
34 orthanc.RegisterStorageCommitmentScpCallback(StorageCommitmentScpCallback, StorageCommitmentLookup)