Pointcuts - Smile CDR Documentation
Pointcuts
This page shows all available pointcuts for each component of Smile CDR.
FHIR Generic Client
See the HAPI FHIR Client Pointcuts documentation for the request-processing pipeline and the CLIENT_REQUEST / CLIENT_RESPONSE pointcuts.
Persistence
Basic Persistence Pointcuts
See the HAPI FHIR Server Pointcuts documentation for the Storage / JPA Server pipeline and the full set of STORAGE_* pointcuts (STORAGE_PRESHOW_RESOURCES, STORAGE_PRESEARCH_REGISTERED, STORAGE_PRESTORAGE_RESOURCE_*, STORAGE_PRECOMMIT_RESOURCE_*, STORAGE_PREACCESS_RESOURCES, etc.).
Bulk Export Pointcuts
Job ID returned to caller
$export
request
Begin batch job
Enters job\ \ lifecycle\ \ (see Batch Job diagram) Java Hook:\ \ STORAGE_PRE_INITIATE_BULK_EXPORT\ \ (before permission checks) Java Hook:\ \ STORAGE_INITIATE_BULK_EXPORT Java Hook:\ \ STORAGE_BULK_EXPORT_RESOURCE_INCLUSION\ \ (per candidate resource). \ \ This is called from inside the batch job, but is shown here for pointcut completeness.
Binary created
Job complete
Batch Job Lifecycle
Client kicks off job
($reindex, $export,
$delete-expunge, ...)
Build JobInstance
(in memory)
Persist
to DB
Maintenance scheduler
picks up QUEUED job
Run job steps\ \ in parallel\ \ (chunk processing loop —\ \ see Chunk Processing diagram)
Final step completes;
job reaches terminal state
Batch job marked
as complete
Caller queries
results asynchronously
Java Hook:\ \ STORAGE_PRESTORAGE_BATCH_JOB_CREATE Java Hook:\ \ STORAGE_POSTSTORAGE_BATCH_JOB_CREATE Java Hook:\ \ STORAGE_POSTCOMPLETE_BATCH_JOB Work Chunk Processing
ok
error
Worker claims a
READY work chunk
Build new RequestDetails
for task execution context
Execute
step logic
Mark chunk COMPLETED;
queue next chunk(s)
Retry or mark
chunk FAILED
Java Hook:\ \ STORAGE_BATCH_TASK_NEW_REQUEST_DETAILS Java Hook:\ \ BATCH2_CHUNK_PROCESS_FILTER Java Hook:\ \ BATCH2_CHUNK_PROCESS_FILTER Java Hook:\ \ BATCH2_CHUNK_PROCESS_FILTER
Subscription
Subscription Module
Broker (Kafka/ActiveMQ)
Persistence Module
FHIR Endpoint Module
Deliverer
Matcher
yes
no
yes
Success
failure
A resource is
created / updated / deleted
Resource modification
received
Resource persisted
to database
Java Hook:\ \ SUBSCRIPTION_RESOURCE_MODIFIED\ \ (synchronous, in PERSISTENCE module)
Matching Queue
Delivery Queue
Did the resource match
any Subscription?
Is resource of
Type Subscription?
Java Hook:\ \ SUBSCRIPTION_BEFORE_PERSISTED_RESOURCE_CHECKED Java Hook:\ \ SUBSCRIPTION_AFTER_PERSISTED_RESOURCE_CHECKED Java Hook:\ \ SUBSCRIPTION_RESOURCE_DID_NOT_MATCH_ANY_SUBSCRIPTIONS Java Hook:\ \ SUBSCRIPTION_RESOURCE_MATCHED
Subscription
Matching
Java Hook:\ \ SUBSCRIPTION_AFTER_ACTIVE_SUBSCRIPTION_REGISTERED\ \ SUBSCRIPTION_AFTER_ACTIVE_SUBSCRIPTION_UNREGISTERED\ \ (when a Subscription resource is activated / removed) Java Hook:\ \ SUBSCRIPTION_BEFORE_DELIVERY\ \ SUBSCRIPTION_BEFORE_REST_HOOK_DELIVERY\ \ SUBSCRIPTION_BEFORE_MESSAGE_DELIVERY
Subscription
Delivery
Java Hook:\ \ SUBSCRIPTION_AFTER_DELIVERY\ \ SUBSCRIPTION_AFTER_REST_HOOK_DELIVERY\ \ SUBSCRIPTION_AFTER_MESSAGE_DELIVERY Java Hook:\ \ SUBSCRIPTION_AFTER_DELIVERY_FAILED\ \ (on delivery failure)
FHIR Endpoint
See the HAPI FHIR Server Pointcuts documentation for the plain-server request lifecycle and the full set of SERVER_* pointcuts (SERVER_INCOMING_REQUEST_*, SERVER_OUTGOING_*, SERVER_HANDLE_EXCEPTION, SERVER_PROCESSING_COMPLETED*, etc.).
Channel Import
Kafka /
ActiveMQ
Channel Import
Router
Resource
Ingested
Java Hook:\ \ CHANNEL_IMPORT_MESSAGE_PRE_PROCESSED
FHIR Gateway
GET / POST / PUT / DELETE
/Patient/123
Your application
Gateway Method
Called
Route
Selected
Target
Requests
Target
Responses
Target FHIR
Endpoints
Java Hook (post route selection):\ \ FHIRGW_CREATE_POST_SELECT_ROUTE\ \ FHIRGW_READ_POST_SELECT_ROUTE\ \ FHIRGW_UPDATE_POST_SELECT_ROUTE\ \ FHIRGW_DELETE_POST_SELECT_ROUTE\ \ FHIRGW_SEARCH_POST_SELECT_ROUTE\ \ FHIRGW_OPERATION_POST_SELECT_ROUTE\ \ FHIRGW_TRANSACTION_POST_SELECT_ROUTE\ \ FHIRGW_INSTANCE_HISTORY_POST_SELECT_ROUTE Java Hook (once per target):\ \ FHIRGW_CREATE_TARGET_PREINVOKE\ \ FHIRGW_READ_TARGET_PREINVOKE\ \ FHIRGW_UPDATE_TARGET_PREINVOKE\ \ FHIRGW_DELETE_TARGET_PREINVOKE\ \ FHIRGW_SEARCH_TARGET_PREINVOKE\ \ FHIRGW_SEARCH_PAGE_TARGET_PREINVOKE\ \ FHIRGW_OPERATION_TARGET_PREINVOKE\ \ FHIRGW_TRANSACTION_TARGET_PREINVOKE\ \ FHIRGW_INSTANCE_HISTORY_TARGET_PREINVOKE\ \ FHIRGW_GET_TARGET_PREINVOKE Java Hook (once per target):\ \ FHIRGW_READ_TARGET_POSTINVOKE\ \ FHIRGW_SEARCH_TARGET_POSTINVOKE\ \ FHIRGW_OPERATION_TARGET_POSTINVOKE\ \ FHIRGW_GET_TARGET_POSTINVOKE
HL7V2 Listening Endpoint
JavaJavaScript
JPA Server / Storage
HL7 v2 Listener
HL7 v2 message
HL7 v2
Sender
MLLP / HTTP Listener
receives HL7 v2 Message
HL7 v2 Message
transformed into
FHIR Bundles
Java Hook:\ \ HL7V2IN_PRE_HL7V2_TO_FHIR_MAPPING_PROCESSING Java Hook:\ \ HL7V2IN_POST_HL7V2_TO_FHIR_MAPPING_PROCESSING Bundles submitted\ \ to transaction processor
JPA Server / Storage
HL7 v2 Listener
HL7 v2 message
HL7 v2
Sender
MLLP / HTTP Listener
receives HL7 v2 Message
HL7 v2 Message
transformed into
FHIR Bundles
Javascript Hook:\ \ onPreConvertHl7V2ToFhir Javascript Hook:\ \ onPostConvertHl7V2ToFhir Bundles submitted\ \ to transaction processor
CDA Import
JavaJavaScript
Document as XML
Operation outcome
Your
client
Create
transaction
bundle
Process
transaction
bundle
Java Hook:\ \ CDA_PRE_IMPORT Java Hook:\ \ CDA_POST_IMPORT
Document as XML
Operation outcome
Your
client
Create
transaction
bundle
Process
transaction
bundle
Javascript Hook:\ \ onPreImportCDA Javascript Hook:\ \ onPostImportCDA
CDA Export
JavaJavaScript
POST Bundle/{bundle_id}/$sdh.generate-cda
Operation Outcome
Your Application
Create
Bundle
Generate external file
POST Bundle/{bundle_id}/$sdh.generate-cda
Operation Outcome
Your Application
Create
Bundle
Generate external file
Javascript Hook:\ \ onPostExportCDA
Pointcuts
Interceptors
Interceptors Pointcuts Starter Project Examples: FHIR Endpoints Examples: HL7v2 Endpoints Examples: FHIR Storage Examples: FHIR Gateway Examples: FHIR Client Examples: MDM Examples: Subscription Examples: Channel Import Examples: Cluster Manager Examples: App Sphere Examples: System To System Data Exchange 2024.02.01 Migration Guide