Skip to content

Commit f13cea5

Browse files
author
James Fuqian
committed
render error response on client webUI.
1 parent 0b41dcb commit f13cea5

3 files changed

Lines changed: 74 additions & 44 deletions

File tree

client/src/components/records.tsx

Lines changed: 68 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,14 @@ export type EOBRecord = {
88
amount: number
99
}
1010

11-
export default function Records() {
11+
export type ErrorResponse = {
12+
type: string,
13+
content: string,
14+
}
15+
16+
export default function Records({ }) {
1217
const [records, setRecords] = useState<EOBRecord[]>([]);
18+
const [message, setMessage] = useState<ErrorResponse>();
1319
/*
1420
* DEVELOPER NOTES:
1521
* Here we are parsing through the different PDE Claim records
@@ -31,7 +37,7 @@ export default function Records() {
3137
.then(res => {
3238
return res.json();
3339
}).then(eobData => {
34-
if (eobData && eobData.entry) {
40+
if (eobData.hasOwnProperty('entry')) {
3541
const records: EOBRecord[] = eobData.entry.map((resourceData: any) => {
3642
const resource = resourceData.resource;
3743
return {
@@ -43,40 +49,67 @@ export default function Records() {
4349
});
4450
setRecords(records);
4551
}
52+
else {
53+
setMessage({"type": "error", "content": eobData?.detail || "Unknown"})
54+
}
4655
});
4756
}, [])
4857

49-
// TODO: add page navigation for bundle
50-
return (
51-
<div className='full-width-card'>
52-
<Table className="ds-u-margin-top--2" stackable stackableBreakpoint="md">
53-
<TableCaption>Medicare Prescription Drug Claims Data</TableCaption>
54-
<TableHead>
55-
<TableRow>
56-
<TableCell id="column_1">NDC Code</TableCell>
57-
<TableCell id="column_2">Prescription Drug Name</TableCell>
58-
<TableCell id="column_3">Cost</TableCell>
59-
</TableRow>
60-
</TableHead>
61-
<TableBody>
62-
63-
{records.map(record => {
64-
return (
65-
<TableRow key={record.id}>
66-
<TableCell stackedTitle="NDC Code" headers="column_1">
67-
{record.code}
68-
</TableCell>
69-
<TableCell stackedTitle="Prescription Drug Name" headers="column_2">
70-
{record.display}
71-
</TableCell>
72-
<TableCell stackedTitle="Cost" headers="column_3">
73-
${record.amount}.00
74-
</TableCell>
75-
</TableRow>
76-
)
77-
})}
78-
</TableBody>
79-
</Table>
80-
</div>
81-
);
58+
if (message) {
59+
return (
60+
<div className='full-width-card'>
61+
<Table className="ds-u-margin-top--2" stackable stackableBreakpoint="md">
62+
<TableCaption>Error Response</TableCaption>
63+
<TableHead>
64+
<TableRow>
65+
<TableCell id="column_1">Type</TableCell>
66+
<TableCell id="column_2">Content</TableCell>
67+
</TableRow>
68+
</TableHead>
69+
<TableBody>
70+
<TableRow>
71+
<TableCell stackedTitle="Type" headers="column_1">
72+
{message.type}
73+
</TableCell>
74+
<TableCell stackedTitle="Content" headers="column_2">
75+
{message.content}
76+
</TableCell>
77+
</TableRow>
78+
</TableBody>
79+
</Table>
80+
</div>
81+
);
82+
} else {
83+
return (
84+
<div className='full-width-card'>
85+
<Table className="ds-u-margin-top--2" stackable stackableBreakpoint="md">
86+
<TableCaption>Medicare Prescription Drug Claims Data</TableCaption>
87+
<TableHead>
88+
<TableRow>
89+
<TableCell id="column_1">NDC Code</TableCell>
90+
<TableCell id="column_2">Prescription Drug Name</TableCell>
91+
<TableCell id="column_3">Cost</TableCell>
92+
</TableRow>
93+
</TableHead>
94+
<TableBody>
95+
{records.map(record => {
96+
return (
97+
<TableRow key={record.id}>
98+
<TableCell stackedTitle="NDC Code" headers="column_1">
99+
{record.code}
100+
</TableCell>
101+
<TableCell stackedTitle="Prescription Drug Name" headers="column_2">
102+
{record.display}
103+
</TableCell>
104+
<TableCell stackedTitle="Cost" headers="column_3">
105+
${record.amount}.00
106+
</TableCell>
107+
</TableRow>
108+
)
109+
})}
110+
</TableBody>
111+
</Table>
112+
</div>
113+
);
114+
}
82115
};

server/src/routes/Data.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ export async function getBenefitData(req: Request, res: Response) {
1616
const loggedInUser = getLoggedInUser(db);
1717
const envConfig = config[db.settings.env];
1818
// get EOB end point
19-
// const response = await get(envConfig.bb2BaseUrl + '/' + db.settings.version + '/fhir/ExplanationOfBenefit/', req.query, `${loggedInUser.authToken?.access_token}`);
2019
const response = await get(`${envConfig.bb2BaseUrl}/${db.settings.version}/fhir/ExplanationOfBenefit/`, req.query, `${loggedInUser.authToken?.access_token}`);
2120
return (response) ? response.data : null;
2221
}
@@ -38,7 +37,6 @@ export async function getPatientData(req: Request, res: Response) {
3837
const loggedInUser = getLoggedInUser(db);
3938
const envConfig = config[db.settings.env];
4039
// get Patient end point
41-
// const response = await get(envConfig.bb2BaseUrl + '/' + db.settings.version + '/fhir/Patient/', req.query, `${loggedInUser.authToken?.access_token}`);
4240
const response = await get(`${envConfig.bb2BaseUrl}/${db.settings.version}/fhir/Patient/`, req.query, `${loggedInUser.authToken?.access_token}`);
4341
res.json(response.data);
4442
}
@@ -47,7 +45,6 @@ export async function getCoverageData(req: Request, res: Response) {
4745
const loggedInUser = getLoggedInUser(db);
4846
const envConfig = config[db.settings.env];
4947
// get Coverage end point
50-
// const response = await get(envConfig.bb2BaseUrl + '/' + db.settings.version + '/fhir/Coverage/', req.query, `${loggedInUser.authToken?.access_token}`);
5148
const response = await get(`${envConfig.bb2BaseUrl}/${db.settings.version}/fhir/Coverage/`, req.query, `${loggedInUser.authToken?.access_token}`);
5249
res.json(response.data);
5350
}
@@ -56,7 +53,6 @@ export async function getUserProfileData(req: Request, res: Response) {
5653
const loggedInUser = getLoggedInUser(db);
5754
const envConfig = config[db.settings.env];
5855
// get usrinfo end point
59-
// const response = await get(envConfig.bb2BaseUrl + '/' + db.settings.version + '/connect/userinfo', req.query, `${loggedInUser.authToken?.access_token}`);
6056
const response = await get(`${envConfig.bb2BaseUrl}/${db.settings.version}/connect/userinfo`, req.query, `${loggedInUser.authToken?.access_token}`);
6157
res.json(response.data);
6258
}

server/src/utils/request.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ export async function request(config: any, retryFlag: boolean) {
2525
resp = await axios(config);
2626
} catch (error: any) {
2727
// DEVELOPER NOTES:
28-
// here handle errors per errors.md
28+
// here handle errors per ErrorResponses.md
2929
console.log('Error message: [', error.message, ']');
3030
if (error.response) {
3131
console.log("response code: " + error.response.status)
32-
console.log("response text: " + error.response.data)
32+
console.log("response text: " + JSON.stringify(error.response.data))
3333
// DEVELOPER NOTES:
3434
// check for retryable (e.g. 500 & fhir) errors and do retrying...
3535
if (retryFlag && isRetryable(error)) {
@@ -50,8 +50,8 @@ export async function request(config: any, retryFlag: boolean) {
5050
console.log("error.request: " + error.request);
5151
}
5252
// dump axios config for diagnosis
53-
console.log("config:")
54-
console.log(error.config);
53+
// console.log("config:")
54+
// console.log(error.config);
5555
}
5656
return resp
5757
}
@@ -82,10 +82,11 @@ async function do_retry(config: any) {
8282
console.log(resp.data);
8383
break;
8484
} catch (error: any) {
85-
console.log("retry error: [", error.message, "]")
85+
console.log("retry error: [", JSON.stringify(error.message), "]")
8686
if (error.response) {
8787
console.log("response code: ", error.response.status)
8888
console.log("response data: ", error.response.data)
89+
resp = error.response
8990
}
9091
}
9192
}

0 commit comments

Comments
 (0)