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