Class: Multiwoven::Integrations::Source::EpicFhir::Client
- Inherits:
-
SourceConnector
- Object
- SourceConnector
- Multiwoven::Integrations::Source::EpicFhir::Client
show all
- Includes:
- Core::OauthClientCredentials
- Defined in:
- lib/multiwoven/integrations/source/epic_fhir/client.rb
Constant Summary
Core::OauthClientCredentials::ALLOWED_JWT_ALGORITHMS, Core::OauthClientCredentials::AUTH_TYPE_OAUTH_CLIENT_CREDENTIALS, Core::OauthClientCredentials::AUTH_TYPE_PRIVATE_KEY_JWT, Core::OauthClientCredentials::CLIENT_ASSERTION_TYPE, Core::OauthClientCredentials::DEFAULT_JWT_ALGORITHM, Core::OauthClientCredentials::JWT_ASSERTION_LIFETIME_SECONDS, Core::OauthClientCredentials::OAUTH_AUTH_TYPES, Core::OauthClientCredentials::TOKEN_EXPIRY_BUFFER_SECONDS
Instance Method Summary
collapse
#build_headers, #ensure_oauth_token
Instance Method Details
#check_connection(connection_config) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/multiwoven/integrations/source/epic_fhir/client.rb', line 37
def check_connection(connection_config)
connection_config = prepare_config(connection_config)
validate_config!(connection_config)
(connection_config)
success_status
rescue StandardError => e
handle_exception(e, {
context: "EPIC_FHIR:CHECK_CONNECTION:EXCEPTION",
type: "error"
})
failure_status(e)
end
|
#discover(connection_config) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/multiwoven/integrations/source/epic_fhir/client.rb', line 50
def discover(connection_config)
connection_config = prepare_config(connection_config)
validate_config!(connection_config)
streams = discover_resource_types(connection_config).map { |resource_type| create_stream(resource_type) }
Catalog.new(streams: streams).to_multiwoven_message
rescue StandardError => e
handle_exception(e, {
context: "EPIC_FHIR:DISCOVER:EXCEPTION",
type: "error"
})
end
|
#read(sync_config) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/multiwoven/integrations/source/epic_fhir/client.rb', line 63
def read(sync_config)
connection_config = prepare_config(sync_config&.source&.connection_specification)
validate_config!(connection_config)
@connector_instance = sync_config&.source&.connector_instance
sql_query = sync_config.model.query
sql_query = batched_query(sql_query, sync_config.limit, sync_config.offset) if
sync_config.limit.present? || sync_config.offset.present?
query(connection_config, sql_query)
rescue StandardError => e
handle_exception(e, {
context: "EPIC_FHIR:READ:EXCEPTION",
type: "error",
sync_id: sync_config.sync_id,
sync_run_id: sync_config.sync_run_id
})
end
|