Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/OUTPATIENT_PHARMACY-PSO-APSP-HUIP/PSOHLDA.m

    r613 r623  
    1 PSOHLDA ;BIR/MFR - HOLD/UNHOLD functionality (cont.) ;07/15/96
    2         ;;7.0;OUTPATIENT PHARMACY;**148,225**;DEC 1997;Build 29
    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),$P($G(^PSRX(DA,"H")),"^",2)'="" S COMM=$P($G(^("H")),"^",2) Q
    21         .S COMM="Medication placed on Hold "_$E(DT,4,5)_"-"_$E(DT,6,7)_"-"_$E(DT,2,3)
    22         D EN^PSOHLSN1(DA,"OH","",COMM,PSONOOR) K COMM,PSOHNX
    23         ;
    24         ; - Closes any OPEN/UNRESOLVED REJECTs and Reverses ECME Claim
    25         D REVERSE^PSOBPSU1(DA,+$G(RXF),"HLD",2)
    26         Q
    27         ;
    28 ACT     ;adds activity info for rx removed or placed on hold
    29         D NOW^%DTC S NOW=%
    30         S IR=0 F FDA=0:0 S FDA=$O(^PSRX(DA,"A",FDA)) Q:'FDA  S IR=FDA
    31         S IR=IR+1,^PSRX(DA,"A",0)="^52.3DA^"_IR_"^"_IR
    32         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)_")"
    33         K PSUS,RXF,I,FDA,DIC,DIE,DR,Y,X,%,%I,%H,RSDT
    34         Q
    35         ;
    36 RMP     ;remove Rx if found in array PSORX("PSOL")
    37         Q:'$G(DA)
    38         N I,J,K,PSOX2,PSOX3,PSOX9 S I=0
    39         F  S I=$O(PSORX("PSOL",I)) Q:'I  S PSOX2=PSORX("PSOL",I) D:PSOX2[(DA_",")
    40         .S PSOX9="",K=0 F J=1:1 S PSOX3=$P(PSOX2,",",J) Q:'PSOX3  D
    41         ..I PSOX3=DA,$P($G(^PSRX(DA,"STA")),"^")=3 S K=1 Q
    42         ..S PSOX9=PSOX9_$S('PSOX9:"",1:",")_PSOX3
    43         .I K S:PSOX9]"" PSORX("PSOL",I)=PSOX9_"," K:PSOX9="" PSORX("PSOL",I) D:$D(BBRX(I)) RMB
    44         Q
    45 RMB     ;remove Rx if found in array BBRX()
    46         S PSOX2=BBRX(I) D:PSOX2[(DA_",")
    47         .S PSOX9="" F J=1:1 S PSOX3=$P(PSOX2,",",J) Q:'PSOX3  S:PSOX3'=DA PSOX9=PSOX9_$S('PSOX9:"",1:",")_PSOX3
    48         .S:PSOX9]"" BBRX(I)=PSOX9_"," K:PSOX9="" BBRX(I)
    49         Q
     1PSOHLDA ;BIR/MFR - HOLD/UNHOLD functionality (cont.) ;07/15/96
     2 ;;7.0;OUTPATIENT PHARMACY;**148**;DEC 1997
     3 ;
     4HOLD ;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 ;
     29ACT ;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 ;
     37RMP ;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
     46RMB ;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
Note: See TracChangeset for help on using the changeset viewer.