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 @Description(shortDefinition="Search for resources which have the given tag") 048 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_TAG) 049 TokenAndListParam theSearchForTag, 050 051 @Description(shortDefinition="Search for resources which have the given security labels") 052 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_SECURITY) 053 TokenAndListParam theSearchForSecurity, 054 055 @Description(shortDefinition="Search for resources which have the given profile") 056 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_PROFILE) 057 UriAndListParam theSearchForProfile, 058 059 @Description(shortDefinition="Search the contents of the resource's data using a list") 060 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_LIST) 061 StringAndListParam theList, 062 063 @Description(shortDefinition="The language of the resource") 064 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_LANGUAGE) 065 TokenAndListParam theResourceLanguage, 066 067 @Description(shortDefinition="Search for resources which have the given source value (Resource.meta.source)") 068 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_SOURCE) 069 UriAndListParam theSearchForSource, 070 071 @Description(shortDefinition="Return resources linked to by the given target") 072 @OptionalParam(name="_has") 073 HasAndListParam theHas, 074 075 076 077 @Description(shortDefinition="The ID of the resource") 078 @OptionalParam(name="_id") 079 TokenAndListParam the_id, 080 081 082 @Description(shortDefinition="Search on the narrative of the resource") 083 @OptionalParam(name="_text") 084 StringAndListParam the_text, 085 086 087 @Description(shortDefinition="A (part of the) address of the location") 088 @OptionalParam(name="address") 089 StringAndListParam theAddress, 090 091 092 @Description(shortDefinition="A city specified in an address") 093 @OptionalParam(name="address-city") 094 StringAndListParam theAddress_city, 095 096 097 @Description(shortDefinition="A country specified in an address") 098 @OptionalParam(name="address-country") 099 StringAndListParam theAddress_country, 100 101 102 @Description(shortDefinition="A postal code specified in an address") 103 @OptionalParam(name="address-postalcode") 104 StringAndListParam theAddress_postalcode, 105 106 107 @Description(shortDefinition="A state specified in an address") 108 @OptionalParam(name="address-state") 109 StringAndListParam theAddress_state, 110 111 112 @Description(shortDefinition="A use code specified in an address") 113 @OptionalParam(name="address-use") 114 TokenAndListParam theAddress_use, 115 116 117 @Description(shortDefinition="Technical endpoints providing access to services operated for the location") 118 @OptionalParam(name="endpoint", targetTypes={ } ) 119 ReferenceAndListParam theEndpoint, 120 121 122 @Description(shortDefinition="An identifier for the location") 123 @OptionalParam(name="identifier") 124 TokenAndListParam theIdentifier, 125 126 127 @Description(shortDefinition="A portion of the location's name or alias") 128 @OptionalParam(name="name") 129 StringAndListParam theName, 130 131 132 @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") 133 @OptionalParam(name="near") 134 SpecialAndListParam theNear, 135 136 137 @Description(shortDefinition="Searches for locations (typically bed/room) that have an operational status (e.g. contaminated, housekeeping)") 138 @OptionalParam(name="operational-status") 139 TokenAndListParam theOperational_status, 140 141 142 @Description(shortDefinition="Searches for locations that are managed by the provided organization") 143 @OptionalParam(name="organization", targetTypes={ } ) 144 ReferenceAndListParam theOrganization, 145 146 147 @Description(shortDefinition="A location of which this location is a part") 148 @OptionalParam(name="partof", targetTypes={ } ) 149 ReferenceAndListParam thePartof, 150 151 152 @Description(shortDefinition="Searches for locations with a specific kind of status") 153 @OptionalParam(name="status") 154 TokenAndListParam theStatus, 155 156 157 @Description(shortDefinition="A code for the type of location") 158 @OptionalParam(name="type") 159 TokenAndListParam theType, 160 161 @RawParam 162 Map<String, List<String>> theAdditionalRawParams, 163 164 @Description(shortDefinition="Only return resources which were last updated as specified by the given range") 165 @OptionalParam(name="_lastUpdated") 166 DateRangeParam theLastUpdated, 167 168 @IncludeParam 169 Set<Include> theIncludes, 170 171 @IncludeParam(reverse=true) 172 Set<Include> theRevIncludes, 173 174 @Sort 175 SortSpec theSort, 176 177 @ca.uhn.fhir.rest.annotation.Count 178 Integer theCount, 179 180 @ca.uhn.fhir.rest.annotation.Offset 181 Integer theOffset, 182 183 SummaryEnum theSummaryMode, 184 185 SearchTotalModeEnum theSearchTotalMode, 186 187 SearchContainedModeEnum theSearchContainedMode 188 189 ) { 190 startRequest(theServletRequest); 191 try { 192 SearchParameterMap paramMap = new SearchParameterMap(); 193 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_FILTER, theFtFilter); 194 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_CONTENT, theFtContent); 195 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_TEXT, theFtText); 196 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_TAG, theSearchForTag); 197 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_SECURITY, theSearchForSecurity); 198 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_PROFILE, theSearchForProfile); 199 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_SOURCE, theSearchForSource); 200 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_LIST, theList); 201 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_LANGUAGE, theResourceLanguage); 202 203 paramMap.add("_has", theHas); 204 paramMap.add("_id", the_id); 205 paramMap.add("_text", the_text); 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); 221 paramMap.setRevIncludes(theRevIncludes); 222 paramMap.setLastUpdated(theLastUpdated); 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}