-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathData.ts
More file actions
108 lines (93 loc) · 4.03 KB
/
Data.ts
File metadata and controls
108 lines (93 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import { Router, Request, Response } from 'express';
import config from '../configs/config';
import db from '../utils/db';
import { getLoggedInUser } from 'src/utils/user';
import { get } from '../utils/request'
import moment from 'moment';
import { refreshAccessToken } from 'src/utils/bb2';
/* DEVELOPER NOTES:
* This is our mocked Data Service layer for both the BB2 API
* as well as for our mocked db Service Layer
* we grouped them together for use of use for the front-end
*/
// this function is used to query eob data for the authenticated Medicare.gov
// user and returned - we are then storing in a mocked DB
export async function getExplanationOfBenefitData(req: Request, res: Response) {
const loggedInUser = getLoggedInUser(db);
const envConfig = config[db.settings.env];
const BB2_BENEFIT_URL = envConfig.bb2BaseUrl + '/' + db.settings.version + '/fhir/ExplanationOfBenefit/';
if (!loggedInUser.authToken || !loggedInUser.authToken.access_token) {
return {};
}
/*
* If the access token is expired, use the refresh token to generate a new one
*/
if (moment(loggedInUser.authToken.expires_at).isBefore(moment())) {
const newAuthToken = await refreshAccessToken(loggedInUser.authToken.refresh_token)
loggedInUser.authToken = newAuthToken;
}
const response = await get(BB2_BENEFIT_URL, req.query, `${loggedInUser.authToken?.access_token}`);
if (response.status === 200) {
return response.data;
}
else {
// send generic error to client
return JSON.parse('{"message": "Unable to load EOB Data - fetch FHIR resource error."}');
}
}
/*
* DEVELOPER NOTES:
* this function is used directly by the front-end to
* retrieve eob data from the mocked DB
* This would be replaced by a persistence service layer for whatever
* DB you would choose to use
*/
export async function getBeneficiaryDataEndPoint(req: Request, res: Response) {
const loggedInUser = getLoggedInUser(db);
const beneData = {'eobData': loggedInUser.eobData, 'patient': loggedInUser.patient, 'coverage': loggedInUser.coverage};
if ( beneData ) {
res.json(beneData);
}
}
export async function getPatientData(req: Request, res: Response) {
// const loggedInUser = getLoggedInUser(db);
// const envConfig = config[db.settings.env];
// get Patient end point
const data = await getPatientJSON(req, res);
res.json(data);
}
export async function getPatientJSON(req: Request, res: Response) {
const loggedInUser = getLoggedInUser(db);
const envConfig = config[db.settings.env];
// get Patient end point
const response = await get(`${envConfig.bb2BaseUrl}/${db.settings.version}/fhir/Patient/`, req.query, `${loggedInUser.authToken?.access_token}`);
return response.data;
}
export async function getCoverageData(req: Request, res: Response) {
// const loggedInUser = getLoggedInUser(db);
// const envConfig = config[db.settings.env];
// get Coverage end point
const data = await getCoverageJSON(req, res);
res.json(data);
}
export async function getCoverageJSON(req: Request, res: Response) {
const loggedInUser = getLoggedInUser(db);
const envConfig = config[db.settings.env];
// get Coverage end point
const response = await get(`${envConfig.bb2BaseUrl}/${db.settings.version}/fhir/Coverage/`, req.query, `${loggedInUser.authToken?.access_token}`);
return response.data;
}
export async function getUserProfileData(req: Request, res: Response) {
const loggedInUser = getLoggedInUser(db);
const envConfig = config[db.settings.env];
// get usrinfo end point
const response = await get(`${envConfig.bb2BaseUrl}/${db.settings.version}/connect/userinfo`, req.query, `${loggedInUser.authToken?.access_token}`);
res.json(response.data);
}
const router = Router();
router.get('/beneficiary_data', getBeneficiaryDataEndPoint);
router.get('/eob', getExplanationOfBenefitData);
router.get('/patient', getPatientData);
router.get('/coverage', getCoverageData);
router.get('/userprofile', getUserProfileData);
export default router;