View Javadoc
1   /*
2    * Copyright 2012 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30;
17  
18  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLRetrieveImagingDocumentSetRequest;
19  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30.RetrieveDocumentSetRequestType.DocumentRequest;
20  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30.RetrieveImagingDocumentSetRequestType.StudyRequest;
21  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30.RetrieveImagingDocumentSetRequestType.SeriesRequest;
22  import org.openehealth.ipf.commons.ihe.xds.core.requests.DocumentReference;
23  import org.openehealth.ipf.commons.ihe.xds.core.requests.RetrieveSeries;
24  import org.openehealth.ipf.commons.ihe.xds.core.requests.RetrieveStudy;
25  
26  import java.util.ArrayList;
27  import java.util.List;
28  
29  import static org.apache.commons.lang3.Validate.notNull;
30  
31  /**
32   * The ebXML 3.0 version of the {@link EbXMLRetrieveImagingDocumentSetRequest}.
33   *
34   * @author Clay Sebourn
35   */
36  public class EbXMLRetrieveImagingDocumentSetRequest30 implements EbXMLRetrieveImagingDocumentSetRequest {
37      private final RetrieveImagingDocumentSetRequestType request;
38  
39      /**
40       * Constructs a request by wrapping the given ebXML 3.0 object.
41       * @param request   the object to wrap.
42       */
43      public EbXMLRetrieveImagingDocumentSetRequest30(RetrieveImagingDocumentSetRequestType request) {
44          notNull(request, "request cannot be null");
45          this.request = request;
46      }
47  
48      @Override
49      public RetrieveImagingDocumentSetRequestType getInternal() {
50          return request;
51      }
52  
53      @Override
54      public List<RetrieveStudy> getRetrieveStudies() {
55          List<RetrieveStudy> retrieveStudies = new ArrayList<>();
56          for (StudyRequest studyRequest : request.getStudyRequest())
57          {
58              RetrieveStudy retrieveStudy = new RetrieveStudy();
59              retrieveStudy.setStudyInstanceUID(studyRequest.getStudyInstanceUID());
60              for (SeriesRequest seriesRequest : studyRequest.getSeriesRequest())
61              {
62                  RetrieveSeries retrieveSeries = new RetrieveSeries();
63                  retrieveSeries.setSeriesInstanceUID(seriesRequest.getSeriesInstanceUID());
64                  for (DocumentRequest documentRequest : seriesRequest.getDocumentRequests())
65                  {
66                      DocumentReference documentReference = new DocumentReference();
67                      documentReference.setDocumentUniqueId(documentRequest.getDocumentUniqueId());
68                      documentReference.setHomeCommunityId(documentRequest.getHomeCommunityId());
69                      documentReference.setRepositoryUniqueId(documentRequest.getRepositoryUniqueId());
70                      retrieveSeries.getDocuments().add(documentReference);
71                  }
72                  retrieveStudy.getRetrieveSerieses().add(retrieveSeries);
73              }
74              retrieveStudies.add(retrieveStudy);
75          }
76          return retrieveStudies;
77      }
78  
79      @Override
80      public List<String> getTransferSyntaxUIDList() {
81          List<String> transferSyntaxUIDs = new ArrayList<>();
82          transferSyntaxUIDs.addAll(request.getTransferSyntaxUIDList().getTransferSyntaxUID());
83          return transferSyntaxUIDs;
84      }
85  
86      @Override
87      public void setRetrieveStudies(List<RetrieveStudy> retrieveStudies) {
88          request.getStudyRequest().clear();
89          if (retrieveStudies != null) {
90              for (RetrieveStudy retrieveStudy : retrieveStudies)
91              {
92                  StudyRequest studyRequest = new StudyRequest();
93                  studyRequest.setStudyInstanceUID(retrieveStudy.getStudyInstanceUID());
94                  for ( RetrieveSeries retrieveSeries : retrieveStudy.getRetrieveSerieses())
95                  {
96                      SeriesRequest seriesRequest = new SeriesRequest();
97                      seriesRequest.setSeriesInstanceUID(retrieveSeries.getSeriesInstanceUID());
98                      for (DocumentReference documentReference : retrieveSeries.getDocuments())
99                      {
100                         DocumentRequest documentRequest = new DocumentRequest();
101                         documentRequest.setDocumentUniqueId(documentReference.getDocumentUniqueId());
102                         documentRequest.setHomeCommunityId(documentReference.getHomeCommunityId());
103                         documentRequest.setRepositoryUniqueId(documentReference.getRepositoryUniqueId());
104                         seriesRequest.getDocumentRequests().add(documentRequest);
105                     }
106                     studyRequest.getSeriesRequest().add(seriesRequest);
107                 }
108                 request.getStudyRequest().add(studyRequest);
109             }
110         }
111     }
112 
113     @Override
114     public void setTransferSyntaxUIDList(List<String> transferSyntaxUIDList) {
115         request.getTransferSyntaxUIDList().getTransferSyntaxUID().clear();
116         if (transferSyntaxUIDList != null) {
117             request.getTransferSyntaxUIDList().getTransferSyntaxUID().addAll(transferSyntaxUIDList);
118         }
119     }
120 }