Created
August 21, 2016 14:00
-
-
Save hoorayimhelping/062276ab6d9b7cbdc09ae09c8f407d7b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/api/pcp-service-request.js b/src/api/pcp-service-request.js | |
index 1a82b9d..f5c5718 100644 | |
--- a/src/api/pcp-service-request.js | |
+++ b/src/api/pcp-service-request.js | |
@@ -5,8 +5,126 @@ import { getServiceRequestStatus } from '../utils/service-request-status'; | |
import { sortByDateAsc } from '../utils/moyo'; | |
import { buildMoyoServerRequestObject } from '../utils/server-request'; | |
import { MOYO_API_QUERY, MOYO_API_WRITE } from '../constants'; | |
-import _ from 'lodash'; | |
+const buildServiceRequestQuery = serviceRequestId => ( | |
+ { | |
+ "serviceRequest": { | |
+ "model": "serviceRequest", | |
+ "filters": [ | |
+ ["quartetId", serviceRequestId] | |
+ ], | |
+ "select": [ | |
+ "*", | |
+ { | |
+ "patient": { | |
+ "model": "patient", | |
+ "select": [ | |
+ "*", | |
+ { | |
+ "person": { | |
+ "model": "person", | |
+ "select": [ | |
+ "quartetId", | |
+ "roles", | |
+ { | |
+ "email": { | |
+ "model": "email", | |
+ "select": ["*"] | |
+ } | |
+ } | |
+ ] | |
+ } | |
+ } | |
+ ] | |
+ } | |
+ }, | |
+ { | |
+ "memos": { | |
+ "model": "serviceRequestMemo", | |
+ "select": ["quartetId"] | |
+ } | |
+ }, | |
+ { | |
+ "requestingMedicalProvider": { | |
+ "model": "medicalProvider", | |
+ "select": [ | |
+ "*", | |
+ { | |
+ "person": { | |
+ "model": "person", | |
+ "select": [ | |
+ "quartetId", | |
+ "email", | |
+ "roles" | |
+ ] | |
+ } | |
+ }, | |
+ { | |
+ "practices": { | |
+ "model": "practice", | |
+ "select": ["*"] | |
+ } | |
+ }, | |
+ { | |
+ "addresses": { | |
+ "model": "address", | |
+ "select": ["*"] | |
+ } | |
+ } | |
+ ] | |
+ } | |
+ }, | |
+ { | |
+ "smartMatches": { | |
+ "model": "match", | |
+ "select": [ | |
+ "*", | |
+ { | |
+ "behavioralProvider": { | |
+ "model": "behavioralProvider", | |
+ "select": [ | |
+ "*", | |
+ { | |
+ "person": { | |
+ "model": "person", | |
+ "select": [ | |
+ "quartetId", | |
+ "roles", | |
+ "fullName", | |
+ { | |
+ "email": { | |
+ "model": "email", | |
+ "select": ["*"] | |
+ } | |
+ } | |
+ ] | |
+ } | |
+ }, | |
+ { | |
+ "practices": { | |
+ "model": "practice", | |
+ "select": ["*"] | |
+ } | |
+ }, | |
+ { | |
+ "addresses": { | |
+ "model": "address", | |
+ "select": ["*"] | |
+ } | |
+ } | |
+ ] | |
+ } | |
+ } | |
+ ] | |
+ } | |
+ }, | |
+ { | |
+ "assessment/_serviceRequest": ["quartetId"] | |
+ } | |
+ ] | |
+ } | |
+ } | |
+); | |
function getReferrals (req) { | |
const moyo = buildMoyoServerRequestObject(req); | |
@@ -197,139 +315,43 @@ export async function getTableServiceRequests (req, res, next) { | |
export const getServiceRequestById = async (req, res, next) => { | |
const { quartetId } = req.query; | |
+ try { | |
+ const serviceRequestQuery = buildServiceRequestQuery(quartetId); | |
- const serviceRequestQuery = { | |
- "serviceRequest": { | |
- "model": "serviceRequest", | |
- "filters": [ | |
- ["quartetId", quartetId] | |
- ], | |
- "select": [ | |
- "*", | |
- { | |
- "patient": { | |
- "model": "patient", | |
- "select": [ | |
- "*", | |
- { | |
- "person": { | |
- "model": "person", | |
- "select": [ | |
- "quartetId", | |
- "roles", | |
- { | |
- "email": { | |
- "model": "email", | |
- "select": ["*"] | |
- } | |
- } | |
- ] | |
- } | |
- } | |
- ] | |
- } | |
- }, | |
- { | |
- "memos": { | |
- "model": "serviceRequestMemo", | |
- "select": ["quartetId"] | |
- } | |
- }, | |
- { | |
- "requestingMedicalProvider": { | |
- "model": "medicalProvider", | |
- "select": [ | |
- "*", | |
- { | |
- "person": { | |
- "model": "person", | |
- "select": [ | |
- "quartetId", | |
- "email", | |
- "roles" | |
- ] | |
- } | |
- }, | |
- { | |
- "practices": { | |
- "model": "practice", | |
- "select": ["*"] | |
- } | |
- }, | |
- { | |
- "addresses": { | |
- "model": "address", | |
- "select": ["*"] | |
- } | |
- } | |
- ] | |
- } | |
- }, | |
- { | |
- "smartMatches": { | |
- "model": "match", | |
- "select": [ | |
- "*", | |
- { | |
- "behavioralProvider": { | |
- "model": "behavioralProvider", | |
- "select": [ | |
- "*", | |
- { | |
- "person": { | |
- "model": "person", | |
- "select": [ | |
- "quartetId", | |
- "roles", | |
- "fullName", | |
- { | |
- "email": { | |
- "model": "email", | |
- "select": ["*"] | |
- } | |
- } | |
- ] | |
- } | |
- }, | |
- { | |
- "practices": { | |
- "model": "practice", | |
- "select": ["*"] | |
- } | |
- }, | |
- { | |
- "addresses": { | |
- "model": "address", | |
- "select": ["*"] | |
- } | |
- } | |
- ] | |
- } | |
- } | |
- ] | |
- } | |
- }, | |
- { | |
- "assessment/_serviceRequest": ["quartetId"] | |
- } | |
- ] | |
- } | |
- }; | |
+ const url = MOYO_API_QUERY; | |
+ logger.info( | |
+ { req, serviceRequestId: quartetId, url, serviceRequestQuery }, | |
+ "Fetching single service request from Moyo" | |
+ ); | |
- const url = MOYO_API_QUERY; | |
- logger.info({ req, serviceRequestId: quartetId, url }, "Fetching single service request from Moyo"); | |
+ const moyo = buildMoyoServerRequestObject(req); | |
+ const response = await moyo.post(url, serviceRequestQuery); | |
- const moyo = buildMoyoServerRequestObject(req); | |
- const response = await moyo.post(url, serviceRequestQuery).catch(err => { | |
- logger.error({ err, serviceRequestId: quartetId }, "Error fetching single service request"); | |
- next(err); | |
- }); | |
- const serviceRequest = response.body['serviceRequest'][0]; | |
+ const serviceRequest = response.body['serviceRequest'][0]; | |
- if (response && response.ok) { | |
- logger.info({ response, serviceRequestId: quartetId }, "Fetched single service request from Moyo"); | |
+ if (serviceRequest) { | |
+ if (!serviceRequest.smartMatches) { | |
+ logger.info({ req, serviceRequestId: quartetId }, "No Smart Matches for service request"); | |
+ serviceRequest.smartMatches = []; | |
+ } | |
+ | |
+ if (!serviceRequest.memos) { | |
+ logger.info({ req, serviceRequestId: quartetId }, "No memos for service request"); | |
+ serviceRequest.memos = []; | |
+ } | |
+ | |
+ if (!serviceRequest.assessment) { | |
+ logger.info({ req, serviceRequestId: quartetId }, "No assessment for service request"); | |
+ serviceRequest.assessment = []; | |
+ } | |
+ } | |
+ | |
+ logger.info({ response, serviceRequestId: quartetId, serviceRequest }, "Fetched single service request from Moyo"); | |
res.json(serviceRequest); | |
- } | |
+ } catch (err) { | |
+ logger.warn({ err, serviceRequestId: quartetId }, "Error fetching single service request"); | |
+ next(err); | |
+ }; | |
}; | |
export const getServiceRequestMemos = async (req, res, next) => { |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment