Initial Checking with all 820 MLMs
This commit is contained in:
670
MLMStripper/bin/Debug/DOC/DOC_FUNC_DIABETESRISK.mlm
Normal file
670
MLMStripper/bin/Debug/DOC/DOC_FUNC_DIABETESRISK.mlm
Normal file
@@ -0,0 +1,670 @@
|
||||
maintenance:
|
||||
|
||||
title: Influenza Logic;;
|
||||
mlmname: DOC_FUNC_DiabetesRisk;;
|
||||
arden: version 5.0;;
|
||||
version: 2.00;;
|
||||
institution: St.Clair Hospital;;
|
||||
author: Teresa Spicuzza;;
|
||||
specialist: ;;
|
||||
date: 2010-09-01;;
|
||||
validation: testing;;
|
||||
|
||||
library:
|
||||
purpose:
|
||||
;;
|
||||
explanation:
|
||||
Change history
|
||||
|
||||
11.23.2010 TS Created - (copy of Doc_FuncPneumovax functionality) MLM checks health issues for diabetes
|
||||
and checks to see if patient has a HGA1C in the past 3 months if not order placed via mlm.
|
||||
|
||||
10.11.2012 JML CSR 30961 - added code to automatically check an HIS defined "unhide" button that displays
|
||||
additional questions regarding diabetes risk
|
||||
06.05.2013 JML CSR 30961 - removed coded section that "un-selects" the "SCHCK_Diabetes retrieve info SCM"
|
||||
observation after user selects it; not allowing the obs to remain selected
|
||||
was causing an issue with making that obs mandatory for RNs
|
||||
09.10.2015 DW CSR# 23359 - ICD10
|
||||
|
||||
;;
|
||||
keywords:
|
||||
;;
|
||||
knowledge:
|
||||
type: data-driven;;
|
||||
data:
|
||||
|
||||
// RS ADD Message box
|
||||
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
||||
include standard_libs;
|
||||
|
||||
using "ObjectsPlusXA.SCM.Forms";
|
||||
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
|
||||
|
||||
|
||||
|
||||
// Receive arguments from the structured note
|
||||
(thisDocumentCommunication) := argument;
|
||||
|
||||
// Extract interesting parts of the object model
|
||||
(thisStructuredNoteDoc) := thisDocumentCommunication.DocumentConfigurationObj;
|
||||
(thisParameters) := thisStructuredNoteDoc.ParametersList;
|
||||
(thisObservations) := thisStructuredNoteDoc.ChartedObservationsList;
|
||||
|
||||
// Create prototypes for the object types we{{{SINGLE-QUOTE}}}ll need to instantiate
|
||||
ObservationType := OBJECT [ObservationGUID, ClientDocumentGUID, ParameterGUID, DataType, ValueObj];
|
||||
FreeTextValueType := OBJECT [Value];
|
||||
DateValueType := OBJECT [Value];
|
||||
ListValueType := OBJECT [ListGuid,ListItemsList, SuggestedTextValue];
|
||||
ListValueListItemType := OBJECT [ListItemGUID, Value, IsSelected];
|
||||
|
||||
// Get the client and visit GUIDs
|
||||
clientGuid := thisDocumentCommunication.ClientGUID;
|
||||
visitGuid := thisDocumentCommunication.ClientVisitGUID;
|
||||
chartGuid := thisDocumentCommunication.ChartGUID;
|
||||
todays_date := now;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Chart Observation Section
|
||||
|
||||
|
||||
IF thisdocumentCommunication.EventType = "ChartObservation" then
|
||||
|
||||
|
||||
// Determine if the Retrieve Info From SCM button has been selected
|
||||
// (if so, set SCM flag to yes and reset the button or set the SCM flag to no)
|
||||
|
||||
|
||||
theParameterx := first of (thisparameters where thisparameters.Name = "SCHCK_Diabetes retrieve info SCM");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameterx.ParameterGUID);
|
||||
if thisDocumentCommunication.CurrentObservationObj.parameterguid = theParameterx.ParameterGUID then
|
||||
|
||||
|
||||
//CSR 30961 retrieve Info from scm button checked, automatically check the {{{SINGLE-QUOTE}}}unhide{{{SINGLE-QUOTE}}} button
|
||||
unhide_parametername := first of (thisParameters WHERE thisParameters.Name = "SCHCK_Diabetes Unhide");
|
||||
new_currentObj := NEW ObservationType;
|
||||
new_currentObj.ClientDocumentGUID := thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
new_currentObj.ParameterGUID := unhide_parametername.ParameterGUID;
|
||||
new_currentObj.DataType := "ListValue";
|
||||
new_currentObj.ValueObj := NEW ListValueType;
|
||||
new_currentObj.ValueObj.ListGUID := unhide_parametername.ConfigurationObj.ListGUID;
|
||||
new_listItems := ();
|
||||
for item IN unhide_parametername.ConfigurationObj.ListItemsList do
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
|
||||
selectedItem.IsSelected := true;
|
||||
|
||||
new_listItems := (new_listItems, selectedItem);
|
||||
enddo;
|
||||
new_currentObj.ValueObj.ListItemsList := new_listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisStructuredNoteDoc.ChartedObservationsList, new_currentObj);
|
||||
//End CSR code change
|
||||
|
||||
SCMButton := "yes";
|
||||
else SCMButton := "no";
|
||||
endif;
|
||||
|
||||
// Determine if the "HgA1C Order - Yes" button has been selected
|
||||
|
||||
// (if so, set the SCMButton flag to neither and the "Place Order - Yes" button to yes)
|
||||
|
||||
|
||||
theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_Diabetes HgA1C order");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID);
|
||||
if thisDocumentCommunication.CurrentObservationObj.parameterguid = theParameter.ParameterGUID then SCMButton := "neither"; endif;
|
||||
if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "yes")
|
||||
then PlaceOrderYesButton := "yes"; endif;
|
||||
|
||||
|
||||
If SCMButton = "neither" and PlaceOrderYesButton = "yes" then
|
||||
|
||||
|
||||
|
||||
// The following code is done only if the Place Order YES button was selected
|
||||
|
||||
|
||||
|
||||
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "\n You cannot place an order on this patient. " ,"Alert","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes HgA1C order");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "ListValue";
|
||||
this_currentObj.ValueObj := New ListValueType;
|
||||
this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID;
|
||||
listItems := ();
|
||||
FOR item IN this_parametername.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if selectedItem.Value = "yes" then selectedItem.IsSelected := false; endif;
|
||||
if selectedItem.Value = "no" then selectedItem.IsSelected := true; endif;
|
||||
listItems := (listItems, selectedItem);
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
|
||||
// The following code is done only if a the Retrieve from SCM button was selected
|
||||
|
||||
// (get data from SCM and populate fields)
|
||||
|
||||
|
||||
If SCMButton = "yes" then
|
||||
|
||||
// Diabetes health issues
|
||||
/*
|
||||
|
||||
"select distinct hid.shortname chi.code chi.typecode hid.typecode "
|
||||
||"from cv3healthissuedeclaration hid with (nolock) "
|
||||
||"join cv3codedhealthissue chi on chi.Guid = hid.codedhealthissueguid "
|
||||
where clientvisitguid = {{{SINGLE-QUOTE}}}9000002831200270{{{SINGLE-QUOTE}}} and chi.typecode = {{{SINGLE-QUOTE}}}ICD9{{{SINGLE-QUOTE}}}"
|
||||
|| "where clientguid = " || ClientGuid || " and hid.active = 1 and hid.status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} "
|
||||
|| "and chi.typecode = {{{SINGLE-QUOTE}}}ICD9{{{SINGLE-QUOTE}}} ( "
|
||||
*/
|
||||
|
||||
/* Replaced with ICD10 project
|
||||
|
||||
(diabeteshealthissue) := read
|
||||
{
|
||||
"select distinct hid.shortname, chi.code, chi.typecode, hid.typecode "
|
||||
||"from cv3healthissuedeclaration hid with (nolock) "
|
||||
||"join cv3codedhealthissue chi on chi.Guid = hid.codedhealthissueguid "
|
||||
|| "where hid.clientguid = " || ClientGuid || " and hid.active = 1 and hid.status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} "
|
||||
|| "and chi.typecode in ({{{SINGLE-QUOTE}}}ICD9{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Pt-Stated Hx{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Pt Stated HX{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}AMB Med History{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Problem-Chronic{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Problem-Visit{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Vaccine History{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Skin Tests{{{SINGLE-QUOTE}}}) "
|
||||
|| "and (hid.text like {{{SINGLE-QUOTE}}}%Diabetes%{{{SINGLE-QUOTE}}} or hid.shortname like {{{SINGLE-QUOTE}}}%Diabetes%{{{SINGLE-QUOTE}}} )"|| " and chi.code not in ({{{SINGLE-QUOTE}}}250.50{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}253.2{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}253.5{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}352.3{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}354{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}362.29{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}588.1{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.00{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.01{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.03{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.04{{{SINGLE-QUOTE}}}, "
|
||||
|| " {{{SINGLE-QUOTE}}}648.80{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}648.81{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}648.82{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}648.83{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}648.84{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}648.90{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}775.00{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}775.10{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}V12.2{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}V18.0{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}V19.8{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}V49.89{{{SINGLE-QUOTE}}},"
|
||||
|| " {{{SINGLE-QUOTE}}}V77.1{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}V84.89{{{SINGLE-QUOTE}}})"
|
||||
|| " and (hid.description not like {{{SINGLE-QUOTE}}}Diabetes, Gestational%{{{SINGLE-QUOTE}}} or hid.shortname not like {{{SINGLE-QUOTE}}}Diabetes, Gestational%{{{SINGLE-QUOTE}}}) "
|
||||
};
|
||||
*/
|
||||
|
||||
ProblemList := "({{{SINGLE-QUOTE}}}250.50{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}253.2{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}253.5{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}352.3{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}354{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}362.29{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}588.1{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.00{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.01{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.03{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.04{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.80{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.81{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.82{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.83{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.84{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}648.90{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}775.00{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}775.10{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}V12.2{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}V18.0{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}V19.8{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}V49.89{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}V77.1{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}V84.89{{{SINGLE-QUOTE}}})";
|
||||
|
||||
(diabeteshealthissue) := read
|
||||
{
|
||||
"select distinct hid.shortname, chi.code, chi.typecode, hid.typecode "
|
||||
||"from cv3healthissuedeclaration hid with (nolock) "
|
||||
||"join cv3codedhealthissue chi on chi.Guid = hid.codedhealthissueguid "
|
||||
|| "where hid.clientguid = " || ClientGuid || " and hid.active = 1 and hid.status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} "
|
||||
|| "and chi.typecode in ({{{SINGLE-QUOTE}}}ICD9{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}ICD10{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Pt-Stated Hx{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Pt Stated HX{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}AMB Med History{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Problem-Chronic{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Problem-Visit{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Vaccine History{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}Skin Tests{{{SINGLE-QUOTE}}}) "
|
||||
|| "and (hid.text like {{{SINGLE-QUOTE}}}%Diabetes%{{{SINGLE-QUOTE}}} or hid.shortname like {{{SINGLE-QUOTE}}}%Diabetes%{{{SINGLE-QUOTE}}} )"
|
||||
|| "and "
|
||||
|| "( "
|
||||
|| "(hid.ICD9Code is null and chi.code not in " || ProblemList || " ) "
|
||||
|| "or "
|
||||
|| "(hid.ICD9Code is not null and hid.ICD9Code not in " || ProblemList || " ) "
|
||||
|| ") "
|
||||
|| " and (hid.description not like {{{SINGLE-QUOTE}}}Diabetes, Gestational%{{{SINGLE-QUOTE}}} or hid.shortname not like {{{SINGLE-QUOTE}}}Diabetes, Gestational%{{{SINGLE-QUOTE}}}) "
|
||||
};
|
||||
|
||||
|
||||
diabeteshealthissue_found := count(diabeteshealthissue) As Number;
|
||||
|
||||
// A1C Test performed
|
||||
|
||||
(testperformed) := read last{
|
||||
"select significantdtm "
|
||||
|| "from cv3order with (nolock) "
|
||||
|| "where clientguid = " || ClientGuid || " and name = {{{SINGLE-QUOTE}}}Hemoglobin A1C{{{SINGLE-QUOTE}}} and active = 1 and orderstatuscode = {{{SINGLE-QUOTE}}}RESF{{{SINGLE-QUOTE}}} "
|
||||
|| "order by significantdtm"
|
||||
};
|
||||
testperformed_found := count(testperformed) As Number ;
|
||||
testnote := "";
|
||||
//if (testperformed as time)is within the past 3 months then within3months := "Has been "; else within3months := "Has not been "; endif;
|
||||
if (testperformed as time)is within the past 3 months then within3months := "Has been ";
|
||||
testnote := "Patient has been tested in the past 3 months: " || testperformed;
|
||||
else within3months := "Has not been ";
|
||||
testnote:= "Patient has not been tested in the past 3 months. ";
|
||||
endif;
|
||||
// Populate Fields and Boxes
|
||||
|
||||
|
||||
|
||||
// Select Health Issue radio button (or Health Issue unknown)
|
||||
|
||||
healthissue := " ";
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes HI- unknown");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "ListValue";
|
||||
this_currentObj.ValueObj := New ListValueType;
|
||||
this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID;
|
||||
listItems := ();
|
||||
FOR item IN this_parametername.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if diabeteshealthissue_found = 0 then selectedItem.IsSelected := true; healthissue := "Is unknown if "; endif;
|
||||
listItems := (listItems, selectedItem);
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
If healthissue <> "Is unknown if " then
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes HI- y/n");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "ListValue";
|
||||
this_currentObj.ValueObj := New ListValueType;
|
||||
this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID;
|
||||
listItems := ();
|
||||
FOR item IN this_parametername.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if selectedItem.Value = "yes" and diabeteshealthissue_found > 0 then selectedItem.IsSelected := true; healthissue := "Has a "; endif;
|
||||
listItems := (listItems, selectedItem);
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
endif;
|
||||
|
||||
// Select A1c done in past 3 months radio button (or test done unknown)
|
||||
|
||||
labtests := " ";
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes HgA1C- unknown");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "ListValue";
|
||||
this_currentObj.ValueObj := New ListValueType;
|
||||
this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID;
|
||||
listItems := ();
|
||||
FOR item IN this_parametername.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if within3months = "Has not been " then selectedItem.IsSelected := true; labtests := "Is unknown if "; endif;
|
||||
listItems := (listItems, selectedItem);
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
|
||||
If within3months = "Has been " then
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes HgA1C- y/n");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "ListValue";
|
||||
this_currentObj.ValueObj := New ListValueType;
|
||||
this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID;
|
||||
listItems := ();
|
||||
FOR item IN this_parametername.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if selectedItem.Value = "yes" then selectedItem.IsSelected := true; labtests := "Is "; endif;
|
||||
listItems := (listItems, selectedItem);
|
||||
|
||||
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
endif;
|
||||
|
||||
// new for check lab as no
|
||||
|
||||
If within3months = "Has not been " then
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes HgA1C- y/n");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "ListValue";
|
||||
this_currentObj.ValueObj := New ListValueType;
|
||||
this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID;
|
||||
listItems := ();
|
||||
FOR item IN this_parametername.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if selectedItem.Value = "no" then selectedItem.IsSelected := true; labtests := "Is not "; endif;
|
||||
listItems := (listItems, selectedItem);
|
||||
|
||||
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
endif;
|
||||
// Prepare the data for the Diabetes Health Issue and A1C performed boxes
|
||||
|
||||
|
||||
holdHI:="";
|
||||
if diabeteshealthissue_found > 0 then
|
||||
for k in (1 seqto (diabeteshealthissue_found)) do
|
||||
if diabeteshealthissue[k] is not null then
|
||||
holdHI := holdHI || diabeteshealthissue[k] ;
|
||||
if k <> diabeteshealthissue_found then // not the last in the list
|
||||
holdHI := holdHI || ", ";
|
||||
endif;
|
||||
endif;
|
||||
enddo;
|
||||
endif;
|
||||
if holdHI = "" then formattedTextHI := " Nothing found. Does the patient have diabetes? ";
|
||||
else formattedtextHi := holdHI;
|
||||
endif;
|
||||
|
||||
|
||||
holdHI:="";
|
||||
if testperformed_found > 0 then
|
||||
for k in (1 seqto (testperformed_found )) do
|
||||
if testperformed[k] is not null then
|
||||
holdHI := holdHI || testperformed[k] ;
|
||||
if k <> testperformed_found then // not the last in the list
|
||||
holdHI := holdHI || ", ";
|
||||
endif;
|
||||
endif;
|
||||
enddo;
|
||||
endif;
|
||||
if holdHI = "" then formattedTextTest := " Nothing found. Has the patient had a HgA1C performed? ";
|
||||
else formattedTextTest := testnote;
|
||||
endif;
|
||||
|
||||
|
||||
|
||||
// Populate the Health Issue text box
|
||||
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes HI-FT");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "FreeTextValue";
|
||||
this_currentObj.ValueObj := New FreeTextValueType;
|
||||
this_currentObj.ValueObj.Value := formattedTextHI;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
|
||||
// Populate the A1c performed text box
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes Hga1c- FT");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "FreeTextValue";
|
||||
this_currentObj.ValueObj := New FreeTextValueType;
|
||||
this_currentObj.ValueObj.Value := formattedTextTest;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
|
||||
// The following code is performed only if a button other than the Retrieve from SCM button was selected
|
||||
//
|
||||
// Since it appears that the checking of buttons does not occur until the end,
|
||||
// this section it to be done only when not SCM button
|
||||
//
|
||||
|
||||
|
||||
elseIf SCMButton = "no" then
|
||||
|
||||
|
||||
// Determine which of the Health Issue buttons is selected
|
||||
|
||||
theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_Diabetes HI- y/n");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID);
|
||||
|
||||
if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "no")
|
||||
then healthissue := "Does not have "; endif;
|
||||
|
||||
if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "yes")
|
||||
then healthissue := "Has a "; endif;
|
||||
|
||||
if false in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "yes")
|
||||
and
|
||||
false in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "no")
|
||||
then
|
||||
healthissue := "Is unknown if "; endif;
|
||||
|
||||
|
||||
|
||||
// Determine which of the A1C Perfomred buttons is selected
|
||||
|
||||
theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_Diabetes HgA1C- y/n");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID);
|
||||
|
||||
if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "no")
|
||||
then labtests := "Is not "; endif;
|
||||
|
||||
if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "yes")
|
||||
then labtests := "Is "; endif;
|
||||
|
||||
if false in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "yes")
|
||||
and
|
||||
false in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "no")
|
||||
then
|
||||
labtests := "Is unknown if "; endif;
|
||||
|
||||
endif; // If not the SCM button
|
||||
|
||||
|
||||
if SCMButton = "yes" or SCMButton = "no" then
|
||||
|
||||
|
||||
|
||||
// The following code is done regardless of whether the Retrieve from SCM button or other button was selected
|
||||
|
||||
// (this excludes the place order yes button)
|
||||
|
||||
|
||||
|
||||
// Determine if test was performed within the past 3 months
|
||||
//testnote:= "";
|
||||
if (testperformed as time)is within the past 3 months then within3months := "Has been ";
|
||||
testnote := "Patient has been tested in the past 3 months: " || testperformed;
|
||||
else within3months := "Has not been ";
|
||||
testnote:= "Patient has not been tested in the past 3 months. ";
|
||||
endif;
|
||||
// Assess the risk
|
||||
/*
|
||||
// This secton as well as the FormattedText1 := below are for diagnostic purposes only
|
||||
|
||||
Factor1 := scmbutton || ": value of scmbutton. ";
|
||||
Factor2 := diabeteshealthissue || ": diabetes health issue. ";
|
||||
Factor3 := diabeteshealthissue_found || ": dhi found. ";
|
||||
Factor4 := labtests || ": labtests. ";
|
||||
Factor5 := healthissue || ": healthissue. ";
|
||||
Factor6 := within3months || ": Within3months. ";
|
||||
Factor7 := testperformed_found || ": tp found. ";
|
||||
Factor8 := formattedtextHi || ": value of formattedtextHI. " ;
|
||||
Factor9 := formattedtexttest|| ": value of formattedtexttest. " ;
|
||||
formattedTextReason := " Risk was not determined. ";
|
||||
orderlab := "no";
|
||||
|
||||
formattedText1 := Factor1 ||"\n " || Factor4 || "\n " || Factor5 || "\n " || Factor6 ;
|
||||
// Populate (HIS only) Diagnostic box
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Pneumo FT info");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "FreeTextValue";
|
||||
this_currentObj.ValueObj := New FreeTextValueType;
|
||||
this_currentObj.ValueObj.Value := formattedText1;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
*/
|
||||
//Scenarios that will cause an order to be placed
|
||||
If healthissue = "Has a " and (within3months = "Has not been " and labtests = "Is not ") then orderlab := "yes";
|
||||
formattedTextReason := "Order is to be placed since patient is a diabetic and has not been tested in the past 3 months." ; endif;
|
||||
|
||||
If healthissue = "Has a " and (within3months = "Has been " or labtests = "Is ") then orderlab := "no";
|
||||
formattedTextReason := "Order is not to be placed since patient is a diabetic but has been tested in the past 3 months." ; endif;
|
||||
|
||||
If healthissue <> "Has a " then orderlab := "no";
|
||||
formattedTextReason := "Order is not to be placed since patient is not diabetic." ; endif;
|
||||
|
||||
If healthissue = "Is unknown if " then orderlab := "no";
|
||||
formattedTextReason := " Risk was not determined. " ; endif;
|
||||
|
||||
// Populate the Risk Details box /*
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes Risk Assess Details");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "FreeTextValue";
|
||||
this_currentObj.ValueObj := New FreeTextValueType;
|
||||
this_currentObj.ValueObj.Value := formattedTextReason;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
// Select Order A1C radio button
|
||||
|
||||
this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Diabetes HgA1C order");
|
||||
this_currentObj := NEW ObservationType;
|
||||
this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID;
|
||||
this_currentObj.ParameterGUID := this_parametername.ParameterGUID;
|
||||
this_currentObj.DataType := "ListValue";
|
||||
this_currentObj.ValueObj := New ListValueType;
|
||||
this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID;
|
||||
listItems := ();
|
||||
FOR item IN this_parametername.ConfigurationObj.ListItemsList DO
|
||||
selectedItem := NEW ListValueListItemType;
|
||||
selectedItem.ListItemGUID := item.ListItemGUID;
|
||||
selectedItem.Value := item.Value;
|
||||
if selectedItem.Value = "yes" and orderlab = "yes" then selectedItem.IsSelected := true; endif;
|
||||
if selectedItem.Value = "no" and orderlab = "no" then selectedItem.IsSelected := true; endif;
|
||||
listItems := (listItems, selectedItem);
|
||||
ENDDO;
|
||||
this_currentobj.ValueObj.ListItemsList := listItems;
|
||||
thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj);
|
||||
|
||||
endif; // end of section for assessing risk
|
||||
|
||||
// Display error message when Health Issue or A1C performed is unknown
|
||||
|
||||
If healthissue = "Is unknown if " and labtests = "Is unknown if " then
|
||||
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with
|
||||
"\n\n There are no Health Issues in SCM indicating that the patient has diabetes or has had an HgA1C in the past 3 months."
|
||||
|| "\n\n Please address these questions with the patient and select the appropriate button for each of these. \n\n "
|
||||
,"Un-addressed information to be resolved ","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
||||
endif;
|
||||
|
||||
If healthissue <> "Is unknown if " and labtests = "Is unknown if " then
|
||||
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with
|
||||
"\n\n There are no indications in SCM that the patient has had an HgA1C in the past 3 months"
|
||||
|| "\n\n Please address this question with the patient and select the appropriate button. \n\n"
|
||||
,"Un-addressed information to be resolved ","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
||||
endif;
|
||||
|
||||
If healthissue = "Is unknown if " and labtests <> "Is unknown if " then
|
||||
dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with
|
||||
"\n\n There are no Health Issues in SCM indicating that the patient has diabetes"
|
||||
|| "\n\n Please address this question with the patient and select the appropriate button. \n\n"
|
||||
,"Un-addressed information to be resolved ","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
|
||||
endif;
|
||||
|
||||
endif; // Observation Event
|
||||
|
||||
|
||||
// Document Closing Event
|
||||
|
||||
|
||||
IF thisdocumentCommunication.EventType = "DocumentClosing" then
|
||||
|
||||
|
||||
// Determine if an order is to be placed
|
||||
|
||||
theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_Diabetes HgA1C order");
|
||||
theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID);
|
||||
if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "no")
|
||||
then placeorder := "no"; endif;
|
||||
if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "yes")
|
||||
then placeorder := "yes"; endif;
|
||||
|
||||
// Order present
|
||||
|
||||
(orderpresent) := read
|
||||
{
|
||||
" select o.name "
|
||||
|| " from cv3ordercatalogmasteritem as ocmi with (nolock) "
|
||||
|| " join cv3order as o with (nolock)on o.ordercatalogmasteritemguid = ocmi.guid "
|
||||
|| " and o.ClientGUID = " || ClientGuid || " and o.ChartGUID = " || ChartGuid || " and o.ClientVisitGUID= " || VisitGuid || " "
|
||||
|| " and (o.name = {{{SINGLE-QUOTE}}}Hemoglobin A1C{{{SINGLE-QUOTE}}}) "
|
||||
|| " and o.OrderStatusLevelNum > 15 and o.OrderStatusLevelNum not in ({{{SINGLE-QUOTE}}}69{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}70{{{SINGLE-QUOTE}}}) "
|
||||
};
|
||||
orderpresent_found := count(orderpresent) As Number;
|
||||
If placeorder = "yes" and orderpresent_found = 0 then
|
||||
|
||||
SessionType := "Standard";
|
||||
SessionReason := "";
|
||||
RequestingSource := "";
|
||||
user_IDType := "Edstan Number (physician)";
|
||||
order_Creation_Reason := "From Test MLM";
|
||||
|
||||
client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((thisdocumentCommunication.ClientVisitGUID as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}) ;
|
||||
user_IDCode := read last {"SELECT IDCode FROM CV3User " || " where GUID = " || thisdocumentCommunication.UserGUID};
|
||||
RequestingCareProvider_obj := call {{{SINGLE-QUOTE}}}CareProvider{{{SINGLE-QUOTE}}}.FindById with ( user_IDType, (user_IDCode as STRING) );
|
||||
location_guid := read last {"SELECT CurrentLocationGUID FROM CV3ClientVisit where ClientGUID = " || thisdocumentCommunication.ClientGUID};
|
||||
location_obj := call {{{SINGLE-QUOTE}}}Location{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((location_guid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
||||
|
||||
|
||||
// Create a new MEDICATION order from a Pre-Filled item ***
|
||||
try
|
||||
Catalog_Item_Name := "Hemoglobin A1C";
|
||||
Catalog_Item_Modifier := "Per Risk Assessment";
|
||||
Catalog_Item_Version := "";
|
||||
Laboratory_catalog_item := call {{{SINGLE-QUOTE}}}OrderCatalogMasterItem{{{SINGLE-QUOTE}}}.FindByName with Catalog_Item_Name;
|
||||
Parent_DiagnosticOrder_obj := call {{{SINGLE-QUOTE}}}DiagnosticOrder{{{SINGLE-QUOTE}}}.CreateDiagnosticOrder
|
||||
// PreFilled_MedicationOrder_obj := call {{{SINGLE-QUOTE}}}MedicationOrder{{{SINGLE-QUOTE}}}.CreateMedicationOrder
|
||||
with
|
||||
client_visit_obj, // ClientVisit ObjectsPlus object
|
||||
// Medication_catalog_item, // OrderCatalogMasterItem ObjectsPlus object
|
||||
Laboratory_catalog_item, // OrderCatalogMasterItem ObjectsPlus object
|
||||
Catalog_Item_Modifier, // string ItemNameModifier
|
||||
Catalog_Item_Version, // string ItemNameModifierVersion
|
||||
order_Creation_Reason, // string CreateReason
|
||||
RequestingCareProvider_obj , // RequestedBy ObjectsPlus object
|
||||
RequestingSource, // string RequestedBySource (must be in dictionary)
|
||||
SessionType, // string SessionType
|
||||
SessionReason, // string SessionReason
|
||||
location_obj, // Location ReleaseLocGrpID
|
||||
"Always" as {{{SINGLE-QUOTE}}}AvailabilityOverride{{{SINGLE-QUOTE}}}; // AvailabilityOverride eAvailabilityOverride
|
||||
|
||||
|
||||
if ( Laboratory_catalog_item is NOT NULL ) then
|
||||
void := call Parent_DiagnosticOrder_obj.Save;
|
||||
void := call Parent_DiagnosticOrder_obj.Dispose;
|
||||
void:= call Laboratory_catalog_item.Dispose;
|
||||
Laboratory_catalog_item:= null;
|
||||
|
||||
|
||||
endif;
|
||||
|
||||
// Parent_DiagnositicOrder_dest.ObjectsPlus := Parent_DiagnositicOrder_obj;
|
||||
|
||||
endtry;
|
||||
|
||||
catch Exception ex error_occurred := true; error_message := "{{+R}}New Parent Diagnostic order:{{-R}}\n" || ex.Message || "\n\n";
|
||||
|
||||
if ( Laboratory_catalog_item is NOT NULL ) then void:= call Laboratory_catalog_item.Dispose; Laboratory_catalog_item:= null; endif;
|
||||
if ( Parent_DiagnosticOrder_obj is NOT NULL ) then void:= call Parent_DiagnosticOrder_obj.Dispose; Parent_DiagnosticOrder_obj:= null; endif;
|
||||
|
||||
Parent_DiagnosticOrder_dest := null;
|
||||
|
||||
endcatch;
|
||||
|
||||
endif; // End of Place Order = Yes section
|
||||
|
||||
endif; // End of Close Document
|
||||
|
||||
|
||||
;;
|
||||
evoke:
|
||||
;;
|
||||
logic: conclude true;
|
||||
;;
|
||||
action: return thisDocumentCommunication;
|
||||
;;
|
||||
Urgency: 50;;
|
||||
end:
|
||||
Reference in New Issue
Block a user