| [623] | 1 | PSOHLDA ;BIR/MFR - HOLD/UNHOLD functionality (cont.) ;07/15/96 | 
|---|
|  | 2 | ;;7.0;OUTPATIENT PHARMACY;**148**;DEC 1997 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | HOLD ;hold function | 
|---|
|  | 5 | I $P($G(^PSRX(DA,"STA")),"^")=3 Q | 
|---|
|  | 6 | S RSDT=$S($P(^PSRX(DA,2),"^",13):$P(^PSRX(DA,3),"^"),1:"@"),(PSUS,ACT,RXF,RFN,I)=0 F  S I=$O(^PSRX(DA,1,I)) Q:'I  D | 
|---|
|  | 7 | .S RXF=I,RFN=RFN+1 S:RFN=1 RSDT=$S('$P(^PSRX(DA,1,I,0),"^",18):$P(^PSRX(DA,2),"^",2),1:$P(^PSRX(DA,1,I,0),"^")) | 
|---|
|  | 8 | .I RFN>1,'$P(^PSRX(DA,1,I,0),"^",18) S RSDT=$P(^PSRX(DA,1,RXF-1,0),"^") Q | 
|---|
|  | 9 | .S:RFN>1 RSDT=$P(^PSRX(DA,1,RXF,0),"^") | 
|---|
|  | 10 | I RXF D | 
|---|
|  | 11 | .S (PSDA,DA(1))=DA,DA=RXF,DIE="^PSRX("_DA(1)_",1,",DR="4" D ^DIE | 
|---|
|  | 12 | .S $P(^PSRX(DA(1),1,DA,0),"^",3)=$S($G(FLD(99.1))]"":$E(FLD(99.1),1,60),1:"") | 
|---|
|  | 13 | .S DA=PSDA K DA(1) | 
|---|
|  | 14 | S DIE="^PSRX(",DR=$S('RXF&('$P(^PSRX(DA,2),"^",13)):"22///@;",1:"")_"99///"_FLD(99)_";99.1///^S X=FLD(99.1);99.2///"_DT_";100///3;101///"_RSDT D ^DIE Q:$D(Y) | 
|---|
|  | 15 | S:$G(PSOHD) VALMSG="RX# "_$P(^PSRX(DA,0),"^")_" has been placed in a hold status." | 
|---|
|  | 16 | K RXRS(DA) | 
|---|
|  | 17 | I +$G(PSDA) S DA=$O(^PS(52.5,"B",PSDA,0)) I DA S:$P($G(^PS(52.5,DA,"P")),"^")=0 PSUS=1 S DIK="^PS(52.5," D ^DIK K DA,DIK | 
|---|
|  | 18 | S:+$G(PSDA) DA=PSDA D ACT | 
|---|
|  | 19 | S PSOHNX=+$P($G(^PSRX(+$G(DA),"H")),"^") D | 
|---|
|  | 20 | .I $G(PSOHNX),$G(PSOHNX)'=99 S COMM=$P($P($P(^DD(52,99,0),"^",3),";",PSOHNX),":",2) Q | 
|---|
|  | 21 | .I $G(PSOHNX)=99,$P($G(^PSRX(DA,"H")),"^",2)'="" S COMM=$P($G(^("H")),"^",2) Q | 
|---|
|  | 22 | .S COMM="Medication placed on Hold "_$E(DT,4,5)_"-"_$E(DT,6,7)_"-"_$E(DT,2,3) | 
|---|
|  | 23 | D EN^PSOHLSN1(DA,"OH","",COMM,PSONOOR) K COMM,PSOHNX | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | ; - Closes any OPEN/UNRESOLVED REJECTs and Reverses ECME Claim | 
|---|
|  | 26 | D REVERSE^PSOBPSU1(DA,+$G(RXF),"HLD",2) | 
|---|
|  | 27 | Q | 
|---|
|  | 28 | ; | 
|---|
|  | 29 | ACT ;adds activity info for rx removed or placed on hold | 
|---|
|  | 30 | D NOW^%DTC S NOW=% | 
|---|
|  | 31 | S IR=0 F FDA=0:0 S FDA=$O(^PSRX(DA,"A",FDA)) Q:'FDA  S IR=FDA | 
|---|
|  | 32 | S IR=IR+1,^PSRX(DA,"A",0)="^52.3DA^"_IR_"^"_IR | 
|---|
|  | 33 | S ^PSRX(DA,"A",IR,0)=NOW_"^"_$S(ACT:"U",1:"H")_"^"_DUZ_"^"_$S(RXF>5:RXF+1,1:RXF)_"^"_"RX "_$S('ACT:"placed in a",1:"removed from")_" HOLD status "_$S(+$G(PSUS):"and removed from SUSPENSE ",1:"")_"("_$E(DT,4,5)_"-"_$E(DT,6,7)_"-"_$E(DT,2,3)_")" | 
|---|
|  | 34 | K PSUS,RXF,I,FDA,DIC,DIE,DR,Y,X,%,%I,%H,RSDT | 
|---|
|  | 35 | Q | 
|---|
|  | 36 | ; | 
|---|
|  | 37 | RMP ;remove Rx if found in array PSORX("PSOL") | 
|---|
|  | 38 | Q:'$G(DA) | 
|---|
|  | 39 | N I,J,K,PSOX2,PSOX3,PSOX9 S I=0 | 
|---|
|  | 40 | F  S I=$O(PSORX("PSOL",I)) Q:'I  S PSOX2=PSORX("PSOL",I) D:PSOX2[(DA_",") | 
|---|
|  | 41 | .S PSOX9="",K=0 F J=1:1 S PSOX3=$P(PSOX2,",",J) Q:'PSOX3  D | 
|---|
|  | 42 | ..I PSOX3=DA,$P($G(^PSRX(DA,"STA")),"^")=3 S K=1 Q | 
|---|
|  | 43 | ..S PSOX9=PSOX9_$S('PSOX9:"",1:",")_PSOX3 | 
|---|
|  | 44 | .I K S:PSOX9]"" PSORX("PSOL",I)=PSOX9_"," K:PSOX9="" PSORX("PSOL",I) D:$D(BBRX(I)) RMB | 
|---|
|  | 45 | Q | 
|---|
|  | 46 | RMB ;remove Rx if found in array BBRX() | 
|---|
|  | 47 | S PSOX2=BBRX(I) D:PSOX2[(DA_",") | 
|---|
|  | 48 | .S PSOX9="" F J=1:1 S PSOX3=$P(PSOX2,",",J) Q:'PSOX3  S:PSOX3'=DA PSOX9=PSOX9_$S('PSOX9:"",1:",")_PSOX3 | 
|---|
|  | 49 | .S:PSOX9]"" BBRX(I)=PSOX9_"," K:PSOX9="" BBRX(I) | 
|---|
|  | 50 | Q | 
|---|