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