Skip to content

Instantly share code, notes, and snippets.

@hoorayimhelping
Created August 21, 2016 14:00
Show Gist options
  • Save hoorayimhelping/062276ab6d9b7cbdc09ae09c8f407d7b to your computer and use it in GitHub Desktop.
Save hoorayimhelping/062276ab6d9b7cbdc09ae09c8f407d7b to your computer and use it in GitHub Desktop.
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