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 50532c838..373850c77 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
@@ -144,8 +144,6 @@ 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())
@@ -154,7 +152,6 @@ public CdsResponse handleRequest(@Valid @RequestBody requestTypeT request, URL a
|| StringUtils.isNotEmpty(coverageRequirements.getQuestionnaireDispenseUri())
|| StringUtils.isNotEmpty(coverageRequirements.getQuestionnaireAdditionalUri())) {
List smartAppLinks = createQuestionnaireLinks(request, applicationBaseUrl, lookupResult, results);
-
if (coverageRequirements.isPriorAuthRequired()) {
Card card = CardBuilder.transform(CardTypes.PRIOR_AUTH, results, smartAppLinks);
card.addSuggestionsItem(CardBuilder.createSuggestionWithNote(card, results.getRequest(), fhirComponents,
@@ -178,6 +175,12 @@ public CdsResponse handleRequest(@Valid @RequestBody requestTypeT request, URL a
logger.warn("Failed to process alternative therapy: " + e.getMessage());
}
}
+ if (StringUtils.isNotEmpty(coverageRequirements.getQuestionnairePrescriberEnrollmentUri())
+ || StringUtils.isNotEmpty(coverageRequirements.getQuestionnairePrescriberKnowledgeAssessmentUri())) {
+ Card prescriberCard = createPrescriberCard(request, applicationBaseUrl, lookupResult, results);
+ prescriberCard.setSummary("Prescriber forms");
+ response.addCard(prescriberCard);
+ }
} else {
logger.warn("Unspecified Questionnaire URI; summary card sent to client");
response.addCard(CardBuilder.transform(CardTypes.COVERAGE, results));
@@ -220,6 +223,35 @@ public CdsResponse handleRequest(@Valid @RequestBody requestTypeT request, URL a
return response;
}
+ private Card createPrescriberCard(requestTypeT request, URL applicationBaseUrl,
+ CoverageRequirementRuleResult lookupResult, CqlResultsForCard results) {
+ List listOfLinks = new ArrayList<>();
+ CoverageRequirements coverageRequirements = results.getCoverageRequirements();
+ 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"));
+ }
+
+ Card card;
+ if (coverageRequirements.isPriorAuthRequired()) {
+ card = CardBuilder.transform(CardTypes.PRIOR_AUTH, results, listOfLinks);
+ card.addSuggestionsItem(CardBuilder.createSuggestionWithNote(card, results.getRequest(), fhirComponents,
+ "Save Update To EHR", "Update original " + results.getRequest().fhirType() + " to add note",
+ true, CoverageGuidance.ADMIN));
+ } else {
+ card = CardBuilder.transform(CardTypes.DTR_CLIN, results, listOfLinks);
+ card.addSuggestionsItem(CardBuilder.createSuggestionWithNote(card, results.getRequest(), fhirComponents,
+ "Save Update To EHR", "Update original " + results.getRequest().fhirType() + " to add note",
+ true, CoverageGuidance.CLINICAL));
+ }
+ return card;
+ }
private List createQuestionnaireLinks(requestTypeT request, URL applicationBaseUrl,
CoverageRequirementRuleResult lookupResult, CqlResultsForCard results) {
List listOfLinks = new ArrayList<>();
@@ -229,16 +261,6 @@ 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(),