Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 42 additions & 9 deletions src/hooks/hookResources.ts
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ export async function handleCardOrder(
createSmartLink(requirement.name, requirement.appContext, contextRequest)
);
if (patient && patient.resourceType === 'Patient') {
createQuestionnaireSuggestion(card, requirement, patient);
createQuestionnaireSuggestion(card, requirement, patient, contextRequest);
}
smartLinkCount++;
}
Expand All @@ -394,7 +394,7 @@ export async function handleCardOrder(
createSmartLink(requirement.name, requirement.appContext, contextRequest)
);
if (patient && patient.resourceType === 'Patient') {
createQuestionnaireSuggestion(card, requirement, patient);
createQuestionnaireSuggestion(card, requirement, patient, contextRequest);
}
smartLinkCount++;
}
Expand All @@ -405,7 +405,7 @@ export async function handleCardOrder(
createSmartLink(requirement.name, requirement.appContext, contextRequest)
);
if (patient && patient.resourceType === 'Patient') {
createQuestionnaireSuggestion(card, requirement, patient);
createQuestionnaireSuggestion(card, requirement, patient, contextRequest);
}
smartLinkCount++;
}
Expand Down Expand Up @@ -494,7 +494,8 @@ export function handleHook(
export function createQuestionnaireSuggestion(
card: Card,
requirement: Requirement,
patient: Patient
patient: Patient,
request: MedicationRequest
) {
if (requirement.appContext && requirement.appContext.includes('=')) {
const qArr = requirement.appContext.split('='); // break up into parts
Expand All @@ -510,8 +511,8 @@ export function createQuestionnaireSuggestion(
if (qUrl) {
const action: Action = {
type: 'create',
description: `Create task for "completion of ${requirement.name} Questionnaire`,
resource: createQuestionnaireCompletionTask(requirement.name, qUrl, patient)
description: `Create task for "completion of ${requirement.name} Questionnaire"`,
resource: createQuestionnaireCompletionTask(requirement, patient, qUrl, request)
};
const suggestion: Suggestion = {
label: `Add "Completion of ${requirement.name} Questionnaire" to task list`,
Expand All @@ -522,9 +523,10 @@ export function createQuestionnaireSuggestion(
}
}
export function createQuestionnaireCompletionTask(
questionnaireTitle: string,
requirement: Requirement,
patient: Patient,
questionnaireUrl: string,
patient: Patient
request: MedicationRequest
) {
const taskResource: Task = {
resourceType: 'Task',
Expand All @@ -535,10 +537,15 @@ export function createQuestionnaireCompletionTask(
{
system: 'http://hl7.org/fhir/uv/sdc/CodeSystem/temp',
code: 'complete-questionnaire'
},
{
system: 'http://hl7.org/fhir/smart-app-launch/CodeSystem/smart-codes',
code: 'launch-app-ehr',
display: 'Launch application using the SMART EHR launch'
}
]
},
description: `Complete ${questionnaireTitle} Questionnaire`,
description: `Complete ${requirement.name} Questionnaire`,
for: {
reference: `${patient.resourceType}/${patient.id}`
},
Expand All @@ -549,6 +556,32 @@ export function createQuestionnaireCompletionTask(
text: 'questionnaire'
},
valueCanonical: `${questionnaireUrl}`
},
{
type: {
coding: [
{
system: 'http://hl7.org/fhir/smart-app-launch/CodeSystem/smart-codes',
code: 'smartonfhir-application',
display: 'SMART on FHIR application URL.'
}
]
},
valueUrl: config.smart.endpoint
},
{
type: {
coding: [
{
system: 'http://hl7.org/fhir/smart-app-launch/CodeSystem/smart-codes',
code: 'smartonfhir-appcontext',
display: 'Application context related to this launch.'
}
]
},
valueString: `${requirement.appContext}&order=${JSON.stringify(request)}&coverage=${
request?.insurance?.[0].reference
}`
}
]
};
Expand Down