Initial Checking with all 820 MLMs

This commit is contained in:
2020-02-02 00:54:01 -05:00
parent c59dc6de2e
commit 840d0432f4
828 changed files with 239162 additions and 0 deletions

View File

@@ -0,0 +1,324 @@
maintenance:
title: SCH_CHART_TASK_CREATE_HEALTHISSUE;;
mlmname: SCH_CHART_TASK_CREATE_HEALTHISSUE;;
arden: version 2;;
version: 5.00;;
institution: St Clair Hospital;;
author: Eclipsys;;
specialist: ;;
date: 2010-03-12;;
validation: testing;;
library:
purpose: Chart a Health Issue Of Pneumococcal When Pneumococcal Vaccine Is Charted
Either by the interface (batch) or by the user.
Remove a health issue if a task on the same day is reset.
;;
explanation: Pneumococcal Initiative
Change history
09.01.2010 TS Added logic to chart and remove variable vaccines - Diphtheria/Tetanus Toxid, HIB, Hep B,
Influenza, Meningococcal, Rubella, and TDAP
08.22.2011 DW Major rewrite CSR#26269 - changed Pneumococcal HI code from "2" to "V03.82"
09.20.2011 DW Major rewrite CSR#26486 - changed Influenza HI code from "1" to "V04.81"
01.24.2012 TS Change made to evoke statement to remove the time delay statement that was causing reset of a task
or changing a previously charted task to not given to not remove the health issue. HD Ticket 146109
02.08.2012 DW CSR# 26307 - changed TDAP HI code from "4" to "V06.1"
04.04.2012 DW CSR# 26307 - Àdded new Health Issues for ED TDAP project
09.16.2014 TMS CSR# 32748 - Àdded new Catalog Name for Influenza
10.28.2014 STH CSR#: 32776 - Modify the "issuename" to pull from the health manager configuration to match the immunization history
name when the ordered item/task is setup to write to health manager and send to state for immunization tracking.
12.16.2015 - CSR #:33655 - Update for Prevnar 13 {Loaded 1.13.2016 ahead of the target go-live date of the product being available}
03.08.2016 - STH CSR#: 33655/ Helpdesk ticket #: - There was a section added to this MLM by GMS that must have been abandoned because it was never moved live.
The section was allowing the health issues to create in DEV durning testing; however additional configuration is
required in other enviornments for this same logic to work in those enviornments. Reverted the section back to the
original logic and the MLM works in all enviornments. Believe the section was a proof of concept for ICD10 that got abandoned.
05.31.2019 - DW CSR# 37676 - 18.4 Changed Interface user logic to Services
;;
keywords: Charting, Create Health Issue, Remove HealthIssues;
;;
knowledge:
type: data-driven;;
data:
/* Set to true if logging is needed.*/
log_execution_info:= FALSE;
standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
include standard_libs;
using "ObjectsPlusXA.SCM.Forms";
using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms";
WhatAmIDoing := "";
any_modified_task:= event {OrderTaskOccurrenceModify
Any OrderTaskOccurrence:
WHERE TaskName Matches Pattern "Pneumococcal Vaccine Inj (Pneumovax)%"
or TaskName Matches Pattern "Pneumococcal 13-Valent Vaccine Inj%"
or TaskName Matches Pattern "Influenza Virus Trivalent Vaccine%"
or TaskName Matches Pattern "Influenza Virus Vaccine%"
or TaskName Matches Pattern "Hepatitis B Virus Vaccine Inj%"
or TaskName Matches Pattern "Haemophilus B Conj%"
or TaskName Matches Pattern "Diphtheria/Tetanus Toxoid%"
or TaskName Matches Pattern "Rubella Vaccine Inj%"
or TaskName Matches Pattern "Meningococcal Vaccine Inj%"
or TaskName Matches Pattern "Diphtheria, Pertussis, Tetanus Vaccine%" };
/*
if called_by_editor then
EvokingObject := read last {OrderTaskOccurrence: THIS
where TaskName Matches Pattern "Pneumococcal Vaccine Inj (Pneumovax)%" };
endif;
*/
NewHealthIssue_dest := destination { ObjectsPlus } with
[ alert_type := "Warning",
short_message := "Object created by MLM",
priority := "low",
scope := "chart",
rule_group := "Health Issue Object",
rule_number := 2010 ];
Discontinue_HealthIssue_dest := destination { ObjectsPlus } with
[ alert_type := "Warning",
short_message := "Object deleted by MLM",
priority := "low",
scope := "chart",
rule_group := "Health Issue Object",
rule_number := 2040 ];
client_GUID := read last { ClientInfo: GUID };
userguid,user_id :=read last {UserInfo: guid,idcode};
// obtain the location info
TaskName,TaskStatusCode,orderguid ,significantdtm:= read last {OrderTaskOccurrence: TaskName,TaskStatusCode,OrderGUID,SignificantDtm REFERENCING EvokingObject};
Client_Visit_Guid := read last { " select clientvisitguid from cv3order with (nolock) where guid = " || SQL(orderguid)};
(backup_obj) := read last {OrderTaskOccurrence: Backup REFERENCING EvokingObject};
// new logic to support variable vaccine orders/tasks
issuename := "";
issuecode := "";
if ((taskname matches pattern "Pneumococcal Vaccine Inj%") or (taskname matches pattern "Pneumococcal 13-Valent Vaccine Inj%")) then
issuename := "Pneumococcal Vaccine";
issuecode := "V03.82";
endif;
if taskname matches pattern "Influenza Virus Trivalent Vaccine%" then
issuename := "Influenza Vaccine";
issuecode := "V04.81";
endif;
if taskname matches pattern "Influenza Virus Vaccine%" then
issuename := "Influenza Vaccine";
issuecode := "V04.81";
endif;
if taskname matches pattern "Diphtheria, Pertussis, Tetanus Vaccine%" then
issuename := "TDAP- Tetanus,Diptheria, Acellular Pertussis";
issuecode := "V06.1";
endif;
if taskname matches pattern "Hepatitis B Virus Vaccine Inj%" then
issuename := "Hepatitis B Vaccine";
issuecode := "V05.3";
endif;
if taskname matches pattern "Rubella Vaccine Inj%" then
issuename := "Rubella Vaccine";
issuecode := "V04.3";
endif;
if taskname matches pattern "Haemophilus B Conj%" then
issuename := "Haemophilus B Conjugate (HIB) Vaccine";
issuecode := "V03.81";
endif;
if taskname matches pattern "Meningococcal Vaccine Inj%" then
issuename := "Meningococcal Vaccine";
issuecode := "V03.89";
endif;
if taskname matches pattern "Diphtheria/Tetanus Toxoid%" then
issuename := "Diphtheria/Tetanus Toxoid";
issuecode := "V06.5";
endif;
//Added by STH 10/28/2014 to pull the Immunization Name from Health Manager when there is a CVX Coded added to create the health manager entry for sending to the state.
//This same code/logic is used in the SCH_HM_MARK_AS_DONE for creating the health manager entry for the vaccine name given.
CodingCVXCode := "HM CVXCode";
catalogItemGUID := EvokingObject.CatalogItemTaskGUID;
ImmunizationCVXCode := read last {"Select an.Name from CV3AncillaryName an with (nolock) " ||
"Where an.MainCatItemGUID = " || SQL(catalogItemGUID) ||
" AND an.Active = 1 AND an.CodingStd = " || SQL(CodingCVXCode) };
if ImmunizationCVXCode is not null and ImmunizationCVXCode <> "" then
HMCVXCodeName := read last {"select name from SXAHMVaccineCatalogItem with (nolock) " ||
" Where cvxcode = " || sql(ImmunizationCVXCode) ||
" and active = 1 " };
if HMCVXCodeName is not null and HMCVXCodeName <> "" then
issuename := HMCVXCodeName;
endif;
endif;
(bk_TaskName,bk_TaskStatusCode,bk_TouchedBy,bk_TouchedWhen,bk_LatestScheduledDtm,
bk_EnteredProviderGUID,bk_PerformedProviderGUID,bk_EnteredDtm,bk_PerformedFromDtm,
bk_SignificantDtm,bk_TaskReason,bk_TaskComment,bk_BodySite) :=
read last {OrderTaskOccurrence: TaskName,TaskStatusCode,TouchedBy,TouchedWhen,
LatestScheduledDtm,EnteredProviderGUID,PerformedProviderGUID,EnteredDtm,
PerformedFromDtm,SignificantDtm,TaskReason,TaskComment,BodySite REFERENCING backup_obj};
if taskstatuscode = "Performed"
then
yr := extract year significantdtm;
mn := extract month significantdtm;
dd := extract day significantdtm;
else
yr := extract year bk_SignificantDtm;
mn := extract month bk_SignificantDtm;
dd := extract day bk_SignificantDtm;
endif;
HealthIssueTypeCode := "Vaccine History";
delete_healthIssue_GUID, delete_ShortName, delete_dd,delete_mn,delete_yr:= read last
{ " select GUID,ShortName,OnsetDayNum,OnSetMonthNum,OnSetYearNum from CV3HealthIssueDeclaration with (nolock) " ||
" where TypeCode = " || SQL(HealthIssueTypeCode) ||
" AND ShortName = " || SQL(issuename) ||
" AND Status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} AND ClientGUID = " ||
SQL(client_GUID) ||
" AND OnSetDayNum = " || SQL(dd) ||
" AND OnsetMonthNum = " || SQL(mn) ||
" AND OnsetYearNum = " || SQL(yr)
} ;
;;
// evoke: 0 minutes after time of any_modified_task;
evoke: any_modified_task;
;;
logic:
if bk_TaskStatusCode = TaskStatusCode // I.e the status of the task has not changed. So do nothing
then
conclude false;
else // else, let{{{SINGLE-QUOTE}}}s create or remove some health issues.
/* dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "So the Task Status Code is Changing"
|| "\nYour task is going from " || bk_TaskStatusCode
|| "\nTo " || TaskStatusCode
,"Tester","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}};
*/
try
//get the .NET version of the Client Visit object. Needed to create new
//ObjectsPlus objects
client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey
with ((Client_Visit_Guid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}) ;
endtry;
catch Exception ex
error_occurred := true;
error_message := "{{+R}}Retrieve client:{{-R}}\n" ||
ex.Message || "\n\n";
if ex.InnerException is not null net_object then
error_message := error_message ||
"Inner Exception: " || ex.InnerException.Message || "\n\n";
endif;
// If the client object cannot be retrieved, do not attempt
// to create any ObjectsPlus objects.
conclude true;
endcatch;
if ((TaskStatusCode = "Performed") and (not (exists delete_healthIssue_GUID))) // marked as performed
// but if already a HI, do nothing.
then
try
//---------------------------------------------------------
// New HealthIssue Example
//---------------------------------------------------------
// Type and Code information for creating a new HealthIssue
NewHealthIssueHIType := "Vaccine History";
NewHealthIssueHICode := issuecode;
NewHealthIssueHIScheme := "Vaccine History";
// Create an instance of a HealthIssue
New_HealthIssue_obj := call {{{SINGLE-QUOTE}}}HealthIssue{{{SINGLE-QUOTE}}}.CreateCodedHealthIssue
with
(client_visit_obj, //ClientVisit
NewHealthIssueHIType, // HI Type
NewHealthIssueHIScheme, // HI Coding Scheme
NewHealthIssueHICode ); // HI Code
// Set some properties of the healthIssue
PartialDate_obj := new net_object {{{SINGLE-QUOTE}}}PartialDate{{{SINGLE-QUOTE}}} with (
yr as {{{SINGLE-QUOTE}}}Int32{{{SINGLE-QUOTE}}}, // Year
mn as {{{SINGLE-QUOTE}}}Int32{{{SINGLE-QUOTE}}}, // Month
dd as {{{SINGLE-QUOTE}}}Int32{{{SINGLE-QUOTE}}} ); // Day
New_HealthIssue_obj.OnsetDate := PartialDate_obj;
extratext := "";
if user_id matches pattern "%services"
then
extratext := "VeriScan";
else
extratext := "the eMAR";
endif;
New_HealthIssue_obj.Text := "Created via {{{SINGLE-QUOTE}}}Marked as Done{{{SINGLE-QUOTE}}} from " || extratext;
New_HealthIssue_obj.Name := issuename;
NewHealthIssue_dest.ObjectsPlus := New_HealthIssue_obj;
endtry;
catch exception ex
error_occurred := true;
if ( New_HealthIssue_obj is NOT NULL ) then
void:= call New_HealthIssue_obj.Dispose;
New_HealthIssue_obj:= null;
endif;
NewHealthIssue_dest := null;
endcatch;
elseif bk_TaskStatusCode = "Performed"
then
// else you are resting the task that was performed, so take away the Health Issue
// Note we already found the related HI by the delete_healthIssue_GUID in the SQL in the Data element
try
if exists delete_healthIssue_GUID
then
Discontinue_HealthIssue_Obj := call {{{SINGLE-QUOTE}}}HealthIssue{{{SINGLE-QUOTE}}}.FindByPrimaryKey
with ( (delete_healthIssue_GUID as number ) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
empty := call Discontinue_HealthIssue_Obj.Discontinue;
Discontinue_HealthIssue_dest.ObjectsPlus := Discontinue_HealthIssue_Obj;
endif;
endtry;
catch exception ex
error_occurred := true;
error_message := error_message || "{{+R}}Discontinue HI {{-R}} \n\n";
if ex.InnerException is not null net_object then
error_message := error_message || "Inner Exception " || ex.InnerException.Message || "\n\n";
endif;
if (Discontinue_HealthIssue_Obj is not null) then
void := call Discontinue_HealthIssue_Obj.Dispose;
Discontinue_HealthIssue_Obj := null;
endif;
Discontinue_HealthIssue_dest := null;
endcatch;
endif;
conclude true;
endif;
;;
action:
if exists NewHealthIssue_dest then
write TRUE at NewHealthIssue_dest;
endif;
if exists Discontinue_HealthIssue_Dest then
write TRUE at Discontinue_HealthIssue_Dest;
endif;
;;
Urgency: 50;;
end: