
001 002package ca.uhn.fhir.jpa.rp.r4b; 003 004import java.util.*; 005 006import org.apache.commons.lang3.StringUtils; 007 008import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; 009import ca.uhn.fhir.model.api.Include; 010import ca.uhn.fhir.model.api.annotation.*; 011import org.hl7.fhir.r4b.model.*; 012import ca.uhn.fhir.rest.annotation.*; 013import ca.uhn.fhir.rest.param.*; 014import ca.uhn.fhir.rest.api.SortSpec; 015import ca.uhn.fhir.rest.api.SummaryEnum; 016import ca.uhn.fhir.rest.api.SearchTotalModeEnum; 017import ca.uhn.fhir.rest.api.SearchContainedModeEnum; 018 019public class LocationResourceProvider extends 020 ca.uhn.fhir.jpa.provider.BaseJpaResourceProvider<Location> 021 { 022 023 @Override 024 public Class<Location> getResourceType() { 025 return Location.class; 026 } 027 028 @Search(allowUnknownParams=true) 029 public ca.uhn.fhir.rest.api.server.IBundleProvider search( 030 jakarta.servlet.http.HttpServletRequest theServletRequest, 031 jakarta.servlet.http.HttpServletResponse theServletResponse, 032 033 ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails, 034 035 @Description(shortDefinition="Search the contents of the resource's data using a filter") 036 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_FILTER) 037 StringAndListParam theFtFilter, 038 039 @Description(shortDefinition="Search the contents of the resource's data using a fulltext search") 040 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_CONTENT) 041 StringAndListParam theFtContent, 042 043 @Description(shortDefinition="Search the contents of the resource's narrative using a fulltext search") 044 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_TEXT) 045 StringAndListParam theFtText, 046 047 048 @Description(shortDefinition="Search the contents of the resource's data using a list") 049 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_LIST) 050 StringAndListParam theList, 051 052 @Description(shortDefinition="The language of the resource") 053 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_LANGUAGE) 054 TokenAndListParam theResourceLanguage, 055 056 @Description(shortDefinition="Search for resources which have the given source value (Resource.meta.source)") 057 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_SOURCE) 058 UriAndListParam theSearchForSource, 059 060 @Description(shortDefinition="Return resources linked to by the given target") 061 @OptionalParam(name="_has") 062 HasAndListParam theHas, 063 064 065 066 @Description(shortDefinition="The ID of the resource") 067 @OptionalParam(name="_id") 068 TokenAndListParam the_id, 069 070 071 @Description(shortDefinition="Only return resources which were last updated as specified by the given range") 072 @OptionalParam(name="_lastUpdated") 073 DateRangeParam the_lastUpdated, 074 075 076 @Description(shortDefinition="The profile of the resource") 077 @OptionalParam(name="_profile") 078 UriAndListParam the_profile, 079 080 081 @Description(shortDefinition="The security of the resource") 082 @OptionalParam(name="_security") 083 TokenAndListParam the_security, 084 085 086 @Description(shortDefinition="The tag of the resource") 087 @OptionalParam(name="_tag") 088 TokenAndListParam the_tag, 089 090 091 @Description(shortDefinition="Search on the narrative of the resource") 092 @OptionalParam(name="_text") 093 StringAndListParam the_text, 094 095 096 @Description(shortDefinition="A (part of the) address of the location") 097 @OptionalParam(name="address") 098 StringAndListParam theAddress, 099 100 101 @Description(shortDefinition="A city specified in an address") 102 @OptionalParam(name="address-city") 103 StringAndListParam theAddress_city, 104 105 106 @Description(shortDefinition="A country specified in an address") 107 @OptionalParam(name="address-country") 108 StringAndListParam theAddress_country, 109 110 111 @Description(shortDefinition="A postal code specified in an address") 112 @OptionalParam(name="address-postalcode") 113 StringAndListParam theAddress_postalcode, 114 115 116 @Description(shortDefinition="A state specified in an address") 117 @OptionalParam(name="address-state") 118 StringAndListParam theAddress_state, 119 120 121 @Description(shortDefinition="A use code specified in an address") 122 @OptionalParam(name="address-use") 123 TokenAndListParam theAddress_use, 124 125 126 @Description(shortDefinition="Technical endpoints providing access to services operated for the location") 127 @OptionalParam(name="endpoint", targetTypes={ } ) 128 ReferenceAndListParam theEndpoint, 129 130 131 @Description(shortDefinition="An identifier for the location") 132 @OptionalParam(name="identifier") 133 TokenAndListParam theIdentifier, 134 135 136 @Description(shortDefinition="A portion of the location's name or alias") 137 @OptionalParam(name="name") 138 StringAndListParam theName, 139 140 141 @Description(shortDefinition="Search for locations where the location.position is near to, or within a specified distance of, the provided coordinates expressed as [latitude]|[longitude]|[distance]|[units] (using the WGS84 datum, see notes).If the units are omitted, then kms should be assumed. If the distance is omitted, then the server can use its own discretion as to what distances should be considered near (and units are irrelevant)Servers may search using various techniques that might have differing accuracies, depending on implementation efficiency.Requires the near-distance parameter to be provided also") 142 @OptionalParam(name="near") 143 SpecialAndListParam theNear, 144 145 146 @Description(shortDefinition="Searches for locations (typically bed/room) that have an operational status (e.g. contaminated, housekeeping)") 147 @OptionalParam(name="operational-status") 148 TokenAndListParam theOperational_status, 149 150 151 @Description(shortDefinition="Searches for locations that are managed by the provided organization") 152 @OptionalParam(name="organization", targetTypes={ } ) 153 ReferenceAndListParam theOrganization, 154 155 156 @Description(shortDefinition="A location of which this location is a part") 157 @OptionalParam(name="partof", targetTypes={ } ) 158 ReferenceAndListParam thePartof, 159 160 161 @Description(shortDefinition="Searches for locations with a specific kind of status") 162 @OptionalParam(name="status") 163 TokenAndListParam theStatus, 164 165 166 @Description(shortDefinition="A code for the type of location") 167 @OptionalParam(name="type") 168 TokenAndListParam theType, 169 170 @RawParam 171 Map<String, List<String>> theAdditionalRawParams, 172 173 174 @IncludeParam 175 Set<Include> theIncludes, 176 177 @IncludeParam(reverse=true) 178 Set<Include> theRevIncludes, 179 180 @Sort 181 SortSpec theSort, 182 183 @ca.uhn.fhir.rest.annotation.Count 184 Integer theCount, 185 186 @ca.uhn.fhir.rest.annotation.Offset 187 Integer theOffset, 188 189 SummaryEnum theSummaryMode, 190 191 SearchTotalModeEnum theSearchTotalMode, 192 193 SearchContainedModeEnum theSearchContainedMode 194 195 ) { 196 startRequest(theServletRequest); 197 try { 198 SearchParameterMap paramMap = new SearchParameterMap(); 199 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_FILTER, theFtFilter); 200 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_CONTENT, theFtContent); 201 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_TEXT, theFtText); 202 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_SOURCE, theSearchForSource); 203 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_LIST, theList); 204 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_LANGUAGE, theResourceLanguage); 205 206 paramMap.add("_has", theHas); 207 paramMap.add("_id", the_id); 208 paramMap.add("_profile", the_profile); 209 paramMap.add("_security", the_security); 210 paramMap.add("_tag", the_tag); 211 paramMap.add("_text", the_text); 212 paramMap.add("address", theAddress); 213 paramMap.add("address-city", theAddress_city); 214 paramMap.add("address-country", theAddress_country); 215 paramMap.add("address-postalcode", theAddress_postalcode); 216 paramMap.add("address-state", theAddress_state); 217 paramMap.add("address-use", theAddress_use); 218 paramMap.add("endpoint", theEndpoint); 219 paramMap.add("identifier", theIdentifier); 220 paramMap.add("name", theName); 221 paramMap.add("near", theNear); 222 paramMap.add("operational-status", theOperational_status); 223 paramMap.add("organization", theOrganization); 224 paramMap.add("partof", thePartof); 225 paramMap.add("status", theStatus); 226 paramMap.add("type", theType); 227paramMap.setRevIncludes(theRevIncludes); 228 paramMap.setLastUpdated(the_lastUpdated); 229 paramMap.setIncludes(theIncludes); 230 paramMap.setSort(theSort); 231 paramMap.setCount(theCount); 232 paramMap.setOffset(theOffset); 233 paramMap.setSummaryMode(theSummaryMode); 234 paramMap.setSearchTotalMode(theSearchTotalMode); 235 paramMap.setSearchContainedMode(theSearchContainedMode); 236 237 getDao().translateRawParameters(theAdditionalRawParams, paramMap); 238 239 ca.uhn.fhir.rest.api.server.IBundleProvider retVal = getDao().search(paramMap, theRequestDetails, theServletResponse); 240 return retVal; 241 } finally { 242 endRequest(theServletRequest); 243 } 244 } 245 246}