
001 002package ca.uhn.fhir.jpa.rp.r4; 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.r4.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="A (part of the) address of the location") 092 @OptionalParam(name="address") 093 StringAndListParam theAddress, 094 095 096 @Description(shortDefinition="A city specified in an address") 097 @OptionalParam(name="address-city") 098 StringAndListParam theAddress_city, 099 100 101 @Description(shortDefinition="A country specified in an address") 102 @OptionalParam(name="address-country") 103 StringAndListParam theAddress_country, 104 105 106 @Description(shortDefinition="A postal code specified in an address") 107 @OptionalParam(name="address-postalcode") 108 StringAndListParam theAddress_postalcode, 109 110 111 @Description(shortDefinition="A state specified in an address") 112 @OptionalParam(name="address-state") 113 StringAndListParam theAddress_state, 114 115 116 @Description(shortDefinition="A use code specified in an address") 117 @OptionalParam(name="address-use") 118 TokenAndListParam theAddress_use, 119 120 121 @Description(shortDefinition="Technical endpoints providing access to services operated for the location") 122 @OptionalParam(name="endpoint", targetTypes={ } ) 123 ReferenceAndListParam theEndpoint, 124 125 126 @Description(shortDefinition="An identifier for the location") 127 @OptionalParam(name="identifier") 128 TokenAndListParam theIdentifier, 129 130 131 @Description(shortDefinition="A portion of the location's name or alias") 132 @OptionalParam(name="name") 133 StringAndListParam theName, 134 135 136 @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") 137 @OptionalParam(name="near") 138 SpecialAndListParam theNear, 139 140 141 @Description(shortDefinition="Searches for locations (typically bed/room) that have an operational status (e.g. contaminated, housekeeping)") 142 @OptionalParam(name="operational-status") 143 TokenAndListParam theOperational_status, 144 145 146 @Description(shortDefinition="Searches for locations that are managed by the provided organization") 147 @OptionalParam(name="organization", targetTypes={ } ) 148 ReferenceAndListParam theOrganization, 149 150 151 @Description(shortDefinition="A location of which this location is a part") 152 @OptionalParam(name="partof", targetTypes={ } ) 153 ReferenceAndListParam thePartof, 154 155 156 @Description(shortDefinition="Searches for locations with a specific kind of status") 157 @OptionalParam(name="status") 158 TokenAndListParam theStatus, 159 160 161 @Description(shortDefinition="A code for the type of location") 162 @OptionalParam(name="type") 163 TokenAndListParam theType, 164 165 @RawParam 166 Map<String, List<String>> theAdditionalRawParams, 167 168 169 @IncludeParam 170 Set<Include> theIncludes, 171 172 @IncludeParam(reverse=true) 173 Set<Include> theRevIncludes, 174 175 @Sort 176 SortSpec theSort, 177 178 @ca.uhn.fhir.rest.annotation.Count 179 Integer theCount, 180 181 @ca.uhn.fhir.rest.annotation.Offset 182 Integer theOffset, 183 184 SummaryEnum theSummaryMode, 185 186 SearchTotalModeEnum theSearchTotalMode, 187 188 SearchContainedModeEnum theSearchContainedMode 189 190 ) { 191 startRequest(theServletRequest); 192 try { 193 SearchParameterMap paramMap = new SearchParameterMap(); 194 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_FILTER, theFtFilter); 195 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_CONTENT, theFtContent); 196 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_TEXT, theFtText); 197 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_SOURCE, theSearchForSource); 198 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_LIST, theList); 199 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_LANGUAGE, theResourceLanguage); 200 201 paramMap.add("_has", theHas); 202 paramMap.add("_id", the_id); 203 paramMap.add("_profile", the_profile); 204 paramMap.add("_security", the_security); 205 paramMap.add("_tag", the_tag); 206 paramMap.add("address", theAddress); 207 paramMap.add("address-city", theAddress_city); 208 paramMap.add("address-country", theAddress_country); 209 paramMap.add("address-postalcode", theAddress_postalcode); 210 paramMap.add("address-state", theAddress_state); 211 paramMap.add("address-use", theAddress_use); 212 paramMap.add("endpoint", theEndpoint); 213 paramMap.add("identifier", theIdentifier); 214 paramMap.add("name", theName); 215 paramMap.add("near", theNear); 216 paramMap.add("operational-status", theOperational_status); 217 paramMap.add("organization", theOrganization); 218 paramMap.add("partof", thePartof); 219 paramMap.add("status", theStatus); 220 paramMap.add("type", theType); 221paramMap.setRevIncludes(theRevIncludes); 222 paramMap.setLastUpdated(the_lastUpdated); 223 paramMap.setIncludes(theIncludes); 224 paramMap.setSort(theSort); 225 paramMap.setCount(theCount); 226 paramMap.setOffset(theOffset); 227 paramMap.setSummaryMode(theSummaryMode); 228 paramMap.setSearchTotalMode(theSearchTotalMode); 229 paramMap.setSearchContainedMode(theSearchContainedMode); 230 231 getDao().translateRawParameters(theAdditionalRawParams, paramMap); 232 233 ca.uhn.fhir.rest.api.server.IBundleProvider retVal = getDao().search(paramMap, theRequestDetails, theServletResponse); 234 return retVal; 235 } finally { 236 endRequest(theServletRequest); 237 } 238 } 239 240}