77import com .fasterxml .jackson .databind .annotation .JsonSerialize ;
88import org .hl7 .davinci .r4 .JacksonBundleDeserializer ;
99import org .hl7 .davinci .r4 .JacksonHapiSerializer ;
10+ import org .hl7 .davinci .r4 .JacksonIBaseResourceDeserializer ;
11+ import org .hl7 .fhir .instance .model .api .IBase ;
12+ import org .hl7 .fhir .instance .model .api .IBaseResource ;
1013import org .hl7 .fhir .r4 .model .*;
1114import org .hl7 .fhir .r4 .model .Bundle .BundleEntryComponent ;
1215
1720public class CrdPrefetch {
1821
1922 @ JsonSerialize (using = JacksonHapiSerializer .class )
20- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
21- private Bundle coverageBundle ;
23+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
24+ private IBaseResource coverageBundle ;
2225
2326 @ JsonSerialize (using = JacksonHapiSerializer .class )
24- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
25- private Bundle deviceRequestBundle ;
27+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
28+ private IBaseResource deviceRequestBundle ;
2629
2730 @ JsonSerialize (using = JacksonHapiSerializer .class )
28- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
29- private Bundle medicationRequestBundle ;
31+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
32+ private IBaseResource medicationRequestBundle ;
3033
3134 @ JsonSerialize (using = JacksonHapiSerializer .class )
32- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
33- private Bundle nutritionOrderBundle ;
35+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
36+ private IBaseResource nutritionOrderBundle ;
3437
3538 @ JsonSerialize (using = JacksonHapiSerializer .class )
36- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
37- private Bundle serviceRequestBundle ;
39+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
40+ private IBaseResource serviceRequestBundle ;
3841
3942 @ JsonSerialize (using = JacksonHapiSerializer .class )
40- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
41- private Bundle supplyRequestBundle ;
43+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
44+ private IBaseResource supplyRequestBundle ;
4245
4346 @ JsonSerialize (using = JacksonHapiSerializer .class )
44- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
45- private Bundle appointmentBundle ;
47+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
48+ private IBaseResource appointmentBundle ;
4649
4750 @ JsonSerialize (using = JacksonHapiSerializer .class )
48- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
49- private Bundle encounterBundle ;
51+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
52+ private IBaseResource encounterBundle ;
5053
5154 @ JsonSerialize (using = JacksonHapiSerializer .class )
52- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
53- private Bundle medicationDispenseBundle ;
55+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
56+ private IBaseResource medicationDispenseBundle ;
5457
5558 @ JsonSerialize (using = JacksonHapiSerializer .class )
56- @ JsonDeserialize (using = JacksonBundleDeserializer .class )
57- private Bundle medicationStatementBundle ;
59+ @ JsonDeserialize (using = JacksonIBaseResourceDeserializer .class )
60+ private IBaseResource medicationStatementBundle ;
5861
59- public Bundle getCoverageBundle () {
62+ public IBaseResource getCoverageBundle () {
6063 if (coverageBundle == null ) {
6164 this .coverageBundle = new Bundle ();
6265 }
66+
67+ if (coverageBundle .getClass () != Bundle .class ) {
68+ return null ;
69+ }
70+
6371 return coverageBundle ;
6472 }
6573
66- public void setCoverageBundle (Bundle coverageBundle ) {
74+ public void setCoverageBundle (IBaseResource coverageBundle ) {
6775 this .coverageBundle = coverageBundle ;
6876 }
6977
70- public Bundle getDeviceRequestBundle () {
78+ public IBaseResource getDeviceRequestBundle () {
7179 return deviceRequestBundle ;
7280 }
7381
74- public void setDeviceRequestBundle (Bundle deviceRequestBundle ) {
82+ public void setDeviceRequestBundle (IBaseResource deviceRequestBundle ) {
7583 this .deviceRequestBundle = deviceRequestBundle ;
7684 }
7785
78- public Bundle getMedicationRequestBundle () {
86+ public IBaseResource getMedicationRequestBundle () {
7987 return medicationRequestBundle ;
8088 }
8189
82- public void setMedicationRequestBundle (Bundle medicationRequestBundle ) { this .medicationRequestBundle = medicationRequestBundle ; }
90+ public void setMedicationRequestBundle (IBaseResource medicationRequestBundle ) { this .medicationRequestBundle = medicationRequestBundle ; }
8391
84- public Bundle getMedicationDispenseBundle () {
92+ public IBaseResource getMedicationDispenseBundle () {
8593 return medicationDispenseBundle ;
8694 }
8795
88- public void setMedicationDispenseBundle (Bundle medicationDispenseBundle ) { this .medicationDispenseBundle = medicationDispenseBundle ; }
96+ public void setMedicationDispenseBundle (IBaseResource medicationDispenseBundle ) { this .medicationDispenseBundle = medicationDispenseBundle ; }
8997
90- public Bundle getNutritionOrderBundle () {
98+ public IBaseResource getNutritionOrderBundle () {
9199 return nutritionOrderBundle ;
92100 }
93101
94- public void setNutritionOrderBundle (Bundle nutritionOrderBundle ) {
102+ public void setNutritionOrderBundle (IBaseResource nutritionOrderBundle ) {
95103 this .nutritionOrderBundle = nutritionOrderBundle ;
96104 }
97105
98- public Bundle getServiceRequestBundle () {
106+ public IBaseResource getServiceRequestBundle () {
99107 return serviceRequestBundle ;
100108 }
101109
102- public void setServiceRequestBundle (Bundle serviceRequestBundle ) {
110+ public void setServiceRequestBundle (IBaseResource serviceRequestBundle ) {
103111 this .serviceRequestBundle = serviceRequestBundle ;
104112 }
105113
106- public Bundle getSupplyRequestBundle () {
114+ public IBaseResource getSupplyRequestBundle () {
107115 return supplyRequestBundle ;
108116 }
109117
110- public void setSupplyRequestBundle (Bundle supplyRequestBundle ) {
118+ public void setSupplyRequestBundle (IBaseResource supplyRequestBundle ) {
111119 this .supplyRequestBundle = supplyRequestBundle ;
112120 }
113121
114- public Bundle getAppointmentBundle () { return appointmentBundle ; }
122+ public IBaseResource getAppointmentBundle () {
123+ return appointmentBundle ;
124+ }
115125
116- public void setAppointmentBundle (Bundle appointmentBundle ) { this .appointmentBundle = appointmentBundle ; }
126+ public void setAppointmentBundle (IBaseResource appointmentBundle ) { this .appointmentBundle = appointmentBundle ; }
117127
118- public Bundle getEncounterBundle () { return encounterBundle ; }
128+ public IBaseResource getEncounterBundle () {
129+ return encounterBundle ;
130+ }
119131
120- public void setEncounterBundle (Bundle encounterBundle ) { this .encounterBundle = encounterBundle ; }
132+ public void setEncounterBundle (IBaseResource encounterBundle ) { this .encounterBundle = encounterBundle ; }
121133
122- public Bundle getMedicationStatementBundle () { return medicationStatementBundle ; }
134+ public IBaseResource getMedicationStatementBundle () {
135+ return medicationStatementBundle ; }
123136
124- public void setMedicationStatementBundle (Bundle medicationStatementBundle ) { this .medicationStatementBundle = medicationStatementBundle ; }
137+ public void setMedicationStatementBundle (IBaseResource medicationStatementBundle ) { this .medicationStatementBundle = medicationStatementBundle ; }
125138
126139 /**
127140 * Checks whether the given resource exists in the requested resource type.
128141 * @param id
129142 * @return
130143 */
131144 public boolean containsRequestResourceId (String id ) {
132- return this .bundleContainsResourceId (this .coverageBundle , id )
133- || this .bundleContainsResourceId (this .deviceRequestBundle , id )
134- || this .bundleContainsResourceId (this .medicationRequestBundle , id )
135- || this .bundleContainsResourceId (this .nutritionOrderBundle , id )
136- || this .bundleContainsResourceId (this .serviceRequestBundle , id )
137- || this .bundleContainsResourceId (this .supplyRequestBundle , id )
138- || this .bundleContainsResourceId (this .appointmentBundle , id )
139- || this .bundleContainsResourceId (this .encounterBundle , id )
140- || this .bundleContainsResourceId (this .medicationDispenseBundle , id )
141- || this .bundleContainsResourceId (this .medicationStatementBundle , id );
145+ return this .bundleContainsResourceId (this .getCoverageBundle () , id )
146+ || this .bundleContainsResourceId (this .getDeviceRequestBundle () , id )
147+ || this .bundleContainsResourceId (this .getMedicationRequestBundle () , id )
148+ || this .bundleContainsResourceId (this .getNutritionOrderBundle () , id )
149+ || this .bundleContainsResourceId (this .getServiceRequestBundle () , id )
150+ || this .bundleContainsResourceId (this .getSupplyRequestBundle () , id )
151+ || this .bundleContainsResourceId (this .getAppointmentBundle () , id )
152+ || this .bundleContainsResourceId (this .getEncounterBundle () , id )
153+ || this .bundleContainsResourceId (this .getMedicationDispenseBundle () , id )
154+ || this .bundleContainsResourceId (this .getMedicationStatementBundle () , id );
142155 }
143156
144157 /**
@@ -147,42 +160,64 @@ public boolean containsRequestResourceId(String id) {
147160 * @param id
148161 * @return
149162 */
150- private boolean bundleContainsResourceId (Bundle bundle , String id ) {
151- if (bundle == null ) {
163+ private boolean bundleContainsResourceId (IBaseResource bundle , String id ) {
164+ if (bundle == null || bundle . getClass () != Bundle . class ) {
152165 return false ;
153166 }
167+
154168 if (id .contains ("/" )) {
155169 String [] splitId = id .split ("/" );
156170 id = splitId [splitId .length -1 ];
157171 }
158172 final String idToCheck = id ;
159- return bundle .getEntry ().stream ().anyMatch (entry -> entry .getResource ().getId ().contains (idToCheck ));
173+ return (( Bundle ) bundle ) .getEntry ().stream ().anyMatch (entry -> entry .getResource ().getId ().contains (idToCheck ));
160174 }
161175
162176 @ Override
163177 public String toString () {
178+
164179 List <BundleEntryComponent > entries = new ArrayList <>();
165- if (this .deviceRequestBundle != null ) {
166- entries .addAll (this .deviceRequestBundle .getEntry ());
167- } if (this .nutritionOrderBundle != null ){
168- entries .addAll (this .nutritionOrderBundle .getEntry ());
169- } if (this .serviceRequestBundle != null ){
170- entries .addAll (this .serviceRequestBundle .getEntry ());
171- } if (this .medicationDispenseBundle != null ){
172- entries .addAll (this .medicationDispenseBundle .getEntry ());
173- } if (this .medicationStatementBundle != null ){
174- entries .addAll (this .medicationStatementBundle .getEntry ());
175- } if (this .encounterBundle != null ){
176- entries .addAll (this .encounterBundle .getEntry ());
177- } if (this .appointmentBundle != null ){
178- entries .addAll (this .appointmentBundle .getEntry ());
179- } if (this .medicationRequestBundle != null ){
180- entries .addAll (this .medicationRequestBundle .getEntry ());
181- } if (this .supplyRequestBundle != null ){
182- entries .addAll (this .supplyRequestBundle .getEntry ());
183- } if (this .coverageBundle != null ) {
184- entries .addAll (this .coverageBundle .getEntry ());
180+
181+ if (this .deviceRequestBundle != null && this .deviceRequestBundle .getClass () == Bundle .class ) {
182+ entries .addAll (((Bundle )this .deviceRequestBundle ).getEntry ());
183+ }
184+
185+ if (this .nutritionOrderBundle != null && this .nutritionOrderBundle .getClass () == Bundle .class ){
186+ entries .addAll (((Bundle )this .nutritionOrderBundle ).getEntry ());
187+ }
188+
189+ if (this .serviceRequestBundle != null && this .serviceRequestBundle .getClass () == Bundle .class ){
190+ entries .addAll (((Bundle )this .serviceRequestBundle ).getEntry ());
191+ }
192+
193+ if (this .medicationDispenseBundle != null && this .medicationDispenseBundle .getClass () == Bundle .class ){
194+ entries .addAll (((Bundle )this .medicationDispenseBundle ).getEntry ());
185195 }
196+
197+ if (this .medicationStatementBundle != null && this .medicationStatementBundle .getClass () == Bundle .class ){
198+ entries .addAll (((Bundle )this .medicationStatementBundle ).getEntry ());
199+ }
200+
201+ if (this .encounterBundle != null && this .encounterBundle .getClass () == Bundle .class ){
202+ entries .addAll (((Bundle )this .encounterBundle ).getEntry ());
203+ }
204+
205+ if (this .appointmentBundle != null && this .appointmentBundle .getClass () == Bundle .class ){
206+ entries .addAll (((Bundle )this .appointmentBundle ).getEntry ());
207+ }
208+
209+ if (this .medicationRequestBundle != null && this .medicationRequestBundle .getClass () == Bundle .class ){
210+ entries .addAll (((Bundle )this .medicationRequestBundle ).getEntry ());
211+ }
212+
213+ if (this .supplyRequestBundle != null && this .supplyRequestBundle .getClass () == Bundle .class ){
214+ entries .addAll (((Bundle )this .supplyRequestBundle ).getEntry ());
215+ }
216+
217+ if (this .coverageBundle != null && this .coverageBundle .getClass () == Bundle .class ) {
218+ entries .addAll (((Bundle )this .coverageBundle ).getEntry ());
219+ }
220+
186221 StringBuilder sb = new StringBuilder ();
187222 sb .append ("[" );
188223 for (BundleEntryComponent entry : entries ) {
0 commit comments