262 lines
11 KiB
Plaintext
262 lines
11 KiB
Plaintext
maintenance:
|
|
|
|
title: SCH_Readmission_Pharmacy_Order;;
|
|
mlmname: SCH_Readmission_Pharmacy_Order;;
|
|
arden: version 2.5;;
|
|
version: 5.50;; // FP1
|
|
institution: SCH ;;
|
|
author: Chintan Tilwa;;
|
|
specialist: ;;
|
|
date: 2012-09-19;;
|
|
validation: testing;;
|
|
|
|
library:
|
|
purpose: Create Pharmacy Risk orders and health issues based upon Admission Profile Selections
|
|
|
|
;;
|
|
explanation: This orders created by this MLM will by-pass the order entry worksheet
|
|
and will write directly to the database once the evoking object is saved.
|
|
|
|
Change history
|
|
|
|
10.15.2012 CT CSR# 30880 - Created by GOS for Readmission Initiative Project
|
|
04.30.2013 DW CSR# 31334 - Adjusted to support the re-configuration of Pregnancy & Lactation questions
|
|
10.12.2015 GOS CSR#23359 - Made change in MLM for ICD9-ICD10 Coding Scheme [ICD10] And Duplicate Check of HI .DE
|
|
11.21.2018 DW HD#2388518 - Dialysis Patient has duplicate Health Issues (joining on clientguid)
|
|
|
|
;;
|
|
keywords: ObjectsPlus, Orders
|
|
;;
|
|
knowledge:
|
|
type: data-driven;;
|
|
data:
|
|
|
|
// Specify which .NET assemblies need to be loaded for ObjectsPlus
|
|
standard_libs := MLM {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
|
include standard_libs;
|
|
|
|
error_occurred := false;
|
|
error_message := "";
|
|
log_execution_info := false;
|
|
|
|
HI_mod_mlm := MLM {{{SINGLE-QUOTE}}}SCH_Create_General_Order{{{SINGLE-QUOTE}}};
|
|
// str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}};
|
|
|
|
// Evoking Events
|
|
|
|
Document_Enter := event {ClientDocumentEnter User ClientDocument: where documentname in ("Readmission Risk Assessment","Adult Patient Profile","Adult Patient Profile - Observation")};
|
|
Document_Modify := event {ClientDocumentModify User ClientDocument: where documentname in ("Readmission Risk Assessment","Adult Patient Profile","Adult Patient Profile - Observation")};
|
|
|
|
// Gather the components of the Order Object
|
|
|
|
user_IDType := "Primary";
|
|
careProvider_obj := read last{UserInfo: careProvider };
|
|
CareProviderIDs_obj:= read last{CareProvider: CareProviderID REFERENCING careProvider_obj };
|
|
user_IDCode := read last{CareProviderID: IDCode REFERENCING CareProviderIDs_obj where ProviderIDTypeCode = user_IDType };
|
|
|
|
(location_guid, Active_ClientVisitGUID, client_guid, chartguid)
|
|
:= read last {ClientVisit: CurrentLocationGUID, GUID, clientguid, chartguid };
|
|
|
|
Active_ClientVisitGUID := EvokingObject.ClientVisitGUID;
|
|
Care_Provider := EVOKINGOBJECT.AuthoredProviderGUID;
|
|
|
|
try
|
|
client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((Active_ClientVisitGUID as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}) ;
|
|
WSRequestedBy_obj := call {{{SINGLE-QUOTE}}}CareProvider{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((Care_Provider as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
|
WSlocation_obj := call {{{SINGLE-QUOTE}}}Location{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((location_guid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
|
WSSessionType := "Standard";
|
|
WSSessionReason := "";
|
|
WSRequestedBySource:= "";
|
|
order_Creation_Reason := "From Test MLM" ;
|
|
endtry;
|
|
|
|
catch Exception ex
|
|
error_occurred := true;
|
|
error_message := "{{+R}}Common Data:{{-R}}\n" || ex.Message || "\n\n";
|
|
|
|
if ( client_visit_obj is NOT NULL ) then void:= call client_visit_obj.Dispose; client_visit_obj:= null; endif;
|
|
if ( WSRequestedBy_obj is NOT NULL ) then void:= call WSRequestedBy_obj.Dispose; WSRequestedBy_obj:= null; endif;
|
|
if ( WSlocation_obj is NOT NULL ) then void:= call WSlocation_obj.Dispose; WSlocation_obj:= null; endif;
|
|
endcatch;
|
|
|
|
|
|
// Determine which of the questions have a response of "yes"
|
|
|
|
(Client_Observation_Document_Obj, GUID)
|
|
:= read last {ClientDocument: ClientObservationDocument, GUID
|
|
REFERENCING EvokingObject};
|
|
|
|
(PregnancyResponse):= read Last {ClientObservationDocument: ObsFSListValues
|
|
REFERENCING Client_Observation_Document_Obj where Name = "SCH_PRO fem repro pg yn"};
|
|
|
|
(LactationResponse):= read Last {ClientObservationDocument: ObsFSListValues
|
|
REFERENCING Client_Observation_Document_Obj where Name = "SCH_PRO fem repro breastfeed yn"};
|
|
|
|
(DialysisResponse) := read Last {ClientObservationDocument: ObsFSListValues
|
|
REFERENCING Client_Observation_Document_Obj where Name = "SCH_CK_Dialysis y/n"};
|
|
|
|
if PregnancyResponse.value = "yes" then pregval := "Pregnant"; else pregval := ""; endif;
|
|
if LactationResponse.value = "yes" then feedval := "Lactating"; else feedval := ""; endif;
|
|
if DialysisResponse.value = "yes" then dialval := "On Dialysis";else dialval := ""; endif;
|
|
|
|
val1:= (pregval,feedval,dialval);
|
|
|
|
|
|
// Loop through each of the selections.
|
|
|
|
|
|
for i in 1 seqto count of val1 do
|
|
|
|
Selection_Name := val1[i] ;
|
|
|
|
if Selection_Name <> ""
|
|
|
|
then
|
|
|
|
|
|
// Search for a health issue related to this selection and create one if it doesn{{{SINGLE-QUOTE}}}t exist
|
|
|
|
if Selection_Name = "Pregnant" then
|
|
(PregnantHI) := read
|
|
{ "select distinct hi.shortname "
|
|
|| "from cv3healthissuedeclaration hi with (nolock) "
|
|
|| "join CV3CodedHealthIssue chi with (nolock) on chi.GUID = hi.CodedHealthIssueGUID "
|
|
|| "where hi.clientvisitguid = " || Active_ClientVisitGUID || " "
|
|
|| "and hi.active = 1 and hi.status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} And hi.ICD10Code is not null " //Added By Shivprasad for CSR 23359-ICD9-10 On 16 Sept 2015
|
|
|| "and hi.typecode = {{{SINGLE-QUOTE}}}problem-visit{{{SINGLE-QUOTE}}} and hi.shortname = {{{SINGLE-QUOTE}}}Pregnancy{{{SINGLE-QUOTE}}}"};
|
|
|
|
If not exists PregnantHI then
|
|
hitype := "Problem-Visit";
|
|
hiname := "Pregnancy";
|
|
hinumber:= "Z33.1"; //"V22.2"; //CSR#23359-ICD9-ICD10 HI Change for Code Scheme ICD10- Added By shivprasad
|
|
hischeme:= "ICD10"; //"ICD9"; //CSR#23359-ICD9-ICD10 HI Change for Code Scheme ICD10- Added By shivprasad
|
|
hitext := "Created from Patient Profile information. " ;
|
|
|
|
Func_Create_HI_MLM := mlm {{{SINGLE-QUOTE}}}SCH_Func_Create_Health_Issue{{{SINGLE-QUOTE}}};
|
|
void := call Func_Create_HI_MLM with (Active_ClientVisitGUID,hiname,hinumber,hitext,hitype,hischeme);
|
|
endif;
|
|
endif;
|
|
|
|
if Selection_Name = "Lactating" then
|
|
(LactatingHI) := read
|
|
{ "select distinct hi.shortname "
|
|
|| "from cv3healthissuedeclaration hi with (nolock) "
|
|
|| "join CV3CodedHealthIssue chi with (nolock) on chi.GUID = hi.CodedHealthIssueGUID "
|
|
|| "where hi.clientvisitguid = " || Active_ClientVisitGUID || " "
|
|
|| "and hi.active = 1 and hi.status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} And hi.ICD10Code is not null " //Added By Shivprasad for CSR 23359-ICD9-10 On 16 Sept 2015
|
|
|| "and hi.typecode = {{{SINGLE-QUOTE}}}problem-visit{{{SINGLE-QUOTE}}} and hi.shortname = {{{SINGLE-QUOTE}}}Lactating Mother{{{SINGLE-QUOTE}}}"};
|
|
|
|
if not exists LactatingHI then
|
|
hitype := "Problem-Visit";
|
|
hiname := "Lactating Mother";
|
|
hinumber:= "Z39.1"; //"V24.1";//CSR#23359-ICD9-ICD10 HI Change for Code Scheme ICD10- Added By shivprasad
|
|
hischeme:= "ICD10"; //"ICD9"; //CSR#23359-ICD9-ICD10 HI Change for Code Scheme ICD10- Added By shivprasad
|
|
hitext := "Created from Patient Profile information. " ;
|
|
|
|
Func_Create_HI_MLM := mlm {{{SINGLE-QUOTE}}}SCH_Func_Create_Health_Issue{{{SINGLE-QUOTE}}};
|
|
void := call Func_Create_HI_MLM with (Active_ClientVisitGUID,hiname,hinumber,hitext,hitype,hischeme);
|
|
endif;
|
|
endif;
|
|
|
|
if Selection_Name = "On Dialysis" then
|
|
(DialysisHI) := read
|
|
{ "select distinct hi.shortname "
|
|
|| "from cv3healthissuedeclaration hi with (nolock) "
|
|
|| "join CV3CodedHealthIssue chi with (nolock) on chi.GUID = hi.CodedHealthIssueGUID "
|
|
|| "where hi.clientguid = " || client_guid || " "
|
|
|| "and hi.active = 1 and hi.status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} And hi.ICD10Code is not null " //Added By Shivprasad for CSR 23359-ICD9-10 On 16 Sept 2015
|
|
|| "and hi.typecode = {{{SINGLE-QUOTE}}}problem-chronic{{{SINGLE-QUOTE}}} and hi.shortname = {{{SINGLE-QUOTE}}}Dialysis Patient{{{SINGLE-QUOTE}}}"};
|
|
|
|
// 11/21/2018 HD# 2388518 replaced this line with one that joins on client guid || "where hi.clientvisitguid = " || Active_ClientVisitGUID || " "
|
|
|
|
// ClientVisitGUID, client_guid, chartguid
|
|
|
|
if not exists DialysisHI then
|
|
hitype := "Problem-Chronic";
|
|
hiname := "Dialysis Patient";
|
|
hinumber:= "Z99.2" ;//"V45.11"; //CSR#23359-ICD9-ICD10 HI Change for Code Scheme ICD10- Added By shivprasad
|
|
hischeme:= "ICD10"; //"ICD9"; //CSR#23359-ICD9-ICD10 HI Change for Code Scheme ICD10- Added By shivprasad
|
|
hitext := "Created from Patient Profile information. " ;
|
|
|
|
Func_Create_HI_MLM := mlm {{{SINGLE-QUOTE}}}SCH_Func_Create_Health_Issue{{{SINGLE-QUOTE}}};
|
|
void := call Func_Create_HI_MLM with (Active_ClientVisitGUID,hiname,hinumber,hitext,hitype,hischeme);
|
|
endif;
|
|
endif;
|
|
|
|
|
|
// Search for an order related to this selection and create one if it doesn{{{SINGLE-QUOTE}}}t exist
|
|
|
|
|
|
(dup_order_list) := read last
|
|
{ " select name "
|
|
||" from cv3order "
|
|
||" where ClientGUID = " || sql(client_guid)
|
|
||" and ClientVisitGUID = " || sql(Active_ClientVisitGUID)
|
|
||" and name = {{{SINGLE-QUOTE}}}" || Selection_Name || "{{{SINGLE-QUOTE}}}"
|
|
||" and orderstatuslevelnum < 55 "
|
|
||" and OrderStatusCode = {{{SINGLE-QUOTE}}}AUA1{{{SINGLE-QUOTE}}} "
|
|
||" and active = 1 " };
|
|
|
|
if not exists dup_order_list
|
|
|
|
then
|
|
|
|
try
|
|
|
|
Catalog_Item_Name := val1[i] ;
|
|
order_type := "other";
|
|
|
|
order_catalog_item := call {{{SINGLE-QUOTE}}}OrderCatalogMasterItem{{{SINGLE-QUOTE}}}.FindByName with Catalog_Item_Name;
|
|
|
|
Obj_Error_occurred, Obj_error_message := call HI_mod_mlm with
|
|
|
|
order_type,
|
|
client_visit_obj, // ClientVisit ObjectsPlus object
|
|
Order_catalog_item, // CatalogMasterItem ObjectsPlus object
|
|
order_Creation_Reason, // string CreateReason
|
|
WSRequestedBy_obj, // RequestingProvider ObjectsPlus object
|
|
WSRequestedBySource, // string requestingSource(must be in dict)
|
|
WSSessionType, // string SessionType
|
|
WSSessionReason, // string SessionReason
|
|
WSLocation_obj;
|
|
|
|
endtry;
|
|
catch Exception ex
|
|
error_occurred := true;
|
|
error_message := "{{+R}}New General order:{{-R}}\n" ||
|
|
ex.Message || "\n\n";
|
|
endcatch;
|
|
|
|
if ( Order_catalog_item is NOT NULL )
|
|
then void:= call Order_catalog_item.Dispose;
|
|
Order_catalog_item:= null;
|
|
endif;
|
|
|
|
endif; // Does current order exist?
|
|
|
|
|
|
endif; // Is the order name <> ""?
|
|
|
|
enddo;
|
|
|
|
;;
|
|
priority: 50
|
|
;;
|
|
evoke: Document_Enter;
|
|
Document_Modify;
|
|
;;
|
|
logic:
|
|
|
|
if EvokingObject is null
|
|
then
|
|
conclude false;
|
|
endif;
|
|
|
|
conclude true;
|
|
|
|
;;
|
|
action:
|
|
;;
|
|
Urgency: 50;;
|
|
end:
|