You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
6.5 KiB
166 lines
6.5 KiB
<?php |
|
|
|
/** |
|
* This is called as a pop-up to display patient education materials. |
|
* |
|
* @package OpenEMR |
|
* @link http://www.open-emr.org |
|
* @author Rod Roark <rod@sunsetsystems.com> |
|
* @author Brady Miller <brady.g.miller@gmail.com> |
|
* @copyright Copyright (c) 2014 Rod Roark <rod@sunsetsystems.com> |
|
* @copyright Copyright (c) 2017-2018 Brady Miller <brady.g.miller@gmail.com> |
|
* @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3 |
|
*/ |
|
|
|
require_once("../globals.php"); |
|
require_once("$srcdir/options.inc.php"); |
|
|
|
use OpenEMR\Common\Csrf\CsrfUtils; |
|
use OpenEMR\Core\Header; |
|
|
|
$educationdir = "$OE_SITE_DIR/documents/education"; |
|
|
|
$codetype = empty($_REQUEST['type' ]) ? '' : $_REQUEST['type' ]; |
|
$codevalue = empty($_REQUEST['code' ]) ? '' : $_REQUEST['code' ]; |
|
$language = empty($_REQUEST['language']) ? '' : strtolower($_REQUEST['language']); |
|
$source = empty($_REQUEST['source' ]) ? '' : $_REQUEST['source' ]; |
|
|
|
$errmsg = ''; |
|
|
|
if (!empty($_POST['bn_submit'])) { |
|
if (!CsrfUtils::verifyCsrfToken($_POST["csrf_token_form"])) { |
|
CsrfUtils::csrfNotVerified(); |
|
} |
|
|
|
if ($source == 'MLP') { |
|
// MedlinePlus Connect Web Application. See: |
|
// https://www.nlm.nih.gov/medlineplus/connect/application.html |
|
$url = 'https://connect.medlineplus.gov/application'; |
|
// Set code type in URL. |
|
$url .= '?mainSearchCriteria.v.cs='; |
|
if ('ICD9' == $codetype) { |
|
$url .= '2.16.840.1.113883.6.103'; |
|
} elseif ('ICD10' == $codetype) { |
|
$url .= '2.16.840.1.113883.6.90' ; |
|
} elseif ('SNOMED' == $codetype) { |
|
$url .= '2.16.840.1.113883.6.96' ; |
|
} elseif ('RXCUI' == $codetype) { |
|
$url .= '2.16.840.1.113883.6.88' ; |
|
} elseif ('NDC' == $codetype) { |
|
$url .= '2.16.840.1.113883.6.69' ; |
|
} elseif ('LOINC' == $codetype) { |
|
$url .= '2.16.840.1.113883.6.1' ; |
|
} else { |
|
die(xlt('Code type not recognized') . ': ' . text($codetype)); |
|
} |
|
|
|
// Set code value in URL. |
|
$url .= '&mainSearchCriteria.v.c=' . urlencode($codevalue); |
|
// Set language in URL if relevant. MedlinePlus supports only English or Spanish. |
|
if ($language == 'es' || $language == 'spanish') { |
|
$url .= '&informationRecipient.languageCode.c=es'; |
|
} |
|
|
|
// There are 2 different ways to get the data: have the server do it, or |
|
// have the browser do it. |
|
if (false) { |
|
$data = file_get_contents($url); |
|
echo text($data); |
|
} else { // Removed opener because this is not a dialog. sjp 12/14/17 |
|
echo "<html><body>" |
|
//."<script type=\"text/javascript\" src=\"". $webroot ."/interface/main/tabs/js/include_opener.js\"></script>" |
|
. "<script>\n"; |
|
echo "document.location.href = " . js_escape($url) . ";\n"; |
|
echo "</script></body></html>\n"; |
|
} |
|
|
|
exit(); |
|
} else { |
|
$lang = 'en'; |
|
if ($language == 'es' || $language == 'spanish') { |
|
$lang = 'es'; |
|
} |
|
|
|
$filename = strtolower("{$codetype}_{$codevalue}_{$lang}.pdf"); |
|
$filepath = "$educationdir/$filename"; |
|
if (is_file($filepath)) { |
|
header('Content-Description: File Transfer'); |
|
header('Content-Transfer-Encoding: binary'); |
|
header('Expires: 0'); |
|
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); |
|
header('Pragma: public'); |
|
// attachment, not inline |
|
header("Content-Disposition: attachment; filename=\"$filename\""); |
|
header("Content-Type: application/pdf"); |
|
header("Content-Length: " . filesize($filepath)); |
|
ob_clean(); |
|
flush(); |
|
readfile($filepath); |
|
exit(); |
|
} else { |
|
$errmsg = xl('There is no local content for this topic.'); |
|
} |
|
} |
|
} |
|
?> |
|
<html> |
|
<head> |
|
|
|
<title><?php echo xlt('Education'); ?></title> |
|
|
|
<?php Header::setupHeader(); ?> |
|
|
|
</head> |
|
<body> |
|
<div class="container mt-3"> |
|
<div class="row"> |
|
<div class="col-12"> |
|
<h3> |
|
<?php |
|
echo xlt('Educational materials for'); |
|
echo ' ' . text($codetype) . ' '; |
|
echo xlt('code'); |
|
echo ' "' . text($codevalue) . '"'; |
|
if ($language) { |
|
echo ' ' . xlt('with preferred language') . ' ' . |
|
text(getListItemTitle('language', $_REQUEST['language'])); |
|
} |
|
?> |
|
</h3> |
|
<?php |
|
if ($errmsg) { |
|
echo "<p class='text-danger'>" . text($errmsg) . "</p>\n"; |
|
} |
|
?> |
|
</div> |
|
</div> |
|
<div class='row'> |
|
<div class='col-12'> |
|
<form method='post' action='education.php' onsubmit='return top.restoreSession()'> |
|
<input type="hidden" name="csrf_token_form" value="<?php echo attr(CsrfUtils::collectCsrfToken()); ?>" /> |
|
<input type='hidden' name='type' value='<?php echo attr($codetype); ?>' /> |
|
<input type='hidden' name='code' value='<?php echo attr($codevalue); ?>' /> |
|
<input type='hidden' name='language' value='<?php echo attr($language); ?>' /> |
|
<div class='form-group'> |
|
<label for="source"><?php echo xlt('Select source'); ?></label> |
|
<select name='source' id='source' class='form-control'> |
|
<option value='MLP'><?php echo xlt('MedlinePlus Connect'); ?></option> |
|
<option value='Local'><?php echo xlt('Local Content'); ?></option> |
|
</select> |
|
</div> |
|
<div class='form-group'> |
|
<div class='btn-group' role='group'> |
|
<button type='submit' class='btn btn-primary btn-search' name='bn_submit' value='bn_submit'> |
|
<?php echo xlt('Submit'); ?> |
|
</button> |
|
<button type='button' class='btn btn-secondary btn-cancel' onclick='window.close()'> |
|
<?php echo xlt('Cancel'); ?> |
|
</button> |
|
</div> |
|
</div> |
|
</form> |
|
</div> |
|
</div> |
|
</div> |
|
</body> |
|
</html>
|
|
|