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

PSJLIACT.m

Go to the documentation of this file.
  1. PSJLIACT ;BIR/MV-IV ACTION ;29-May-2012 14:38;PLS
  1. ;;5.0; INPATIENT MEDICATIONS ;**15,47,62,58,82,97,80,1013,110,111,134,1015**;16 DEC 97;Build 62
  1. ;
  1. ; Reference to ^PS(55 is supported by DBIA 2191.
  1. ; Reference to MAIN^TIUEDIT is supported by DBIA 2410.
  1. ;
  1. ; Modified - IHS/MSC/PLS - 10/17/2011 - Line DC+1
  1. DC ; Discontinue order
  1. N INCOM
  1. D HOLDHDR^PSJOE
  1. S PSJCOM=+$S(PSJORD["V":$P($G(^PS(55,DFN,"IV",+PSJORD,.2)),"^",8),1:$P($G(^PS(53.1,+PSJORD,.2)),"^",8))
  1. I PSJCOM W !!,"This order is part of a complex order. If you discontinue this order the",!,"following orders will be discontinued too (unless the stop date has already",!,"been reached)." D CMPLX^PSJCOM1(PSGP,PSJCOM,PSJORD)
  1. I PSJCOM F W !!,"Do you want to discontinue this order" S %=1 D YN^DICN Q:% D ENCOM^PSGOEM
  1. I PSJCOM,%'=1 S VALMBK="" Q
  1. I PSJORD["V" D DC^PSIVORA,EN^PSJLIORD(DFN,ON) Q
  1. D:PSJORD["P" DISCONT^PSIVORC
  1. S VALMBCK="Q"
  1. Q
  1. ACEDIT ; Display LM screen and AC and EDit actions
  1. D EN^PSJLIVMD
  1. S VALMBCK=$S($G(PSIVACEP):"Q",1:"R")
  1. Q
  1. AEEXIT ; Call for EXIT CODE in PSJ LM IV AC/EDIT
  1. D:ON["V" GT55^PSIVORFB
  1. I ON["P" D GT531^PSIVORFA(DFN,ON) D:P("OT")'="I" GTDATA^PSJLIFN
  1. D EN^PSJLIVMD
  1. K PSIVENO
  1. Q
  1. EDIT ; Edit order
  1. K PSIVFN1 NEW PSIVNBD
  1. I $D(PSGACT),PSGACT'["E" W !,"This order may not be edited." D PAUSE^VALM1 Q
  1. D EDIT1
  1. Q:$D(PSIVNBD)!($G(PSIVCOPY)&'$G(PSIVENO))
  1. D EN^PSJLIVMD
  1. S VALMBCK=$S($G(PSIVFN1):"Q",1:"R")
  1. Q
  1. EDIT1 ;
  1. ;Ensure P() is defined
  1. I $D(P)<10 S XQORQUIT=1,P("PON")="",PSIVNBD=1 D Q
  1. .W !,"WARNING: An error has occurred. Changes will not be saved"
  1. .D PAUSE^VALM1
  1. .S VALMBCK="Q"
  1. I "ANP"'[P(17) W !,"You cannot edit an inactive order" D PAUSE^VALM1 Q
  1. S:$G(ON55)="" ON55=$G(PSJORD)
  1. D HOLDHDR^PSJOE
  1. ;* Edit a new back door order
  1. I ($G(ON55)["V"&($G(P("21FLG"))="")) D Q
  1. . D GSTRING^PSIVORE1,GTFLDS^PSIVORFE
  1. . I $G(ON55)["V",'$G(DONE) D OK^PSIVORE
  1. . S VALMBCK="Q",PSIVNBD=1
  1. ;* Edit an active order
  1. I $G(ON55)["V" NEW PSJEDIT1 D E^PSIVOPT1 D Q
  1. . I $G(PSJIVBD) K PSJIVBD D EN^PSJLIORD(DFN,ON)
  1. I $G(ON55)["P" D EDIT^PSIVORC ;Edit incomplete order.
  1. K P("OVRIDE")
  1. Q
  1. ACCEPT ; Accept order
  1. D HOLDHDR^PSJOE
  1. ;Accept IV from back door.
  1. I $G(PSJIVBD) K PSJIVBD D OK^PSIVORE S VALMBCK="Q" Q
  1. I ON["V" D ACCEPT^PSIVOPT1 Q
  1. S PSIVFN1=1
  1. D COMPLTE^PSIVORC1
  1. S VALMBCK="Q"
  1. Q
  1. R ; Renewal
  1. S PSJREN=1
  1. D HOLDHDR^PSJOE
  1. NEW PSIVAC S PSIVAC="PR" K PSGFDX
  1. D R^PSIVOPT
  1. D EN^PSJLIORD(DFN,ON)
  1. K PSJREN
  1. Q
  1. H ; Hold
  1. NEW TEX S TEX="Active order ***"
  1. D HOLDHDR^PSJOE
  1. D H^PSIVOPT(DFN,ON,P(17),P(3))
  1. D:P(17)="A" PAUSE^VALM1
  1. D EN^PSJLIORD(DFN,ON)
  1. Q
  1. L ; Activity Log
  1. NEW PSIVLAB,PSIVLOG,PSJHIS S (PSIVLAB,PSIVLOG)=1
  1. D EN^PSIVVW1
  1. D EN^PSJLIVMD
  1. S VALMBCK="R"
  1. Q
  1. O ; On Call
  1. NEW TEX S TEX="Active order ***"
  1. D HOLDHDR^PSJOE
  1. D O^PSIVOPT(DFN,ON,P(17),P(3))
  1. D:P(17)="A" PAUSE^VALM1
  1. D EN^PSJLIORD(DFN,ON)
  1. Q
  1. VF ; Make the order active
  1. NEW PSIVCHG S PSIVCHG=0
  1. I ON["V" S ON55=ON D VF1("V","ORDER VERIFIED BY ",1) Q
  1. D ACTIVE^PSIVORC2
  1. Q
  1. VF1(PSIVREA,PSIVAL,PSIVLOG) ;
  1. ;Update 4 node and set activity log.
  1. ;PSIVREA: the reason use by LOG^PSIVORAL
  1. ;PSIVAL : the description reason
  1. ;PSIVLOG: Log an activity if = 1
  1. I '+$G(OD)!($L($G(OD))>16) K OD
  1. D:+PSJSYSU=3 ^PSIVORE1
  1. NEW DIE,DA,DR,PSJX,XX,PSIVACT,PSJRQND
  1. S PSIVACT=1
  1. S PSJX=$G(^PS(55,DFN,"IV",+ON55,4)),XX=""
  1. I $P(PSJX,U)="" S XX=";143////0"
  1. I $P(PSJX,U,4)="" S XX=XX_U_";142////0"
  1. D NOW^%DTC
  1. S DIE="^PS(55,"_DFN_",""IV"",",DA=+ON55,DA(1)=DFN
  1. I +PSJSYSU=3 S DR="140////"_DUZ_";141////"_$E(%,1,12)_";142////1"_$P(XX,U)
  1. I +PSJSYSU=1 S DR="16////"_DUZ_";17////"_$E(%,1,12)_";143////1"_$P(XX,U,2)
  1. I $G(P("PRY"))="D" S DR=DR_";.22////"_+P("IVRM")
  1. D ^DIE
  1. ; If pending IV renew is edited during finish, go back and DE the original active order left in RENEWED status
  1. S PREREN=$S(ON55["V":$G(@(DIE_"+ON55,2)")),1:""),PREREN=$P(PREREN,"^",5) I PREREN D K PREREN
  1. . I PREREN["P" S PREREN=$G(@("^PS(53.1,+PREREN,0)")),PREREN=$P(PREREN,"^",25)
  1. . I PREREN["V" N PRERENOD S PRERENOD=$G(@("^PS(55,DFN,""IV"",+PREREN,0)")) I $P(PRERENOD,"^",17)="R",($G(P("RES"))="E") D
  1. .. S DIE="^PS(55,"_DFN_",""IV"",",DA=+PREREN,DA(1)=DFN
  1. .. S DR="100////D;.03////"_PSGDT S ORIGSTOP=$P($G(@("^PS(55,DFN,""IV"",+PREREN,2)")),"^",3) I ORIGSTOP S DR=DR_";116////"_ORIGSTOP
  1. .. D ^DIE D EN1^PSJHL2(DFN,"SC",PREREN)
  1. K DR,DIE,DA
  1. I (+PSJSYSU=3)&($G(P("PRY"))="D") D
  1. .N DIR W ! S DIR(0)="S^Y:Yes;N:No",DIR("A")="Do you want to enter a Progress Note",DIR("B")="No" D ^DIR
  1. .Q:Y="N"
  1. .D MAIN^TIUEDIT(3,.TIUDA,DFN,"","","","",1)
  1. Q:'$G(PSIVLOG)
  1. I $G(P("PACT"))]"",+$P(P("PACT"),U,2),+$P(P("PACT"),U,3) D
  1. . NEW DIC,DA,X,Y,XX,DO D NAME^PSJBCMA1($P(P("PACT"),U,2),.XX)
  1. . S DIC(0)="L",DA(1)=DFN,DA(2)=+ON55,X=1
  1. . S DIC="^PS(55,"_DA(1)_",""IV"","_DA(2)_",""A"","
  1. . S DIC("DR")=".02////F;.03////"_XX_";.04////"_$P($G(^PS(53.3,+$P(P("PACT"),U,3),0)),U)_";.05////"_$P(P("PACT"),U)_";.06////"_$P(P("PACT"),U,2)
  1. . D FILE^DICN
  1. NEW PSIVALCK
  1. S PSIVREA="V",PSIVALT=""
  1. S PSIVAL=PSIVAL_$S(+PSJSYSU=3:"PHARMACIST",1:"NURSE")
  1. D LOG^PSIVORAL K PSIVAL,PSIVREA,PSIVLN
  1. I $G(PSJORD)["P" S PSIVREA="V",PSIVALT="",PSGRDTX=$G(^PS(53.1,+PSJORD,2.5)) D
  1. . I $G(PSGRDTX) S PSIVAL="Requested Start Date: "_$$ENDTC^PSGMI($$DATE2^PSJUTL2($P(PSGRDTX,U))) D LOG^PSIVORAL
  1. . I $P(PSGRDTX,U,3) S PSIVREA="V",PSIVALT="" S PSIVAL="Requested Stop Date: "_$$ENDTC^PSGMI($$DATE2^PSJUTL2($P(PSGRDTX,U,3))) D LOG^PSIVORAL
  1. N DUR I $G(PSJORD) S DUR=$$GETDUR^PSJLIVMD(DFN,+PSJORD,$S(PSJORD["P":"P",1:"IV"),1) I DUR]"" D
  1. . K DR S DIE="^PS(55,"_DFN_",""IV"",",DA=+ON55,DA(1)=DFN
  1. . S DR=$S($G(IVLIMIT):"152////"_DUR,1:"151////"_DUR) K IVLIMIT
  1. . D ^DIE
  1. D EN1^PSJHL2(DFN,"SC",ON55)
  1. D:+PSJSYSU=1 EN1^PSJHL2(DFN,"ZV",ON55)
  1. D GT55^PSIVORFB S OLDON=$P($G(^PS(55,DFN,"IV",+ON55,2)),"^",5),P("OLDON")=OLDON
  1. N PSJPRIO,PSJSCH,NODE0,NODEP2 S NODE0=$G(^PS(55,DFN,"IV",+ON55,0)),NODEP2=$G(^PS(55,DFN,"IV",+ON55,.2))
  1. S PSJPRIO=$P(NODEP2,"^",4),PSJSCH=$P(NODE0,"^",9)
  1. I (",S,A,")[(","_$G(PSJPRIO)_",")!($G(PSJSCH)="NOW")!($G(PSJSCH)["STAT") D NOTIFY^PSJHL4(ON55,DFN,$G(PSJPRIO),$G(PSJSCH))
  1. Q