diff --git a/src/hooks/hookResources.ts b/src/hooks/hookResources.ts index 2bea88c7..c24ba2fc 100644 --- a/src/hooks/hookResources.ts +++ b/src/hooks/hookResources.ts @@ -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++; } @@ -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++; } @@ -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++; } @@ -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 @@ -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`, @@ -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', @@ -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}` }, @@ -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 + }` } ] };