Module: Inferno::DSL::FHIRClient
- Defined in:
- lib/inferno/dsl/fhir_client.rb
Overview
This module contains the FHIR DSL available to test writers.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#fhir_client(client = :default) ⇒ FHIR::Client
Return a previously defined FHIR client.
-
#fhir_create(resource, client: :default, name: nil) ⇒ Inferno::Entities::Request
Perform a FHIR create interaction.
-
#fhir_delete(resource_type, id, client: :default, name: nil) ⇒ Inferno::Entities::Request
Perform a FHIR delete interaction.
-
#fhir_get_capability_statement(client: :default, name: nil) ⇒ Inferno::Entities::Request
Fetch the capability statement.
-
#fhir_operation(path, body: nil, client: :default, name: nil, headers: {}) ⇒ Inferno::Entities::Request
Perform a FHIR operation.
-
#fhir_read(resource_type, id, client: :default, name: nil) ⇒ Inferno::Entities::Request
Perform a FHIR read interaction.
-
#fhir_search(resource_type, client: :default, params: {}, name: nil, search_method: :get) ⇒ Inferno::Entities::Request
Perform a FHIR search interaction.
-
#fhir_transaction(bundle = nil, client: :default, name: nil) ⇒ Inferno::Entities::Request
Perform a FHIR batch/transaction interaction.
Instance Method Details
#fhir_client(client = :default) ⇒ FHIR::Client
Return a previously defined FHIR client
53 54 55 56 |
# File 'lib/inferno/dsl/fhir_client.rb', line 53 def fhir_client(client = :default) fhir_clients[client] ||= FHIRClientBuilder.new.build(self, self.class.fhir_client_definitions[client]) end |
#fhir_create(resource, client: :default, name: nil) ⇒ Inferno::Entities::Request
Perform a FHIR create interaction.
109 110 111 112 113 114 115 |
# File 'lib/inferno/dsl/fhir_client.rb', line 109 def fhir_create(resource, client: :default, name: nil) store_request_and_refresh_token(fhir_client(client), name) do tcp_exception_handler do fhir_client(client).create(resource) end end end |
#fhir_delete(resource_type, id, client: :default, name: nil) ⇒ Inferno::Entities::Request
Perform a FHIR delete interaction.
166 167 168 169 170 171 172 |
# File 'lib/inferno/dsl/fhir_client.rb', line 166 def fhir_delete(resource_type, id, client: :default, name: nil) store_request('outgoing', name) do tcp_exception_handler do fhir_client(client).destroy(fhir_class_from_resource_type(resource_type), id) end end end |
#fhir_get_capability_statement(client: :default, name: nil) ⇒ Inferno::Entities::Request
Fetch the capability statement.
93 94 95 96 97 98 99 100 |
# File 'lib/inferno/dsl/fhir_client.rb', line 93 def fhir_get_capability_statement(client: :default, name: nil) store_request_and_refresh_token(fhir_client(client), name) do tcp_exception_handler do fhir_client(client).conformance_statement fhir_client(client).reply end end end |
#fhir_operation(path, body: nil, client: :default, name: nil, headers: {}) ⇒ Inferno::Entities::Request
Note:
This is a placeholder method until the FHIR::Client supports general operations
Perform a FHIR operation
75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/inferno/dsl/fhir_client.rb', line 75 def fhir_operation(path, body: nil, client: :default, name: nil, headers: {}) store_request_and_refresh_token(fhir_client(client), name) do tcp_exception_handler do operation_headers = fhir_client(client).fhir_headers operation_headers.merge!('Content-Type' => 'application/fhir+json') if body.present? operation_headers.merge!(headers) if headers.present? fhir_client(client).send(:post, path, body, operation_headers) end end end |
#fhir_read(resource_type, id, client: :default, name: nil) ⇒ Inferno::Entities::Request
Perform a FHIR read interaction.
125 126 127 128 129 130 131 |
# File 'lib/inferno/dsl/fhir_client.rb', line 125 def fhir_read(resource_type, id, client: :default, name: nil) store_request_and_refresh_token(fhir_client(client), name) do tcp_exception_handler do fhir_client(client).read(fhir_class_from_resource_type(resource_type), id) end end end |
#fhir_search(resource_type, client: :default, params: {}, name: nil, search_method: :get) ⇒ Inferno::Entities::Request
Perform a FHIR search interaction.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/inferno/dsl/fhir_client.rb', line 142 def fhir_search(resource_type, client: :default, params: {}, name: nil, search_method: :get) search = if search_method == :post { body: params } else { parameters: params } end store_request_and_refresh_token(fhir_client(client), name) do tcp_exception_handler do fhir_client(client) .search(fhir_class_from_resource_type(resource_type), { search: }) end end end |
#fhir_transaction(bundle = nil, client: :default, name: nil) ⇒ Inferno::Entities::Request
Perform a FHIR batch/transaction interaction.
181 182 183 184 185 186 187 188 |
# File 'lib/inferno/dsl/fhir_client.rb', line 181 def fhir_transaction(bundle = nil, client: :default, name: nil) store_request('outgoing', name) do tcp_exception_handler do fhir_client(client).transaction_bundle = bundle if bundle.present? fhir_client(client).end_transaction end end end |