001/*- 002 * #%L 003 * Smile CDR - CDR 004 * %% 005 * Copyright (C) 2016 - 2025 Smile CDR, Inc. 006 * %% 007 * All rights reserved. 008 * #L% 009 */ 010package ca.cdr.api.fhirgw.json; 011 012import ca.cdr.api.model.json.IModelJson; 013import ca.uhn.fhir.model.api.annotation.ExampleSupplier; 014import com.fasterxml.jackson.annotation.JsonProperty; 015import io.swagger.v3.oas.annotations.media.Schema; 016 017import java.util.ArrayList; 018import java.util.List; 019import java.util.function.Supplier; 020 021@Schema( 022 name = "GatewayConfiguration", 023 description = 024 "This is the outer document element containing configuration for the Smile CDR FHIR Gateway module.") 025@ExampleSupplier(GatewayConfigurationJson.ExampleSupplier.class) 026public class GatewayConfigurationJson implements IModelJson { 027 028 @JsonProperty("targets") 029 private List<GatewayTargetJson> myTargets; 030 031 @JsonProperty("searchRoutes") 032 private List<GatewaySearchRouteJson> mySearchRoutes; 033 034 @JsonProperty("readRoutes") 035 private List<GatewayReadRouteJson> myReadRoutes; 036 037 @JsonProperty("operationRoutes") 038 private List<GatewayOperationRouteJson> myOperationRoutes; 039 040 @JsonProperty("updateRoutes") 041 private List<GatewayUpdateRouteJson> myUpdateRoutes; 042 043 @JsonProperty("createRoutes") 044 private List<GatewayCreateRouteJson> myCreateRoutes; 045 046 @JsonProperty("deleteRoutes") 047 private List<GatewayDeleteRouteJson> myDeleteRoutes; 048 049 @JsonProperty("transactionRoutes") 050 private List<GatewayTransactionRouteJson> myTransactionRoutes; 051 052 @JsonProperty("historyRoutes") 053 private List<GatewayHistoryRouteJson> myHistoryRoutes; 054 055 public List<GatewayTargetJson> getTargets() { 056 if (myTargets == null) { 057 myTargets = new ArrayList<>(); 058 } 059 return myTargets; 060 } 061 062 public void setTargets(List<GatewayTargetJson> theTargets) { 063 myTargets = theTargets; 064 } 065 066 public List<GatewayReadRouteJson> getReadRoutes() { 067 if (myReadRoutes == null) { 068 myReadRoutes = new ArrayList<>(); 069 } 070 return myReadRoutes; 071 } 072 073 public void setReadRoutes(List<GatewayReadRouteJson> theReadRoutes) { 074 myReadRoutes = theReadRoutes; 075 } 076 077 public List<GatewaySearchRouteJson> getSearchRoutes() { 078 if (mySearchRoutes == null) { 079 mySearchRoutes = new ArrayList<>(); 080 } 081 return mySearchRoutes; 082 } 083 084 public void setSearchRoutes(List<GatewaySearchRouteJson> theSearchRoutes) { 085 mySearchRoutes = theSearchRoutes; 086 } 087 088 public GatewayTargetJson addTarget() { 089 GatewayTargetJson retVal = new GatewayTargetJson(); 090 getTargets().add(retVal); 091 return retVal; 092 } 093 094 public List<GatewayOperationRouteJson> getOperationRoutes() { 095 if (myOperationRoutes == null) { 096 myOperationRoutes = new ArrayList<>(); 097 } 098 return myOperationRoutes; 099 } 100 101 public void setOperationRoutes(List<GatewayOperationRouteJson> theOperationRoutes) { 102 myOperationRoutes = theOperationRoutes; 103 } 104 105 public List<GatewayUpdateRouteJson> getUpdateRoutes() { 106 if (myUpdateRoutes == null) { 107 myUpdateRoutes = new ArrayList<>(); 108 } 109 return myUpdateRoutes; 110 } 111 112 public void setUpdateRoutes(List<GatewayUpdateRouteJson> theUpdateRoutes) { 113 myUpdateRoutes = theUpdateRoutes; 114 } 115 116 public List<GatewayCreateRouteJson> getCreateRoutes() { 117 if (myCreateRoutes == null) { 118 myCreateRoutes = new ArrayList<>(); 119 } 120 return myCreateRoutes; 121 } 122 123 public void setCreateRoutes(List<GatewayCreateRouteJson> theCreateRoutes) { 124 myCreateRoutes = theCreateRoutes; 125 } 126 127 public List<GatewayDeleteRouteJson> getDeleteRoutes() { 128 if (myDeleteRoutes == null) { 129 myDeleteRoutes = new ArrayList<>(); 130 } 131 return myDeleteRoutes; 132 } 133 134 public void setDeleteRoutes(List<GatewayDeleteRouteJson> theDeleteRoutes) { 135 myDeleteRoutes = theDeleteRoutes; 136 } 137 138 public GatewayReadRouteJson addReadRoute() { 139 GatewayReadRouteJson retVal = new GatewayReadRouteJson(); 140 getReadRoutes().add(retVal); 141 return retVal; 142 } 143 144 public GatewaySearchRouteJson addSearchRoute() { 145 GatewaySearchRouteJson retVal = new GatewaySearchRouteJson(); 146 getSearchRoutes().add(retVal); 147 return retVal; 148 } 149 150 public GatewayOperationRouteJson addOperationRoute() { 151 GatewayOperationRouteJson retVal = new GatewayOperationRouteJson(); 152 getOperationRoutes().add(retVal); 153 return retVal; 154 } 155 156 public GatewayUpdateRouteJson addUpdateRoute() { 157 GatewayUpdateRouteJson retval = new GatewayUpdateRouteJson(); 158 getUpdateRoutes().add(retval); 159 return retval; 160 } 161 162 public GatewayCreateRouteJson addCreateRoute() { 163 GatewayCreateRouteJson retval = new GatewayCreateRouteJson(); 164 getCreateRoutes().add(retval); 165 return retval; 166 } 167 168 public GatewayDeleteRouteJson addDeleteRoute() { 169 GatewayDeleteRouteJson retval = new GatewayDeleteRouteJson(); 170 getDeleteRoutes().add(retval); 171 return retval; 172 } 173 174 public List<GatewayTransactionRouteJson> getTransactionRoutes() { 175 if (myTransactionRoutes == null) { 176 myTransactionRoutes = new ArrayList<>(); 177 } 178 return myTransactionRoutes; 179 } 180 181 public GatewayTransactionRouteJson addTransactionRoute() { 182 GatewayTransactionRouteJson retval = new GatewayTransactionRouteJson(); 183 getTransactionRoutes().add(retval); 184 return retval; 185 } 186 187 public void setTransactionRoutes(List<GatewayTransactionRouteJson> theTransactionRoutes) { 188 myTransactionRoutes = theTransactionRoutes; 189 } 190 191 public List<GatewayHistoryRouteJson> getHistoryRoutes() { 192 if (myHistoryRoutes == null) { 193 myHistoryRoutes = new ArrayList<>(); 194 } 195 return myHistoryRoutes; 196 } 197 198 public void setHistoryRoutes(List<GatewayHistoryRouteJson> theHistoryRoutes) { 199 myHistoryRoutes = theHistoryRoutes; 200 } 201 202 public static class ExampleSupplier implements Supplier<GatewayConfigurationJson> { 203 @Override 204 public GatewayConfigurationJson get() { 205 GatewayConfigurationJson retVal = new GatewayConfigurationJson(); 206 retVal.addTarget().setId("target1").setResourceIdPrefix("TGT1-").setBaseUrl("http://fhir1.example.com/api"); 207 retVal.addTarget().setId("target2").setResourceIdPrefix("TGT2-").setBaseUrl("http://fhir2.example.com/api"); 208 retVal.addSearchRoute() 209 .setId("route1") 210 .setParallel(true) 211 .addResourceType("Patient") 212 .addResourceType("Observation") 213 .addResourceType("Encounter") 214 .addTarget(new GatewayRouteTargetJson().setTargetId("target1")) 215 .addTarget(new GatewayRouteTargetJson().setTargetId("target2")); 216 217 return retVal; 218 } 219 } 220}