From 3e1faac500cb78a660b6361e25f8e4b9fba30ce2 Mon Sep 17 00:00:00 2001 From: b-solution Date: Thu, 2 Jan 2025 19:19:02 +0500 Subject: [PATCH] feat(procedurePriceLookup): add procedurePriceLookup integration --- .../procedure-price-lookup/actions/index.js | 3 ++ .../actions/search-procedure-pricing/index.js | 23 ++++++++++ .../procedure-price-lookup/assets/favicon.svg | 16 +++++++ .../apps/procedure-price-lookup/auth/index.js | 44 +++++++++++++++++++ .../auth/is-still-verified.js | 8 ++++ .../auth/verify-credentials.js | 11 +++++ .../common/add-auth-header.js | 10 +++++ .../src/apps/procedure-price-lookup/index.js | 18 ++++++++ 8 files changed, 133 insertions(+) create mode 100644 packages/backend/src/apps/procedure-price-lookup/actions/index.js create mode 100644 packages/backend/src/apps/procedure-price-lookup/actions/search-procedure-pricing/index.js create mode 100644 packages/backend/src/apps/procedure-price-lookup/assets/favicon.svg create mode 100644 packages/backend/src/apps/procedure-price-lookup/auth/index.js create mode 100644 packages/backend/src/apps/procedure-price-lookup/auth/is-still-verified.js create mode 100644 packages/backend/src/apps/procedure-price-lookup/auth/verify-credentials.js create mode 100644 packages/backend/src/apps/procedure-price-lookup/common/add-auth-header.js create mode 100644 packages/backend/src/apps/procedure-price-lookup/index.js diff --git a/packages/backend/src/apps/procedure-price-lookup/actions/index.js b/packages/backend/src/apps/procedure-price-lookup/actions/index.js new file mode 100644 index 0000000000..146a8572cb --- /dev/null +++ b/packages/backend/src/apps/procedure-price-lookup/actions/index.js @@ -0,0 +1,3 @@ +import searchProcedurePricing from './search-procedure-pricing/index.js'; + +export default [searchProcedurePricing]; diff --git a/packages/backend/src/apps/procedure-price-lookup/actions/search-procedure-pricing/index.js b/packages/backend/src/apps/procedure-price-lookup/actions/search-procedure-pricing/index.js new file mode 100644 index 0000000000..c8e252d598 --- /dev/null +++ b/packages/backend/src/apps/procedure-price-lookup/actions/search-procedure-pricing/index.js @@ -0,0 +1,23 @@ +import defineAction from '../../../../helpers/define-action.js'; + +export default defineAction({ + name: 'Search Procedure Pricing', + key: 'searchProcedurePricing', + description: 'search procedure pricing by given parent code.', + arguments: [ + { + label: 'Code', + key: 'code', + type: 'string', + required: true, + variables: true, + description: 'The code to find cost values for.', + }, + ], + + async run($) { + const code = $.step.parameters.code; + const { data } = await $.http.get(`/costs/${code}`); + $.setActionItem({ raw: data }); + }, +}); diff --git a/packages/backend/src/apps/procedure-price-lookup/assets/favicon.svg b/packages/backend/src/apps/procedure-price-lookup/assets/favicon.svg new file mode 100644 index 0000000000..59bc922e06 --- /dev/null +++ b/packages/backend/src/apps/procedure-price-lookup/assets/favicon.svg @@ -0,0 +1,16 @@ + + + + + Developer + + + \ No newline at end of file diff --git a/packages/backend/src/apps/procedure-price-lookup/auth/index.js b/packages/backend/src/apps/procedure-price-lookup/auth/index.js new file mode 100644 index 0000000000..0ec336a3ea --- /dev/null +++ b/packages/backend/src/apps/procedure-price-lookup/auth/index.js @@ -0,0 +1,44 @@ +import verifyCredentials from './verify-credentials.js'; +import isStillVerified from './is-still-verified.js'; + +export default { + fields: [ + { + key: 'screenName', + label: 'Screen Name', + type: 'string', + required: true, + readOnly: false, + value: null, + placeholder: null, + description: + 'Screen name of your connection to be used on Automatisch UI.', + clickToCopy: false, + }, + { + key: 'apiKey', + label: 'API Key', + type: 'string', + required: true, + readOnly: false, + value: null, + placeholder: null, + description: 'Procedure price lookup API key of your account.', + clickToCopy: false, + }, + { + key: 'amaLicense', + label: 'Ama License', + type: 'string', + required: true, + readOnly: false, + value: null, + placeholder: null, + description: 'American Medical Association License', + clickToCopy: false, + }, + ], + + verifyCredentials, + isStillVerified, +}; diff --git a/packages/backend/src/apps/procedure-price-lookup/auth/is-still-verified.js b/packages/backend/src/apps/procedure-price-lookup/auth/is-still-verified.js new file mode 100644 index 0000000000..6663679aab --- /dev/null +++ b/packages/backend/src/apps/procedure-price-lookup/auth/is-still-verified.js @@ -0,0 +1,8 @@ +import verifyCredentials from './verify-credentials.js'; + +const isStillVerified = async ($) => { + await verifyCredentials($); + return true; +}; + +export default isStillVerified; diff --git a/packages/backend/src/apps/procedure-price-lookup/auth/verify-credentials.js b/packages/backend/src/apps/procedure-price-lookup/auth/verify-credentials.js new file mode 100644 index 0000000000..19a73e9238 --- /dev/null +++ b/packages/backend/src/apps/procedure-price-lookup/auth/verify-credentials.js @@ -0,0 +1,11 @@ +const verifyCredentials = async ($) => { + await $.http.get('/costs?limit=2'); + + await $.auth.set({ + screenName: $.auth.data.screenName, + apiKey: $.auth.data.apiKey, + amaLicense: $.auth.data.amaLicense, + }); +}; + +export default verifyCredentials; diff --git a/packages/backend/src/apps/procedure-price-lookup/common/add-auth-header.js b/packages/backend/src/apps/procedure-price-lookup/common/add-auth-header.js new file mode 100644 index 0000000000..b2575ccc58 --- /dev/null +++ b/packages/backend/src/apps/procedure-price-lookup/common/add-auth-header.js @@ -0,0 +1,10 @@ +const addAuthHeader = ($, requestConfig) => { + if ($.auth.data?.apiKey && $.auth.data?.amaLicense) { + requestConfig.headers['apikey'] = `${$.auth.data.apiKey}`; + requestConfig.headers['amalicense'] = `${$.auth.data.amaLicense}`; + } + + return requestConfig; +}; + +export default addAuthHeader; diff --git a/packages/backend/src/apps/procedure-price-lookup/index.js b/packages/backend/src/apps/procedure-price-lookup/index.js new file mode 100644 index 0000000000..6f709b3758 --- /dev/null +++ b/packages/backend/src/apps/procedure-price-lookup/index.js @@ -0,0 +1,18 @@ +import defineApp from '../../helpers/define-app.js'; +import addAuthHeader from './common/add-auth-header.js'; +import auth from './auth/index.js'; +import actions from './actions/index.js'; + +export default defineApp({ + name: 'Procedure Price Lookup', + key: 'procedure-price-lookup', + iconUrl: '{BASE_URL}/apps/procedure-price-lookup/assets/favicon.svg', + authDocUrl: '', + supportsConnections: true, + baseUrl: 'https://www.medicare.gov/api/procedure-price-lookup/mce/api/v1', + apiBaseUrl: 'https://www.medicare.gov/api/procedure-price-lookup/mce/api/v1', + primaryColor: '#6f42c1', + beforeRequest: [addAuthHeader], + auth, + actions, +});