View Javadoc
1   /*
2    * Copyright 2017 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.hpd;
17  
18  import lombok.AllArgsConstructor;
19  import lombok.Getter;
20  import org.openehealth.ipf.commons.ihe.core.IntegrationProfile;
21  import org.openehealth.ipf.commons.ihe.core.InteractionId;
22  import org.openehealth.ipf.commons.ihe.hpd.chpidd.ChPiddPortType;
23  import org.openehealth.ipf.commons.ihe.hpd.iti58.Iti58PortType;
24  import org.openehealth.ipf.commons.ihe.hpd.iti59.*;
25  import org.openehealth.ipf.commons.ihe.ws.WsInteractionId;
26  import org.openehealth.ipf.commons.ihe.ws.WsTransactionConfiguration;
27  import org.openehealth.ipf.commons.ihe.ws.cxf.audit.WsAuditDataset;
28  
29  import javax.xml.namespace.QName;
30  import java.util.ArrayList;
31  import java.util.Arrays;
32  import java.util.Collections;
33  import java.util.List;
34  
35  /**
36   * @author Dmytro Rud
37   */
38  public class HPD implements IntegrationProfile {
39  
40      @AllArgsConstructor
41      public enum ReadInteractions implements WsInteractionId<WsTransactionConfiguration<WsAuditDataset>> {
42          ITI_58(ITI_58_WS_CONFIG),
43          CH_PIDD(CH_PIDD_WS_CONFIG);
44  
45          @Getter
46          private WsTransactionConfiguration<WsAuditDataset> wsTransactionConfiguration;
47      }
48  
49      @AllArgsConstructor
50      public enum FeedInteractions implements WsInteractionId<WsTransactionConfiguration<Iti59AuditDataset>> {
51          ITI_59(ITI_59_WS_CONFIG);
52  
53          @Getter
54          private WsTransactionConfiguration<Iti59AuditDataset> wsTransactionConfiguration;
55      }
56  
57      @Override
58      public List<InteractionId> getInteractionIds() {
59          List<InteractionId> interactions = new ArrayList<>();
60          interactions.addAll(Arrays.asList(FeedInteractions.values()));
61          interactions.addAll(Arrays.asList(ReadInteractions.values()));
62          return Collections.unmodifiableList(interactions);
63      }
64  
65      private final static WsTransactionConfiguration<WsAuditDataset> ITI_58_WS_CONFIG = new WsTransactionConfiguration<>(
66              "hpd-iti58",
67              "Provider Information Query",
68              true,
69              null, // audit trail is not defined for ITI-58
70              null, // audit trail is not defined for ITI-58
71              new QName("urn:ihe:iti:hpd:2010", "ProviderInformationDirectory_Service"),
72              Iti58PortType.class,
73              new QName("urn:ihe:iti:hpd:2010", "ProviderInformationDirectory_Binding"),
74              false,
75              "wsdl/iti58.wsdl",
76              true,
77              false,
78              false,
79              false);
80  
81      private final static WsTransactionConfiguration<Iti59AuditDataset> ITI_59_WS_CONFIG = new WsTransactionConfiguration<>(
82              "hpd-iti59",
83              "Provider Information Feed",
84              true,
85              new Iti59ClientAuditStrategy(),
86              new Iti59ServerAuditStrategy(),
87              new QName("urn:ihe:iti:hpd:2010", "ProviderInformationDirectory_Service"),
88              Iti59PortType.class,
89              new QName("urn:ihe:iti:hpd:2010", "ProviderInformationDirectory_Binding"),
90              false,
91              "wsdl/iti59.wsdl",
92              true,
93              false,
94              false,
95              false);
96  
97      private final static WsTransactionConfiguration<WsAuditDataset> CH_PIDD_WS_CONFIG = new WsTransactionConfiguration<>(
98              "ch-pidd",
99              "Provider Information Delta Download (Swiss HPD extension)",
100             true,
101             null, // audit trail is not defined for CH-PIDD
102             null, // audit trail is not defined for CH-PIDD
103             new QName("urn:ihe:iti:hpd:2010", "ProviderInformationDirectory_Service"),
104             ChPiddPortType.class,
105             new QName("urn:ihe:iti:hpd:2010", "ProviderInformationDirectory_Binding"),
106             false,
107             "wsdl/ch-pidd.wsdl",
108             true,
109             false,
110             false,
111             false);
112 
113 }