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

PSOHLDA.m

Go to the documentation of this file.
  1. PSOHLDA ;BIR/MFR - HOLD/UNHOLD functionality (cont.) ;08/23/17 20:01
  1. ;;7.0;OUTPATIENT PHARMACY;**148,225,386,441**;DEC 1997;Build 208
  1. ;
  1. HOLD ;hold function
  1. I $P($G(^PSRX(DA,"STA")),"^")=3 Q
  1. 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
  1. .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),"^"))
  1. .I RFN>1,'$P(^PSRX(DA,1,I,0),"^",18) S RSDT=$P(^PSRX(DA,1,RXF-1,0),"^") Q
  1. .S:RFN>1 RSDT=$P(^PSRX(DA,1,RXF,0),"^")
  1. I RXF D
  1. .S (PSDA,DA(1))=DA,DA=RXF,DIE="^PSRX("_DA(1)_",1,",DR="4" D ^DIE
  1. .S $P(^PSRX(DA(1),1,DA,0),"^",3)=$S($G(FLD(99.1))]"":$E(FLD(99.1),1,60),1:"")
  1. .S DA=PSDA K DA(1)
  1. 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)
  1. S:$G(PSOHD) VALMSG="RX# "_$P(^PSRX(DA,0),"^")_" has been placed in a hold status."
  1. K RXRS(DA)
  1. I $G(^PSRX(DA,"PARK")) D KILLPARK^PSOPRK(DA),RXACT^PSOPRK(DA,"UPK") ;441 PAPI
  1. 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
  1. S:+$G(PSDA) DA=PSDA D RXACT^PSOHLD(DA,"H",$$GET1^DIQ(52,DA,99),$$GET1^DIQ(52,DA,99.1),$G(PSUS))
  1. S PSOHNX=+$P($G(^PSRX(+$G(DA),"H")),"^") D
  1. .I $G(PSOHNX),$P($G(^PSRX(DA,"H")),"^",2)'="" S COMM=$P($G(^("H")),"^",2) Q
  1. .S COMM="Medication placed on Hold "_$E(DT,4,5)_"-"_$E(DT,6,7)_"-"_$E(DT,2,3)
  1. D EN^PSOHLSN1(DA,"OH","",COMM,PSONOOR) K COMM,PSOHNX
  1. ;
  1. ; - Closes any OPEN/UNRESOLVED REJECTs and Reverses ECME Claim
  1. D REVERSE^PSOBPSU1(DA,+$G(RXF),"HLD",2)
  1. ;
  1. K PSUS,RXF,I,FDA,DIC,DIE,DR,Y,X,%,%I,%H,RSDT
  1. Q
  1. ;
  1. RMP ;remove Rx if found in array PSORX("PSOL")
  1. Q:'$G(DA)
  1. N I,J,K,PSOX2,PSOX3,PSOX9 S I=0
  1. F S I=$O(PSORX("PSOL",I)) Q:'I S PSOX2=PSORX("PSOL",I) D:PSOX2[(DA_",")
  1. .S PSOX9="",K=0 F J=1:1 S PSOX3=$P(PSOX2,",",J) Q:'PSOX3 D
  1. ..I PSOX3=DA,$P($G(^PSRX(DA,"STA")),"^")=3 S K=1 Q
  1. ..S PSOX9=PSOX9_$S('PSOX9:"",1:",")_PSOX3
  1. .I K S:PSOX9]"" PSORX("PSOL",I)=PSOX9_"," K:PSOX9="" PSORX("PSOL",I) D:$D(BBRX(I)) RMB
  1. Q
  1. RMB ;remove Rx if found in array BBRX()
  1. S PSOX2=BBRX(I) D:PSOX2[(DA_",")
  1. .S PSOX9="" F J=1:1 S PSOX3=$P(PSOX2,",",J) Q:'PSOX3 S:PSOX3'=DA PSOX9=PSOX9_$S('PSOX9:"",1:",")_PSOX3
  1. .S:PSOX9]"" BBRX(I)=PSOX9_"," K:PSOX9="" BBRX(I)
  1. Q