- PSJCOM1 ;BIR/CML3-DISPLAY COMPLEX ORDERS FOR DISCONTINUE ;02 Feb 2001 12:20 PM
- ;;5.0; INPATIENT MEDICATIONS ;**110,127**;16 DEC 97
- ;
- ; Reference to ^VALM1 is supported by DBIA 10116.
- ; Reference to ^PS(55 is supported by DBIA 2191.
- ; Reference to ^%DTC is supported by DBIA 10000.
- ; Reference to ^PS(51.2 is supported by DBIA 2178.
- ; Reference to ^DIE is supported by DBIA 10018.
- ; Reference to ^DIR is supported by DBIA 10026.
- ;
- CMPLX(PSGP,ON,PSGORD) ;
- D PAUSE K PSJCM
- N PSJLINE,PSX,PSCM
- S PSJLINE=1
- I PSGORD["P" N PSJO S PSJO=0 F S PSJO=$O(^PS(53.1,"ACX",ON,PSJO)) Q:'PSJO D
- .Q:PSJO=+PSGORD S PSJOO=PSGORD D DSPLORDU(PSGP,PSJO_"P") S PSJCM(PSJO_"P",PSJLINE)="",PSJLINE=PSJLINE+1
- I PSGORD'["P" N PSJO,PSJOO S PSJOO="",PSJO=0 F S PSJO=$O(^PS(55,"ACX",ON,PSJO)) Q:'PSJO F S PSJOO=$O(^PS(55,"ACX",ON,PSJO,PSJOO)) Q:PSJOO="" D
- .Q:PSJOO=PSGORD D:PSJOO["U" DSPLORDU(PSGP,PSJOO) D:PSJOO["V" DSPLORDV(PSGP,PSJOO) S PSJCM(PSJOO,PSJLINE)="",PSJLINE=PSJLINE+1
- N ON S ON="" F S ON=$O(PSJCM(ON)) Q:ON="" D
- .W ! F PSX=0:0 S PSX=$O(PSJCM(ON,PSX)) Q:'PSX D
- ..W !,PSJCM(ON,PSX) D:'(PSX#6) PAUSE
- W !
- Q
- ;
- CMPLX2(PSGP,ON,PSGORD) ;
- Q:$G(PSGORD)'["U"
- N PSJLINE S PSJLINE=0
- D FULL^VALM1
- D DSPLORDU(PSGP,PSGORD)
- W ! S PSJLINE="" F S PSJLINE=$O(PSJCM(PSGORD,PSJLINE)) Q:PSJLINE="" W !,PSJCM(PSGORD,PSJLINE) D:'((PSJLINE+1)#6) PAUSE
- D EN^PSGPEN(PSGORD)
- W !
- Q
- ;
- UPDATE ; Refresh array, actions, & display.
- D GETUD^PSJLMGUD(DFN,ON),INIT^PSJLMUDE(DFN,ON) S VALMBCK="R"
- Q
- HOLDHDR ; Freeze header text while processing order actions
- I $D(VALM("TM")) S IOTM=VALM("TM"),IOBM=IOSL W IOSC W @IOSTBM W IORC
- Q
- ;
- DSPLORDU(PSGP,ON) ; Display UD order for order check as in the Inpat Profile.
- NEW DRUGNAME,F,NODE0,NODE2,PSJID,PSJX,SCH,SD,STAT,X,Y K PSJCM
- S F=$S(ON["U":"^PS(55,PSGP,5,"_+ON_",",1:"^PS(53.1,"_+ON_",")
- S NODE0=$G(@(F_"0)")),NODE2=$G(@(F_"2)"))
- D DRGDISP^PSJLMUT1(PSGP,ON,39,54,.DRUGNAME,0)
- I ON["P",$P(NODE0,U,4)="F" D DSPLORDV(PSGP,ON) Q
- S SCH=$P(NODE0,U,7)
- S STAT=$P(NODE0,U,9)
- D NOW^%DTC I "A"[STAT I $P(NODE2,U,4)<% D EXPIRE S STAT="E"
- I STAT="A",$P(NODE0,U,27)="R" S STAT="R"
- I STAT'="P" S PSJID=$E($$ENDTC^PSGMI($P(NODE2,U,2)),1,5),SD=$E($$ENDTC^PSGMI($P(NODE2,U,4)),1,5)
- I STAT="P" S (PSJID,SD)="*****",SCH="?"
- F PSJX=0:0 S PSJX=$O(DRUGNAME(PSJX)) Q:'PSJX D
- . S:PSJX=1 X=SCH_" "_PSJID_" "_SD_" "_$E(STAT,1)
- . S:PSJX=1 DRUGNAME(1)=$$SETSTR^VALM1(X,$E(DRUGNAME(1),1,40),42,20)
- . S PSJCM(ON,PSJLINE)=" "_DRUGNAME(PSJX)
- . S PSJLINE=PSJLINE+1
- Q
- DSPLORDV(DFN,ON) ; Display IV order for order check as in the Inpat Profile.
- N DRG,DRGI,DRGT,DRGX,FIL,ND,ON55,P,PSJIVFLG,PSJORIFN,TYP,X,Y
- S TYP="?" I ON["V" D
- .S Y=$G(^PS(55,DFN,"IV",+ON,0)) F X=2,3,4,5,8,9,17,23 S P(X)=$P(Y,U,X)
- .D NOW^%DTC I "A"[P(17) I P(3)<% D EXPIRE S P(17)="E"
- .S TYP=$$ONE^PSJBCMA(DFN,ON,P(9),P(2),P(3)) I TYP'="O" S TYP="C"
- .S ON55=ON,P("OT")=$S(P(4)="A":"F",P(4)="H":"H",1:"I") D GTDRG^PSIVORFB,GTOT^PSIVUTL(P(4))
- S PSJCT=0,PSJL=""
- I ON'["V" S (P(2),P(3))="",P(17)=$P($G(^PS(53.1,+ON,0)),U,9),Y=$G(^(8)),P(4)=$P(Y,U),P(8)=$P(Y,U,5),P(9)=$P($G(^(2)),U) D GTDRG^PSIVORFA,GTOT^PSIVUTL(P(4))
- S PSJIVFLG=1 D PIVAD,SOL
- Q
- SOL ;
- S PSJL=$S($G(PSJIVFLG):PSJL,1:"")_" in"
- S DRG=0 F S DRG=+$O(DRG("SOL",DRG)) Q:'DRG D NAME^PSIVUTL(DRG("SOL",DRG),39,.NAME,0) S DRGX=0 F S DRGX=$O(NAME(DRGX)) Q:'DRGX S PSJL=$$SETSTR^VALM1(NAME(DRGX),PSJL,12,60) D:$G(PSJIVFLG) PIV1 D SETTMP S PSJL=" "
- Q
- PIVAD ; Print IV Additives.
- F DRG=0:0 S DRG=$O(DRG("AD",DRG)) Q:'DRG D NAME^PSIVUTL(DRG("AD",DRG),39,.NAME,1) F DRGX=0:0 S DRGX=$O(NAME(DRGX)) Q:'DRGX S PSJL=$$SETSTR^VALM1(NAME(DRGX),PSJL,9,60) D:$G(PSJIVFLG) PIV1 D SETTMP
- Q
- ;
- PIV1 ; Print Sched type, start/stop dates, and status.
- K PSJIVFLG
- F X=2,3 S P(X)=$E($$ENDTC^PSGMI(P(X)),1,$S($D(PSJEXTP):8,1:5))
- I '$D(PSJEXTP) S PSJL=$$SETSTR^VALM1(TYP,PSJL,50,1),PSJL=$$SETSTR^VALM1(P(2),PSJL,53,7),PSJL=$$SETSTR^VALM1(P(3),PSJL,60,7),PSJL=$$SETSTR^VALM1(P(17),PSJL,67,1)
- E S PSJL=$$SETSTR^VALM1(TYP,PSJL,50,1),PSJL=$$SETSTR^VALM1(P(2),53,7),PSJL=$$SETSTR^VALM1(P(3),PSJL,63,7),PSJL=$$SETSTR^VALM1(P(17),PSJL,73,1)
- Q
- SETTMP ;
- S PSJCM(ON,PSJLINE)=PSJL,PSJLINE=PSJLINE+1
- Q
- PAUSE ;
- K DIR W ! S DIR(0)="EA",DIR("A")="Press Return to continue..." D ^DIR W !
- Q
- NEW ;
- Q:'PSJCOM
- Q:PSGORD'["P"
- M ^TMP("PSJCOM",$J,+PSGORD)=^PS(53.1,+PSGORD)
- S PSGS0Y=PSGAT,PSGNESD=PSGSD,PSGNEFD=PSGFD,PSGOEPR=PSGPR,PSGPDRG=PSGPD,PSGPDRGN=PSGPDN,PSGOEE="E"
- S $P(^TMP("PSJCOM",$J,+PSGORD,0),"^",27)="E",$P(^(0),"^",9)="DE"
- W:'$D(PSGOEE)&'$D(PSGOES) !!,"...transcribing this ",$S($D(PSGOES):"",'PSGOEAV:"non-verified ",1:"active "),"order..." S PSGOETOF=1 S:PSGSM="" PSGSM=0
- ;I PSGPR'=PSGOEPR D:'$D(^PS(55,PSGP,0)) ENSET0^PSGNE3(PSGP) S $P(^PS(55,PSGP,5.1),U,2)=PSGPR,PSGOEPR=PSGPR
- K ND4,DA D NOW^%DTC S PSGDT=+$E(%,1,12),DA=+PSGORD
- S PSJOWALL=+$G(^PS(55,PSGP,5.1))
- I $D(^PS(51.2,+PSGMR,0)),$P(^(0),U,3)]"" S PSGMRN=$P(^(0),U,3)
- I PSGS0XT="D",'PSGS0Y S PSGS0Y=$E(PSGNESD_"00011",9,12)
- S ND=DA_U_PSGPR_U_PSGMR_"^U^"_PSGSM_U_PSGHSM_U_PSGST_"^^"_$S(PSGOEAV:"A",1:"N")_"^^^^^"_PSGDT_U_PSGP_U_PSGDT S:PSGNEDFD $P(ND,U,$P(PSGNEDFD,U)["L"+10)=+PSGNEDFD
- S:$D(PSGOEE) $P(ND,U,24,25)=PSGOEE_U_PSGORD S:'PSGOEAV $P(ND,U,18)=DA S ND2=PSGSCH_U_$S(+PSGNESD=PSGNESD:+PSGNESD,1:"")_"^^"_+PSGNEFD_U_PSGS0Y_U_PSGS0XT_"^^^^"_+PSJPWD
- ;I PSGOEAV S F=^PS(55,PSGP,0) I $P(F,"^",7)="" S $P(F,"^",7)=$P($P(ND,"^",16),"."),$P(F,"^",8)="A",^(0)=F
- S $P(ND4,U,7)=DUZ I PSGOEAV,PSJSYSU D
- .S $P(ND4,U,PSJSYSU,PSJSYSU+1)=DUZ_U_PSGDT,$P(ND4,U,+PSJSYSU=1+9)=1,$P(ND4,U,+PSJSYSU=3+9)=0
- .S $P(ND4,U,9,10)=+$P(ND4,U,9)_U_+$P(ND4,U,10)
- S F="^TMP(""PSJCOM2"","_$J_","_DA_",",@(F_"0)")=ND
- ; Naked references below refers to full reference in F which is ^TMP("PSJCOM2",$J,DA,
- S @(F_".2)")=PSGPDRG_U_PSGDO_U_PSJNOO S:$G(PSJDOSE("DO"))]"" $P(^(.2),U,5,6)=$P(PSJDOSE("DO"),U,1,2) S:PSJCOM]"" $P(^(.2),"^",8)=PSJCOM
- I '$D(PSJDOSE("DO")),$D(PSGORD) S $P(@(F_".2)"),U,5,6)=$P(@("^PS("_$S(PSGORD["U":"55,"_PSGP_",5",1:53.1)_","_+PSGORD_",.2)"),U,5,6)
- ; Naked references below refers to full reference in F which is ^TMP("PSJCOM2",$J,DA,
- S @(F_"2)")=$P(ND2,"^",1,6),^(4)=ND4 S:PSGSI]"" ^(6)=PSGSI
- ; Naked references below refers to full reference in F which is ^TMP("PSJCOM2",$J,DA,
- S (C,X)=0 F S X=$O(^PS(53.45,PSJSYSP,2,X)) Q:'X S D=$G(^(X,0)) I D,$S('$P(D,U,3):1,1:$P(D,U,3)>DT) S C=C+1,@(F_"1,"_C_",0)")=$P(D,U,1,2),@(F_"1,""B"","_+D_","_C_")")=""
- S:C @(F_"1,0)")=U_$S(PSGOEAV:55.07,1:53.11)_"P^"_C_U_C
- ; Naked references below refers to full reference in F which is ^TMP("PSJCOM2",$J,DA,
- S (C,Q)=0 F S Q=$O(^PS(53.45,PSJSYSP,1,Q)) Q:'Q S X=$G(^(Q,0)) S:X]"" C=C+1,@(F_"3,"_C_",0)")=X
- S:C @(F_"3,0)")=U_$S(PSGOEAV:55.08,1:53.12)_U_C_U_C
- S:C @(F_"12,0)")=U_$S(PSGOEAV:55.0612,1:53.1012)_U_C_U_C
- W "."
- OUT ;
- K PSGOETOF
- DONE ;
- K C,D,ND,ND2,ND4,PSGDO,PSGDRG,PSGDRGN,PSGFOK,PSGHSM,PSGMR,PSGMRN,PSGNEDFD,PSGNEFD,PSGNESD,PSGPDRG,PSGPDRGN,PSGSI,PSGSTN,PSJDOSE
- Q
- EXPIRE ;Change status of order to expired and send notice to OE/RR
- N DA,DIE,DR,PSGPO,PSIVACT
- Q:'$G(PSJOO)!($G(PSJOO)["P")
- S STATUS="E",(PSGPO,PSIVACT)=1,DA=+PSJOO,DA(1)=PSGP,DIE=$S(PSJOO["V":"^PS(55,"_PSGP_",""IV"",",1:"^PS(55,"_PSGP_",5,"),DR=$S(PSJOO["V":"100////E",1:"28////E") D ^DIE
- D EN1^PSJHL2(PSGP,"SC",PSJOO)
- Q
- PSJCOM1 ;BIR/CML3-DISPLAY COMPLEX ORDERS FOR DISCONTINUE ;02 Feb 2001 12:20 PM
- +1 ;;5.0; INPATIENT MEDICATIONS ;**110,127**;16 DEC 97
- +2 ;
- +3 ; Reference to ^VALM1 is supported by DBIA 10116.
- +4 ; Reference to ^PS(55 is supported by DBIA 2191.
- +5 ; Reference to ^%DTC is supported by DBIA 10000.
- +6 ; Reference to ^PS(51.2 is supported by DBIA 2178.
- +7 ; Reference to ^DIE is supported by DBIA 10018.
- +8 ; Reference to ^DIR is supported by DBIA 10026.
- +9 ;
- CMPLX(PSGP,ON,PSGORD) ;
- +1 DO PAUSE
- KILL PSJCM
- +2 NEW PSJLINE,PSX,PSCM
- +3 SET PSJLINE=1
- +4 IF PSGORD["P"
- NEW PSJO
- SET PSJO=0
- FOR
- SET PSJO=$ORDER(^PS(53.1,"ACX",ON,PSJO))
- IF 'PSJO
- QUIT
- Begin DoDot:1
- +5 IF PSJO=+PSGORD
- QUIT
- SET PSJOO=PSGORD
- DO DSPLORDU(PSGP,PSJO_"P")
- SET PSJCM(PSJO_"P",PSJLINE)=""
- SET PSJLINE=PSJLINE+1
- End DoDot:1
- +6 IF PSGORD'["P"
- NEW PSJO,PSJOO
- SET PSJOO=""
- SET PSJO=0
- FOR
- SET PSJO=$ORDER(^PS(55,"ACX",ON,PSJO))
- IF 'PSJO
- QUIT
- FOR
- SET PSJOO=$ORDER(^PS(55,"ACX",ON,PSJO,PSJOO))
- IF PSJOO=""
- QUIT
- Begin DoDot:1
- +7 IF PSJOO=PSGORD
- QUIT
- IF PSJOO["U"
- DO DSPLORDU(PSGP,PSJOO)
- IF PSJOO["V"
- DO DSPLORDV(PSGP,PSJOO)
- SET PSJCM(PSJOO,PSJLINE)=""
- SET PSJLINE=PSJLINE+1
- End DoDot:1
- +8 NEW ON
- SET ON=""
- FOR
- SET ON=$ORDER(PSJCM(ON))
- IF ON=""
- QUIT
- Begin DoDot:1
- +9 WRITE !
- FOR PSX=0:0
- SET PSX=$ORDER(PSJCM(ON,PSX))
- IF 'PSX
- QUIT
- Begin DoDot:2
- +10 WRITE !,PSJCM(ON,PSX)
- IF '(PSX#6)
- DO PAUSE
- End DoDot:2
- End DoDot:1
- +11 WRITE !
- +12 QUIT
- +13 ;
- CMPLX2(PSGP,ON,PSGORD) ;
- +1 IF $GET(PSGORD)'["U"
- QUIT
- +2 NEW PSJLINE
- SET PSJLINE=0
- +3 DO FULL^VALM1
- +4 DO DSPLORDU(PSGP,PSGORD)
- +5 WRITE !
- SET PSJLINE=""
- FOR
- SET PSJLINE=$ORDER(PSJCM(PSGORD,PSJLINE))
- IF PSJLINE=""
- QUIT
- WRITE !,PSJCM(PSGORD,PSJLINE)
- IF '((PSJLINE+1)#6)
- DO PAUSE
- +6 DO EN^PSGPEN(PSGORD)
- +7 WRITE !
- +8 QUIT
- +9 ;
- UPDATE ; Refresh array, actions, & display.
- +1 DO GETUD^PSJLMGUD(DFN,ON)
- DO INIT^PSJLMUDE(DFN,ON)
- SET VALMBCK="R"
- +2 QUIT
- HOLDHDR ; Freeze header text while processing order actions
- +1 IF $DATA(VALM("TM"))
- SET IOTM=VALM("TM")
- SET IOBM=IOSL
- WRITE IOSC
- WRITE @IOSTBM
- WRITE IORC
- +2 QUIT
- +3 ;
- DSPLORDU(PSGP,ON) ; Display UD order for order check as in the Inpat Profile.
- +1 NEW DRUGNAME,F,NODE0,NODE2,PSJID,PSJX,SCH,SD,STAT,X,Y
- KILL PSJCM
- +2 SET F=$SELECT(ON["U":"^PS(55,PSGP,5,"_+ON_",",1:"^PS(53.1,"_+ON_",")
- +3 SET NODE0=$GET(@(F_"0)"))
- SET NODE2=$GET(@(F_"2)"))
- +4 DO DRGDISP^PSJLMUT1(PSGP,ON,39,54,.DRUGNAME,0)
- +5 IF ON["P"
- IF $PIECE(NODE0,U,4)="F"
- DO DSPLORDV(PSGP,ON)
- QUIT
- +6 SET SCH=$PIECE(NODE0,U,7)
- +7 SET STAT=$PIECE(NODE0,U,9)
- +8 DO NOW^%DTC
- IF "A"[STAT
- IF $PIECE(NODE2,U,4)<%
- DO EXPIRE
- SET STAT="E"
- +9 IF STAT="A"
- IF $PIECE(NODE0,U,27)="R"
- SET STAT="R"
- +10 IF STAT'="P"
- SET PSJID=$EXTRACT($$ENDTC^PSGMI($PIECE(NODE2,U,2)),1,5)
- SET SD=$EXTRACT($$ENDTC^PSGMI($PIECE(NODE2,U,4)),1,5)
- +11 IF STAT="P"
- SET (PSJID,SD)="*****"
- SET SCH="?"
- +12 FOR PSJX=0:0
- SET PSJX=$ORDER(DRUGNAME(PSJX))
- IF 'PSJX
- QUIT
- Begin DoDot:1
- +13 IF PSJX=1
- SET X=SCH_" "_PSJID_" "_SD_" "_$EXTRACT(STAT,1)
- +14 IF PSJX=1
- SET DRUGNAME(1)=$$SETSTR^VALM1(X,$EXTRACT(DRUGNAME(1),1,40),42,20)
- +15 SET PSJCM(ON,PSJLINE)=" "_DRUGNAME(PSJX)
- +16 SET PSJLINE=PSJLINE+1
- End DoDot:1
- +17 QUIT
- DSPLORDV(DFN,ON) ; Display IV order for order check as in the Inpat Profile.
- +1 NEW DRG,DRGI,DRGT,DRGX,FIL,ND,ON55,P,PSJIVFLG,PSJORIFN,TYP,X,Y
- +2 SET TYP="?"
- IF ON["V"
- Begin DoDot:1
- +3 SET Y=$GET(^PS(55,DFN,"IV",+ON,0))
- FOR X=2,3,4,5,8,9,17,23
- SET P(X)=$PIECE(Y,U,X)
- +4 DO NOW^%DTC
- IF "A"[P(17)
- IF P(3)<%
- DO EXPIRE
- SET P(17)="E"
- +5 SET TYP=$$ONE^PSJBCMA(DFN,ON,P(9),P(2),P(3))
- IF TYP'="O"
- SET TYP="C"
- +6 SET ON55=ON
- SET P("OT")=$SELECT(P(4)="A":"F",P(4)="H":"H",1:"I")
- DO GTDRG^PSIVORFB
- DO GTOT^PSIVUTL(P(4))
- End DoDot:1
- +7 SET PSJCT=0
- SET PSJL=""
- +8 IF ON'["V"
- SET (P(2),P(3))=""
- SET P(17)=$PIECE($GET(^PS(53.1,+ON,0)),U,9)
- SET Y=$GET(^(8))
- SET P(4)=$PIECE(Y,U)
- SET P(8)=$PIECE(Y,U,5)
- SET P(9)=$PIECE($GET(^(2)),U)
- DO GTDRG^PSIVORFA
- DO GTOT^PSIVUTL(P(4))
- +9 SET PSJIVFLG=1
- DO PIVAD
- DO SOL
- +10 QUIT
- SOL ;
- +1 SET PSJL=$SELECT($GET(PSJIVFLG):PSJL,1:"")_" in"
- +2 SET DRG=0
- FOR
- SET DRG=+$ORDER(DRG("SOL",DRG))
- IF 'DRG
- QUIT
- DO NAME^PSIVUTL(DRG("SOL",DRG),39,.NAME,0)
- SET DRGX=0
- FOR
- SET DRGX=$ORDER(NAME(DRGX))
- IF 'DRGX
- QUIT
- SET PSJL=$$SETSTR^VALM1(NAME(DRGX),PSJL,12,60)
- IF $GET(PSJIVFLG)
- DO PIV1
- DO SETTMP
- SET PSJL=" "
- +3 QUIT
- PIVAD ; Print IV Additives.
- +1 FOR DRG=0:0
- SET DRG=$ORDER(DRG("AD",DRG))
- IF 'DRG
- QUIT
- DO NAME^PSIVUTL(DRG("AD",DRG),39,.NAME,1)
- FOR DRGX=0:0
- SET DRGX=$ORDER(NAME(DRGX))
- IF 'DRGX
- QUIT
- SET PSJL=$$SETSTR^VALM1(NAME(DRGX),PSJL,9,60)
- IF $GET(PSJIVFLG)
- DO PIV1
- DO SETTMP
- +2 QUIT
- +3 ;
- PIV1 ; Print Sched type, start/stop dates, and status.
- +1 KILL PSJIVFLG
- +2 FOR X=2,3
- SET P(X)=$EXTRACT($$ENDTC^PSGMI(P(X)),1,$SELECT($DATA(PSJEXTP):8,1:5))
- +3 IF '$DATA(PSJEXTP)
- SET PSJL=$$SETSTR^VALM1(TYP,PSJL,50,1)
- SET PSJL=$$SETSTR^VALM1(P(2),PSJL,53,7)
- SET PSJL=$$SETSTR^VALM1(P(3),PSJL,60,7)
- SET PSJL=$$SETSTR^VALM1(P(17),PSJL,67,1)
- +4 IF '$TEST
- SET PSJL=$$SETSTR^VALM1(TYP,PSJL,50,1)
- SET PSJL=$$SETSTR^VALM1(P(2),53,7)
- SET PSJL=$$SETSTR^VALM1(P(3),PSJL,63,7)
- SET PSJL=$$SETSTR^VALM1(P(17),PSJL,73,1)
- +5 QUIT
- SETTMP ;
- +1 SET PSJCM(ON,PSJLINE)=PSJL
- SET PSJLINE=PSJLINE+1
- +2 QUIT
- PAUSE ;
- +1 KILL DIR
- WRITE !
- SET DIR(0)="EA"
- SET DIR("A")="Press Return to continue..."
- DO ^DIR
- WRITE !
- +2 QUIT
- NEW ;
- +1 IF 'PSJCOM
- QUIT
- +2 IF PSGORD'["P"
- QUIT
- +3 MERGE ^TMP("PSJCOM",$JOB,+PSGORD)=^PS(53.1,+PSGORD)
- +4 SET PSGS0Y=PSGAT
- SET PSGNESD=PSGSD
- SET PSGNEFD=PSGFD
- SET PSGOEPR=PSGPR
- SET PSGPDRG=PSGPD
- SET PSGPDRGN=PSGPDN
- SET PSGOEE="E"
- +5 SET $PIECE(^TMP("PSJCOM",$JOB,+PSGORD,0),"^",27)="E"
- SET $PIECE(^(0),"^",9)="DE"
- +6 IF '$DATA(PSGOEE)&'$DATA(PSGOES)
- WRITE !!,"...transcribing this ",$SELECT($DATA(PSGOES):"",'PSGOEAV:"non-verified ",1:"active "),"order..."
- SET PSGOETOF=1
- IF PSGSM=""
- SET PSGSM=0
- +7 ;I PSGPR'=PSGOEPR D:'$D(^PS(55,PSGP,0)) ENSET0^PSGNE3(PSGP) S $P(^PS(55,PSGP,5.1),U,2)=PSGPR,PSGOEPR=PSGPR
- +8 KILL ND4,DA
- DO NOW^%DTC
- SET PSGDT=+$EXTRACT(%,1,12)
- SET DA=+PSGORD
- +9 SET PSJOWALL=+$GET(^PS(55,PSGP,5.1))
- +10 IF $DATA(^PS(51.2,+PSGMR,0))
- IF $PIECE(^(0),U,3)]""
- SET PSGMRN=$PIECE(^(0),U,3)
- +11 IF PSGS0XT="D"
- IF 'PSGS0Y
- SET PSGS0Y=$EXTRACT(PSGNESD_"00011",9,12)
- +12 SET ND=DA_U_PSGPR_U_PSGMR_"^U^"_PSGSM_U_PSGHSM_U_PSGST_"^^"_$SELECT(PSGOEAV:"A",1:"N")_"^^^^^"_PSGDT_U_PSGP_U_PSGDT
- IF PSGNEDFD
- SET $PIECE(ND,U,$PIECE(PSGNEDFD,U)["L"+10)=+PSGNEDFD
- +13 IF $DATA(PSGOEE)
- SET $PIECE(ND,U,24,25)=PSGOEE_U_PSGORD
- IF 'PSGOEAV
- SET $PIECE(ND,U,18)=DA
- SET ND2=PSGSCH_U_$SELECT(+PSGNESD=PSGNESD:+PSGNESD,1:"")_"^^"_+PSGNEFD_U_PSGS0Y_U_PSGS0XT_"^^^^"_+PSJPWD
- +14 ;I PSGOEAV S F=^PS(55,PSGP,0) I $P(F,"^",7)="" S $P(F,"^",7)=$P($P(ND,"^",16),"."),$P(F,"^",8)="A",^(0)=F
- +15 SET $PIECE(ND4,U,7)=DUZ
- IF PSGOEAV
- IF PSJSYSU
- Begin DoDot:1
- +16 SET $PIECE(ND4,U,PSJSYSU,PSJSYSU+1)=DUZ_U_PSGDT
- SET $PIECE(ND4,U,+PSJSYSU=1+9)=1
- SET $PIECE(ND4,U,+PSJSYSU=3+9)=0
- +17 SET $PIECE(ND4,U,9,10)=+$PIECE(ND4,U,9)_U_+$PIECE(ND4,U,10)
- End DoDot:1
- +18 SET F="^TMP(""PSJCOM2"","_$JOB_","_DA_","
- SET @(F_"0)")=ND
- +19 ; Naked references below refers to full reference in F which is ^TMP("PSJCOM2",$J,DA,
- +20 SET @(F_".2)")=PSGPDRG_U_PSGDO_U_PSJNOO
- IF $GET(PSJDOSE("DO"))]""
- SET $PIECE(^(.2),U,5,6)=$PIECE(PSJDOSE("DO"),U,1,2)
- IF PSJCOM]""
- SET $PIECE(^(.2),"^",8)=PSJCOM
- +21 IF '$DATA(PSJDOSE("DO"))
- IF $DATA(PSGORD)
- SET $PIECE(@(F_".2)"),U,5,6)=$PIECE(@("^PS("_$SELECT(PSGORD["U":"55,"_PSGP_",5",1:53.1)_","_+PSGORD_",.2)"),U,5,6)
- +22 ; Naked references below refers to full reference in F which is ^TMP("PSJCOM2",$J,DA,
- +23 SET @(F_"2)")=$PIECE(ND2,"^",1,6)
- SET ^(4)=ND4
- IF PSGSI]""
- SET ^(6)=PSGSI
- +24 ; Naked references below refers to full reference in F which is ^TMP("PSJCOM2",$J,DA,
- +25 SET (C,X)=0
- FOR
- SET X=$ORDER(^PS(53.45,PSJSYSP,2,X))
- IF 'X
- QUIT
- SET D=$GET(^(X,0))
- IF D
- IF $SELECT('$PIECE(D,U,3):1,1:$PIECE(D,U,3)>DT)
- SET C=C+1
- SET @(F_"1,"_C_",0)")=$PIECE(D,U,1,2)
- SET @(F_"1,""B"","_+D_","_C_")")=""
- +26 IF C
- SET @(F_"1,0)")=U_$SELECT(PSGOEAV:55.07,1:53.11)_"P^"_C_U_C
- +27 ; Naked references below refers to full reference in F which is ^TMP("PSJCOM2",$J,DA,
- +28 SET (C,Q)=0
- FOR
- SET Q=$ORDER(^PS(53.45,PSJSYSP,1,Q))
- IF 'Q
- QUIT
- SET X=$GET(^(Q,0))
- IF X]""
- SET C=C+1
- SET @(F_"3,"_C_",0)")=X
- +29 IF C
- SET @(F_"3,0)")=U_$SELECT(PSGOEAV:55.08,1:53.12)_U_C_U_C
- +30 IF C
- SET @(F_"12,0)")=U_$SELECT(PSGOEAV:55.0612,1:53.1012)_U_C_U_C
- +31 WRITE "."
- OUT ;
- +1 KILL PSGOETOF
- DONE ;
- +1 KILL C,D,ND,ND2,ND4,PSGDO,PSGDRG,PSGDRGN,PSGFOK,PSGHSM,PSGMR,PSGMRN,PSGNEDFD,PSGNEFD,PSGNESD,PSGPDRG,PSGPDRGN,PSGSI,PSGSTN,PSJDOSE
- +2 QUIT
- EXPIRE ;Change status of order to expired and send notice to OE/RR
- +1 NEW DA,DIE,DR,PSGPO,PSIVACT
- +2 IF '$GET(PSJOO)!($GET(PSJOO)["P")
- QUIT
- +3 SET STATUS="E"
- SET (PSGPO,PSIVACT)=1
- SET DA=+PSJOO
- SET DA(1)=PSGP
- SET DIE=$SELECT(PSJOO["V":"^PS(55,"_PSGP_",""IV"",",1:"^PS(55,"_PSGP_",5,")
- SET DR=$SELECT(PSJOO["V":"100////E",1:"28////E")
- DO ^DIE
- +4 DO EN1^PSJHL2(PSGP,"SC",PSJOO)
- +5 QUIT