diff --git a/resources/src/main/java/org/cdshooks/CoverageRequirements.java b/resources/src/main/java/org/cdshooks/CoverageRequirements.java index cea3e3908..4645f5803 100644 --- a/resources/src/main/java/org/cdshooks/CoverageRequirements.java +++ b/resources/src/main/java/org/cdshooks/CoverageRequirements.java @@ -8,6 +8,8 @@ public class CoverageRequirements { private String details; private String infoLink; private String questionnaireOrderUri; + private String questionnairePrescriberEnrollmentUri; + private String questionnairePrescriberKnowledgeAssessmentUri; private String questionnaireFaceToFaceUri; private String questionnaireLabUri; private String questionnaireProgressNoteUri; @@ -68,6 +70,24 @@ public String getQuestionnaireFaceToFaceUri() { return this.questionnaireFaceToFaceUri; } + public CoverageRequirements setQuestionnairePrescriberEnrollmentUri(String questionnairePrescriberEnrollmentUri) { + this.questionnairePrescriberEnrollmentUri = questionnairePrescriberEnrollmentUri; + return this; + } + + public String getQuestionnairePrescriberEnrollmentUri() { + return this.questionnairePrescriberEnrollmentUri; + } + + public CoverageRequirements setQuestionnairePrescriberKnowledgeAssessmentUri(String questionnairePrescriberKnowledgeAssessmentUri) { + this.questionnairePrescriberKnowledgeAssessmentUri = questionnairePrescriberKnowledgeAssessmentUri; + return this; + } + + public String getQuestionnairePrescriberKnowledgeAssessmentUri() { + return this.questionnairePrescriberKnowledgeAssessmentUri; + } + public CoverageRequirements setQuestionnaireFaceToFaceUri(String questionnaireFaceToFaceUri) { this.questionnaireFaceToFaceUri = questionnaireFaceToFaceUri; return this; @@ -117,6 +137,7 @@ public CoverageRequirements setQuestionnaireDispenseUri(String questionnaireDisp this.questionnaireDispenseUri = questionnaireDispenseUri; return this; } + public String getRequestId() { return requestId; } diff --git a/server/src/main/java/org/hl7/davinci/endpoint/cdshooks/services/crd/CdsService.java b/server/src/main/java/org/hl7/davinci/endpoint/cdshooks/services/crd/CdsService.java index 66c8de4f6..bb5dc8a3a 100755 --- a/server/src/main/java/org/hl7/davinci/endpoint/cdshooks/services/crd/CdsService.java +++ b/server/src/main/java/org/hl7/davinci/endpoint/cdshooks/services/crd/CdsService.java @@ -16,7 +16,6 @@ import org.hl7.davinci.endpoint.rules.CoverageRequirementRuleResult; import org.hl7.davinci.r4.crdhook.DiscoveryExtension; import org.hl7.davinci.r4.crdhook.orderselect.OrderSelectRequest; -import org.hl7.davinci.endpoint.database.FhirResourceRepository; import org.opencds.cqf.cql.engine.execution.Context; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -125,6 +124,8 @@ public CdsResponse handleRequest(@Valid @RequestBody requestTypeT request, URL a } else if (coverageRequirements.isDocumentationRequired() || coverageRequirements.isPriorAuthRequired()) { if (StringUtils.isNotEmpty(coverageRequirements.getQuestionnaireOrderUri()) + || StringUtils.isNotEmpty(coverageRequirements.getQuestionnairePrescriberEnrollmentUri()) + || StringUtils.isNotEmpty(coverageRequirements.getQuestionnairePrescriberKnowledgeAssessmentUri()) || StringUtils.isNotEmpty(coverageRequirements.getQuestionnaireFaceToFaceUri()) || StringUtils.isNotEmpty(coverageRequirements.getQuestionnaireLabUri()) || StringUtils.isNotEmpty(coverageRequirements.getQuestionnaireProgressNoteUri()) @@ -195,6 +196,16 @@ private List createQuestionnaireLinks(requestTypeT request, URL applicatio coverageRequirements.getQuestionnaireOrderUri(), coverageRequirements.getRequestId(), lookupResult.getCriteria(), coverageRequirements.isPriorAuthRequired(), "Patient Enrollment Form")); } + if (StringUtils.isNotEmpty(coverageRequirements.getQuestionnairePrescriberEnrollmentUri())) { + listOfLinks.add(smartLinkBuilder(request.getContext().getPatientId(), request.getFhirServer(), applicationBaseUrl, + coverageRequirements.getQuestionnairePrescriberEnrollmentUri(), coverageRequirements.getRequestId(), + lookupResult.getCriteria(), coverageRequirements.isPriorAuthRequired(), "Prescriber Enrollment Form")); + } + if (StringUtils.isNotEmpty(coverageRequirements.getQuestionnairePrescriberKnowledgeAssessmentUri())) { + listOfLinks.add(smartLinkBuilder(request.getContext().getPatientId(), request.getFhirServer(), applicationBaseUrl, + coverageRequirements.getQuestionnairePrescriberKnowledgeAssessmentUri(), coverageRequirements.getRequestId(), + lookupResult.getCriteria(), coverageRequirements.isPriorAuthRequired(), "Prescriber Knowledge Assessment Form")); + } if (StringUtils.isNotEmpty(coverageRequirements.getQuestionnaireFaceToFaceUri())) { listOfLinks.add(smartLinkBuilder(request.getContext().getPatientId(), request.getFhirServer(), applicationBaseUrl, coverageRequirements.getQuestionnaireFaceToFaceUri(), coverageRequirements.getRequestId(), diff --git a/server/src/main/java/org/hl7/davinci/endpoint/cdshooks/services/crd/r4/OrderSignService.java b/server/src/main/java/org/hl7/davinci/endpoint/cdshooks/services/crd/r4/OrderSignService.java index 8b9c7d2ba..5187a703b 100644 --- a/server/src/main/java/org/hl7/davinci/endpoint/cdshooks/services/crd/r4/OrderSignService.java +++ b/server/src/main/java/org/hl7/davinci/endpoint/cdshooks/services/crd/r4/OrderSignService.java @@ -153,6 +153,22 @@ protected CqlResultsForCard executeCqlAndGetRelevantResults(Context context, Str logger.info("-- No face to face questionnaire defined"); } + try { + if (evaluateStatement("RESULT_QuestionnairePrescriberEnrollmentUri", context) != null) { + coverageRequirements.setQuestionnairePrescriberEnrollmentUri(evaluateStatement("RESULT_QuestionnairePrescriberEnrollmentUri", context).toString()); + } + } catch (Exception e) { + logger.info("-- No Prescriber Enrollment defined"); + } + + try { + if (evaluateStatement("RESULT_QuestionnairePrescriberKnowledgeAssessmentUri", context) != null) { + coverageRequirements.setQuestionnairePrescriberKnowledgeAssessmentUri(evaluateStatement("RESULT_QuestionnairePrescriberKnowledgeAssessmentUri", context).toString()); + } + } catch (Exception e) { + logger.info("-- No Prescriber Knowledge Assessment defined"); + } + try { if (evaluateStatement("RESULT_QuestionnaireLabUri", context) != null) { coverageRequirements.setQuestionnaireLabUri(evaluateStatement("RESULT_QuestionnaireLabUri", context).toString());