Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ORY405

ORY405.m

Go to the documentation of this file.
  1. ORY405 ;SLC/JLC - ENVIRONMENTAL CHECK ROUTINE ;May 5, 2022@16:30:00
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**405**;Dec 17, 1997;Build 211
  1. ;
  1. PRE ;Preinstall routine for V32
  1. D INDPR^ORY405NV ;IND
  1. D REMOPT
  1. Q
  1. ;
  1. POST ;Post install routine for V32
  1. D RPSO,QQOPU
  1. D ORDRSN,OVRDRSN
  1. D MES^XPDUTL("")
  1. D EN^ORY405NV
  1. D INDPT^ORY405NV ;IND
  1. D CLINMED^ORY405NV ; Remove the Route and Days supply prompts from PSJ OR CLINIC OE
  1. D ADDMENU
  1. D PARS
  1. D RI10097
  1. Q
  1. ;
  1. QQOPU ;
  1. N ZTDESC,ZTDTH,ZTRTN,ZTSAVE,ZTIO,TEXT,ZTSK
  1. S ZTDESC="Update to Outpatient Meds Quick Orders"
  1. S TEXT=ZTDESC_" has been queued, task number "
  1. S ZTRTN="QOPICKUP^ORY405"
  1. S ZTIO=""
  1. S ZTDTH=$$NOW^XLFDT
  1. D ^%ZTLOAD
  1. I $D(ZTSK) S TEXT=TEXT_ZTSK D MES^XPDUTL(.TEXT)
  1. Q
  1. ;
  1. QOPICKUP ;Clean up any PICKUP entries in Quick Orders that are set to "C" for Clinic Pickup
  1. N ARRAY,DIALOG,INPUT,PROMPT,SUB
  1. K ^XTMP("OR PU QO LIST")
  1. S ^XTMP("OR PU QO LIST",0)=$$FMADD^XLFDT($$NOW^XLFDT,30)_U_$$NOW^XLFDT
  1. S PROMPT=$O(^ORD(101.41,"B","OR GTX ROUTING",""))
  1. S SUB="OR PU QO"
  1. K ^TMP($J,SUB)
  1. S INPUT("PSO OERR")=""
  1. D FINDQO^ORQOUTL(.ARRAY,.INPUT,SUB,0,1,0,0)
  1. S DIALOG="" F S DIALOG=$O(^TMP($J,SUB,DIALOG)) Q:'DIALOG D
  1. .I $D(^TMP($J,SUB,DIALOG,"ORDIALOG",PROMPT)) D
  1. ..I $G(^TMP($J,SUB,DIALOG,"ORDIALOG",PROMPT,1))'="C" Q
  1. ..D QOEMPTY(DIALOG,PROMPT)
  1. ..S ^XTMP("OR PU QO LIST","LIST",DIALOG)=""
  1. D QOREPORT
  1. Q
  1. ;
  1. QOEMPTY(ORQO,ORPROMPT) ;Empty the prompt for this qo
  1. N ORSUB S ORSUB=$O(^ORD(101.41,ORQO,6,"D",ORPROMPT,""))
  1. S ^ORD(101.41,ORQO,6,ORSUB,1)=""
  1. Q
  1. ;
  1. QOREPORT ;Send a mailman message of updated QOs
  1. K ^TMP("OR MSG",$J),XMY
  1. N CNT,XMDUZ,XMSUB,XMTEXT,XMY,XMMG
  1. S CNT=0,XMDUZ="CPRS, SEARCH",XMSUB="CLINIC PICKUP QUICK ORDER CONVERSION",XMTEXT="^TMP(""OR MSG"",$J,",XMY(DUZ)="",XMY("G.OR CACS")=""
  1. S CNT=CNT+1,^TMP("OR MSG",$J,CNT,0)="The following report lists Outpatient Medication Quick Orders where the "
  1. S CNT=CNT+1,^TMP("OR MSG",$J,CNT,0)="pickup was set to CLINIC. These Quick Orders have had the pickup prompt "
  1. S CNT=CNT+1,^TMP("OR MSG",$J,CNT,0)="cleared of this value."
  1. S CNT=CNT+1,^TMP("OR MSG",$J,CNT,0)=""
  1. I $D(^XTMP("OR PU QO LIST")) D
  1. .N ORFLAG S ORFLAG=0
  1. .N ORI S ORI=0 F S ORI=$O(^XTMP("OR PU QO LIST","LIST",ORI)) Q:'ORI D
  1. ..I ORFLAG=0 D
  1. ...S ORFLAG=1
  1. ...S CNT=CNT+1,^TMP("OR MSG",$J,CNT,0)="QO NAME QO DISPLAY TEXT"
  1. ...S CNT=CNT+1,^TMP("OR MSG",$J,CNT,0)="==============================================================================="
  1. ..S CNT=CNT+1,^TMP("OR MSG",$J,CNT,0)=$$PAD^ORCHTAB($P(^ORD(101.41,ORI,0),U,1),30)_$P(^ORD(101.41,ORI,0),U,2)
  1. I CNT=4 S CNT=CNT+1,^TMP("OR MSG",$J,CNT,0)="None Found"
  1. D ^XMD
  1. Q
  1. ;
  1. REMOPT ;
  1. D BMES^XPDUTL("Removing the following options from menu ORCM MGMT")
  1. I $$DELETE^XPDMENU("ORCM MGMT","OR SUPPLY UTIL MENU") D BMES^XPDUTL(" OR SUPPLY UTIL MENU")
  1. I $$DELETE^XPDMENU("ORCM MGMT","OR IV ADD FREQ UTILITY") D BMES^XPDUTL(" OR IV ADD FREQ UTILITY")
  1. I $$DELETE^XPDMENU("ORCM MGMT","OR QO FREETEXT REPORT") D BMES^XPDUTL(" OR QO FREETEXT REPORT")
  1. I $$DELETE^XPDMENU("ORCM MGMT","OR CONVERT INP TO IV") D BMES^XPDUTL(" OR CONVERT INP TO IV")
  1. I $$DELETE^XPDMENU("ORCM MGMT","OR CONV INPT QO TO CLIN ORD QO") D BMES^XPDUTL(" OR CONV INPT QO TO CLIN ORD QO")
  1. I $$DELETE^XPDMENU("ORCM MGMT","OR QO CASE REPORT") D BMES^XPDUTL(" OR QO CASE REPORT")
  1. I $$DELETE^XPDMENU("ORCM MGMT","OR MEDICATION QO CHECKER") D BMES^XPDUTL(" OR MEDICATION QO CHECKER")
  1. I $$DELETE^XPDMENU("ORCM MGMT","ORCM GMRC CSV CHECK") D BMES^XPDUTL(" ORCM GMRC CSV CHECK")
  1. I $$DELETE^XPDMENU("ORCM MGMT","ORCM UPD INDICATION QO") D BMES^XPDUTL(" ORCM UPD INDICATION QO")
  1. I $$DELETE^XPDMENU("ORCM MGMT","ORCM UPDATE TITRATION QO") D BMES^XPDUTL(" ORCM UPDATE TITRATION QO")
  1. Q
  1. ;
  1. SENDDLG(ANAME) ; Return true if the current order dialog should be sent
  1. I ANAME="PSH OERR" Q 1
  1. I ANAME="PSO OERR" Q 1
  1. I ANAME="OR GTX ROUTING" Q 1
  1. I ANAME="OR GTX TITRATION" Q 1
  1. Q 0
  1. ;
  1. ORDRSN ;Add a new Order Reason of Allergy/Adverse Drug Reaction
  1. N DA,FDAMSG,FILE,ORERR,ORDRSN,ORFDA,ORSYN,ORACT,ORERR,ORPKG,ORNAT,ORIEN
  1. S ORIEN=""
  1. S FDAMSG=""
  1. S ORDRSN="Allergy/Adverse Drug Reaction"
  1. S ORSYN="ADR"
  1. S ORACT="ACTIVE"
  1. S ORPKG="ORDER ENTRY/RESULTS REPORTING"
  1. S ORNAT="REJECTED"
  1. S FILE=100.03
  1. D BMES^XPDUTL("Adding "_ORDRSN_" to ORDER REASON (#100.03) file.")
  1. S DA=$$FIND1^DIC(FILE,"","X",ORDRSN)
  1. I DA>0 D ;Update existing entry
  1. . S ORFDA(100.03,DA_",",.01)=ORDRSN
  1. . S ORFDA(100.03,DA_",",.03)=ORSYN
  1. . S ORFDA(100.03,DA_",",.04)=ORACT
  1. . S ORFDA(100.03,DA_",",.05)=ORPKG
  1. . S ORFDA(100.03,DA_",",.07)=ORNAT
  1. . L +^ORD(100.03,DA):$S($G(DILOCKTM)>0:DILOCKTM,1:5)
  1. . D FILE^DIE("E","ORFDA","FDAMSG")
  1. . L -^ORD(100.03,DA)
  1. . I $D(FDAMSG("DIERR")) D Q
  1. .. N ERR,TEXT,SWTCH
  1. .. D BMES^XPDUTL("Failed to update entry "_ORDRSN_" (#"_DA_")!!")
  1. .. D MES^XPDUTL(" Please contact support!")
  1. .. S (ERR,SWTCH)=0 F S ERR=$O(FDAMSG("DIERR",ERR)) Q:+ERR=0 D
  1. ... S TEXT=$G(FDAMSG("DIERR",ERR,"TEXT",1))
  1. ... I TEXT'="" D
  1. .... I SWTCH=0 S SWTCH=1 D MES^XPDUTL("Following error(s) were received:")
  1. .... D MES^XPDUTL(" "_TEXT)
  1. . D BMES^XPDUTL("Successfully updated "_ORDRSN_" (#"_DA_")!")
  1. . K FDAMSG
  1. I DA=0 D ;Add new entry
  1. . N ERR,SWTCH
  1. . K FDAMSG
  1. . S FDAMSG=""
  1. . S ORFDA(100.03,"+1,",.01)=ORDRSN
  1. . S ORFDA(100.03,"+1,",.03)=ORSYN
  1. . S ORFDA(100.03,"+1,",.04)=ORACT
  1. . S ORFDA(100.03,"+1,",.05)=ORPKG
  1. . S ORFDA(100.03,"+1,",.07)=ORNAT
  1. . D UPDATE^DIE("E","ORFDA","ORIEN","FDAMSG")
  1. . I +ORIEN(1)>0 D
  1. .. D BMES^XPDUTL(ORDRSN_" has been successfully added to the")
  1. .. D MES^XPDUTL(" ORDER REASON (#100.03) file!")
  1. .. I $D(FDAMSG("DIERR")) D
  1. ... S (ERR,SWTCH)=0 F S ERR=$O(FDAMSG("DIERR",ERR)) Q:+ERR=0 D
  1. .... S TEXT=$G(FDAMSG("DIERR",ERR,"TEXT",1))
  1. .... I TEXT'="" D
  1. ..... I SWTCH=0 S SWTCH=1 D MES^XPDUTL(" The Following error(s) were recorded, please contact support:")
  1. ..... D MES^XPDUTL(" "_TEXT)
  1. . I +ORIEN(1)<1 D
  1. .. D BMES^XPDUTL("Failed to add "_ORDRSN_"!!")
  1. .. D MES^XPDUTL(" Please contact support!")
  1. .. S (ERR,SWTCH)=0 F S ERR=$O(FDAMSG("DIERR",ERR)) Q:+ERR=0 D
  1. ... S TEXT=$G(FDAMSG("DIERR",ERR,"TEXT",1))
  1. ... I TEXT'="" D
  1. .... I SWTCH=0 S SWTCH=1 D MES^XPDUTL("Following error(s) were received:")
  1. .... D MES^XPDUTL(" "_TEXT)
  1. . K FDAMSG
  1. I DA="" D ;Failure
  1. . D BMES^XPDUTL("Failed to add "_ORDRSN_"!!")
  1. . D MES^XPDUTL(" Please contact support!")
  1. D BMES^XPDUTL("")
  1. Q
  1. ;
  1. OVRDRSN ;Add the Order Check Override Reasons (#100.04) file entries
  1. N ACTIVE,DA,FAILURE,FDA,FDAIEN,FDAMSG,FILE,LINE,MSG,NAME,ORERR,SUCCESS
  1. N SYNONYM,TEXT,TYPE
  1. S FAILURE=" Failed to add the following entry, please contact support:"
  1. S SUCCESS=" SUCCESSFULLY ADDED: "
  1. D BMES^XPDUTL("Starting add/update of the ORDER CHECK OVERRIDE REASON (#100.04) file.")
  1. D MES^XPDUTL("")
  1. S FILE=100.04
  1. F LINE=1:1 Q:$L($T(ORDRCHK+LINE))<3 D
  1. . K FDA,FDAIEN,FDAMSG,MSG,ORERR
  1. . S FDAIEN(1)=LINE
  1. . S FDAMSG=""
  1. . S TEXT=$P($T(ORDRCHK+LINE),";;",2)
  1. . S NAME=$P(TEXT,U,1)
  1. . S SYNONYM=$P(TEXT,U,2)
  1. . S TYPE=$P(TEXT,U,3)
  1. . S ACTIVE=$P(TEXT,U,4)
  1. . S DA=$$FIND1^DIC(FILE,,"X",NAME)
  1. . S MSG(2)=" "_$S($L(NAME," ")>8:$P(NAME," ",1,8),1:NAME)
  1. . I $L(NAME," ")>8 S MSG(3)=" "_$P(NAME," ",9,9999)
  1. . I DA>0 D Q ;Update existing entry
  1. .. S FDA(100.04,DA_",",.01)=NAME
  1. .. S FDA(100.04,DA_",",.02)=SYNONYM
  1. .. S FDA(100.04,DA_",",.03)=TYPE
  1. .. S FDA(100.04,DA_",",.04)=ACTIVE
  1. .. L +^ORD(100.04,DA):$S($G(DILOCKTM)>0:DILOCKTM,1:5)
  1. .. D FILE^DIE("E","FDA","FDAMSG")
  1. .. L -^ORD(100.04,DA)
  1. .. I $D(FDAMSG("DIERR")) D Q
  1. ... N ERR,MSGCNT,SWTCH
  1. ... S MSG(1)=" Failed to update entry #"_DA_":"
  1. ... S (ERR,SWTCH)=0 F S ERR=$O(FDAMSG("DIERR",ERR)) Q:+ERR=0 D
  1. .... S TEXT=$G(FDAMSG("DIERR",ERR,"TEXT",1))
  1. .... I TEXT'="" D
  1. ..... I SWTCH=0 D
  1. ...... S SWTCH=1,MSGCNT=3
  1. ...... I $D(MSG(3)) S MSGCNT=4
  1. ...... S MSG(MSGCNT)=" Following errors were received:"
  1. ...... S MSGCNT=MSGCNT+1
  1. ..... S MSG(MSGCNT)=" "_TEXT
  1. ... D BMES^XPDUTL(.MSG)
  1. .. S MSG(1)=" Successfully updated entry #"_DA_":"
  1. .. D BMES^XPDUTL(.MSG)
  1. . I DA=0 D Q ;Add new entry
  1. .. S FDA(100.04,"+1,",.01)=NAME
  1. .. S FDA(100.04,"+1,",.02)=SYNONYM
  1. .. S FDA(100.04,"+1,",.03)=TYPE
  1. .. S FDA(100.04,"+1,",.04)=ACTIVE
  1. .. D UPDATE^DIE("","FDA","FDAIEN","FDAMSG")
  1. .. I +FDAIEN(1)>0 D
  1. ... S MSG(1)=SUCCESS
  1. .. I +FDAIEN(1)<1 D
  1. ... N ERR,MSGCNT,SWTCH
  1. ... S MSG(1)=FAILURE
  1. ... S (ERR,SWTCH)=0 F S ERR=$O(FDAMSG("DIERR",ERR)) Q:+ERR=0 D
  1. .... S TEXT=$G(FDAMSG("DIERR",ERR,"TEXT",1))
  1. .... I TEXT'="" D
  1. ..... I SWTCH=0 D
  1. ...... S SWTCH=1,MSGCNT=3
  1. ...... I $D(MSG(3)) S MSGCNT=4
  1. ...... S MSG(MSGCNT)=" Following errors were received:"
  1. ...... S MSGCNT=MSGCNT+1
  1. ..... S MSG(MSGCNT)=" "_TEXT
  1. .. D BMES^XPDUTL(.MSG)
  1. . I DA="" D ;Failure
  1. .. S MSG(1)=FAILURE
  1. .. D BMES^XPDUTL(.MSG)
  1. D BMES^XPDUTL("COMPLETED add/update of the ORDER CHECK OVERRIDE REASON (#100.04) file.")
  1. Q
  1. ;
  1. ORDRCHK ;Order Check Override Reasons
  1. ;;Benefit of Therapy Outweighs Risk^BEN^B^1
  1. ;;Patient tolerating current therapy with this medication^PAT^B^1
  1. ;;Previous Adverse Reaction signs/symptoms managed by patient^PRE^B^1
  1. ;;Renewal of Current Therapy^REN^B^1
  1. ;;Will Monitor Closely for Adverse Effects^WILL^B^1
  1. ;;Documentation of Allergy/Adverse Reaction is in Error^DOCAA^B^1
  1. ;;Documentation of Allergy/Adverse Reaction is to different agent in same drug class^DOAD^B^1
  1. ;;Patient report per interview is inconsistent with remote allergy data.^REM^B^1
  1. Q
  1. ;
  1. RPSO ;remove package PSO from the DONE entry in file #101.42
  1. D BMES^XPDUTL("Removing PSO from the entry DONE of the ORDER URGENCY (#101.42) file.")
  1. N IEN,DA,DIK
  1. S IEN=$O(^ORD(101.42,"S.PSO","DONE",""))
  1. Q:'IEN
  1. S DA=0 F S DA=$O(^ORD(101.42,IEN,1,DA)) Q:'DA I ^(DA,0)="PSO" D Q
  1. .S DA(1)=IEN,DIK="^ORD(101.42,"_DA(1)_",1," D ^DIK Q
  1. Q
  1. ;
  1. ADDMENU ;
  1. N ORSUCC,OROPT
  1. ;
  1. D BMES^XPDUTL("Adding the following options to menu OR VIMM MENU")
  1. F OROPT="PXV EDIT SEQUENCE^SEQ^20","PXV EDIT DEFAULT RESPONSES^DEF^22","PXV SKIN TEST READING CPT^SKC^40" D
  1. . S ORSUCC=$$ADD^XPDMENU("OR VIMM MENU",$P(OROPT,U,1),$P(OROPT,U,2),$P(OROPT,U,3))
  1. . I ORSUCC D BMES^XPDUTL(" "_$P(OROPT,U,1))
  1. . I 'ORSUCC D BMES^XPDUTL(" Error adding "_$P(OROPT,U,1)_" to OR VIMM MENU.")
  1. ;
  1. D BMES^XPDUTL("Adding the following options to menu ORCM REPORT/CONV UTILITIES")
  1. I $$ADD^XPDMENU("ORCM REPORT/CONV UTILITIES","ORCM GMRC CSV CHECK","CS",5) D BMES^XPDUTL(" ORCM GMRC CSV CHECK")
  1. I $$ADD^XPDMENU("ORCM REPORT/CONV UTILITIES","OR MEDICATION QO CHECKER","MR",10) D BMES^XPDUTL(" OR MEDICATION QO CHECKER")
  1. I $$ADD^XPDMENU("ORCM REPORT/CONV UTILITIES","OR QO CASE REPORT","CA",25) D BMES^XPDUTL(" OR QO CASE REPORT")
  1. I $$ADD^XPDMENU("ORCM REPORT/CONV UTILITIES","OR CONV INPT QO TO CLIN ORD QO","CO",30) D BMES^XPDUTL(" OR CONV INPT QO TO CLIN ORD QO")
  1. I $$ADD^XPDMENU("ORCM REPORT/CONV UTILITIES","OR CONVERT INP TO IV","CV",35) D BMES^XPDUTL(" OR CONVERT INP TO IV")
  1. I $$ADD^XPDMENU("ORCM REPORT/CONV UTILITIES","OR QO FREETEXT REPORT","DF",40) D BMES^XPDUTL(" OR QO FREETEXT REPORT")
  1. I $$ADD^XPDMENU("ORCM REPORT/CONV UTILITIES","OR IV ADD FREQ UTILITY","FR",45) D BMES^XPDUTL(" OR IV ADD FREQ UTILITY")
  1. I $$ADD^XPDMENU("ORCM REPORT/CONV UTILITIES","OR SUPPLY UTIL MENU","SP",50) D BMES^XPDUTL(" OR SUPPLY UTIL MENU")
  1. Q
  1. ;
  1. PARS ; set Parameter values
  1. ;
  1. N ORINST,ORLIST,ORI,ORX,ORIMM,ORIMMS,ORERR
  1. ;
  1. D BMES^XPDUTL("Setting OR IMM REMINDER DIALOG values.")
  1. S ORINST=0 ;largest instance
  1. D GETLST^XPAR(.ORLIST,"SYS","OR IMM REMINDER DIALOG")
  1. S ORI=0
  1. F S ORI=$O(ORLIST(ORI)) Q:'ORI D
  1. . S ORX=$G(ORLIST(ORI))
  1. . I $P(ORX,U,2)="" Q
  1. . S ORIMMS($P(ORX,U,2))="" ; list of immunizations already defined
  1. . I $P(ORX,U,1)>ORINST S ORINST=$P(ORX,U,1)
  1. ;
  1. ; See if other COVID-19 Imms need to be added
  1. S ORIMM=0
  1. F S ORIMM=$O(^AUTTIMM(ORIMM)) Q:'ORIMM D ;ICR 1990
  1. . S ORX=$G(^AUTTIMM(ORIMM,0))
  1. . I $P(ORX,U,1)'["COVID-19" Q
  1. . I $P(ORX,U,3)'=211,$P(ORX,U,7) Q ;exclude inactive (except Novavax)
  1. . I $D(ORIMMS(ORIMM)) Q ;already defined
  1. . S ORINST=ORINST+1
  1. . K ORERR
  1. . D EN^XPAR("SYS","OR IMM REMINDER DIALOG",ORINST,"`"_ORIMM,.ORERR)
  1. . I +$G(ORERR)>0 D MES^XPDUTL(" ERROR #"_$P(ORERR,U)_": "_$P(ORERR,U,2))
  1. D MES^XPDUTL(" DONE")
  1. D BMES^XPDUTL("Setting OR RTN PROCESSED ALERTS value.")
  1. I $$GET^XPAR("SYS","OR RTN PROCESSED ALERTS")]"" D BMES^XPDUTL("OR RTN PROCESSED ALERTS value is already set") Q
  1. K ORERR
  1. D EN^XPAR("SYS","OR RTN PROCESSED ALERTS",1,"YES",.ORERR)
  1. I +$G(ORERR)>0 D MES^XPDUTL(" ERROR #"_$P(ORERR,U)_": "_$P(ORERR,U,2))
  1. D MES^XPDUTL(" DONE")
  1. ;
  1. Q
  1. RI10097 ;;re-index 100.97
  1. N DIK
  1. D BMES^XPDUTL("Re-indexing 100.97, 'E' cross-reference...")
  1. K ^OR(100.97,"E")
  1. S DIK="^OR(100.97,",DIK(1)="8^E" D ENALL^DIK
  1. D BMES^XPDUTL("Completed re-indexing of 100.97")
  1. Q