32 lines
1.1 KiB
Java
32 lines
1.1 KiB
Java
package some.custom.pkg1;
|
|
|
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
|
import org.hl7.fhir.r4.model.Extension;
|
|
import org.hl7.fhir.r4.model.Patient;
|
|
import org.hl7.fhir.r4.model.StringType;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import ca.uhn.fhir.interceptor.api.Hook;
|
|
import ca.uhn.fhir.interceptor.api.Interceptor;
|
|
import ca.uhn.fhir.interceptor.api.Pointcut;
|
|
import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
|
|
import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails;
|
|
|
|
@Interceptor
|
|
@Component
|
|
public class CustomInterceptorBean {
|
|
|
|
@Hook(Pointcut.SERVER_INCOMING_REQUEST_PRE_HANDLED)
|
|
void preHandleResource(ServletRequestDetails servletRequestDetails, RestOperationTypeEnum opType) {
|
|
IBaseResource resource = servletRequestDetails.getResource();
|
|
|
|
// add an extension before saving the resource to mark it
|
|
if (opType == RestOperationTypeEnum.CREATE && resource instanceof Patient) {
|
|
Patient pat = (Patient) resource;
|
|
Extension ext = pat.addExtension();
|
|
ext.setUrl("http://some.custom.pkg1/CustomInterceptorBean");
|
|
ext.setValue(new StringType("CustomInterceptorBean wuz here"));
|
|
}
|
|
}
|
|
}
|