- PSOHLDS3 ;BHAM ISC/SAB,LC,PWC - BUILD PROFILE FOR AUTOMATED INTERFACE ;4/13/05 1:53pm
- ;;7.0;OUTPATIENT PHARMACY;**156,198**;DEC 1997
- ;reference to PSDRUG suppoprted by DBIA # 221
- ;reference to PS(50.606 supported by DBIA # 2174
- ;reference to PS(50.7 supported by DBIA #2223
- ;reference to PS(55 supported by DBIA # 2228
- ;reference to PS(56 supported by DBIA # 2229
- ;
- ;PSO*198 add check to insert spaces into PMI segments, also add
- ; "NTE|6||" to beginning of NTE6 segment
- ;
- START ;build profile for the NTE4 segment
- Q:'$D(DFN)
- N II K ^TMP($J,"PRF")
- S PSODFN=DFN I '$D(PSODTCUT) D CUTDATE^PSOFUNC
- S:'$D(Z) Z=1 S:'$D(NEW1) (NEW1,NEW11)="^" S %DT="",X="T" D ^%DT S DT1=Y S X1=DT1,X2=-365 D C^%DTC S EXPS=X S X1=DT1,X2=-182 D C^%DTC S EXP=X
- F RXX=0:0 S RXX=$O(^PS(55,DFN,"P",RXX)) Q:'RXX S RXNN=+^(RXX,0) I $D(^PSRX(RXNN,0)),$P($G(^("STA")),"^")'=13 S RXPX=^PSRX(RXNN,0),$P(RXPX,"^",15)=$P($G(^("STA")),"^"),RXPX2=^(2) D CHK
- I '$D(^TMP($J,"PRF")) G PPP
- ;
- SD S CNT=1 F SD="A","C","S" I $D(^TMP($J,"PRF",SD)) S DRNME="" D DRNME
- PPP D PEND
- K ^TMP($J,"PRF")
- K A,B,DRNME,DRP,EXP,EXPS,I,II,ISSD,J,LINE,LN,MESS,MJK,NEW1,NEW11,PHYS,POP,PQTY,TTTT,RFL,RFS,RXF,RXNN,RXPX,RXPX2,RXPNO,RXX
- K SD,SIG,STA,X,X1,X2,Y,Z,CNT,PEND,PSODTCUT,PSOPRPAS,PZZODRUG,RFDATE
- Q
- DRNME S DRNME=$O(^TMP($J,"PRF",SD,DRNME)) Q:DRNME="" D ISSD G DRNME
- ;
- ISSD F ISSD=0:0 S ISSD=$O(^TMP($J,"PRF",SD,DRNME,ISSD)) Q:'ISSD S RXPNO="" D RXPNO
- Q
- RXPNO S RXPNO=$O(^TMP($J,"PRF",SD,DRNME,ISSD,RXPNO)) Q:RXPNO="" S RXNN=^(RXPNO) I $D(^PSRX(RXNN,0)) S RXPX=^(0),RXPX2=^(2) D PRT G RXPNO
- ;
- CHK Q:PSODTCUT>$P(RXPX2,"^",6)
- I $P(^PSRX(RXNN,"STA"),"^")=12 S II=RXNN D LAST^PSORFL Q:PSODTCUT>RFDATE
- I $P(RXPX,"^",3)=7!($P(RXPX,"^",3)=8)&('PSOPRPAS) Q
- S J="^"_RXNN_"^" Q:(NEW1[J)!(NEW11[J) Q:$P(RXPX,"^",13)<EXPS S RXPNO=$P(RXPX,"^"),ISSD=$P(RXPX,"^",13)
- Q:'$D(^PSDRUG($P(RXPX,"^",6),0)) S DRP=^(0),SD=$S($P(DRP,"^",3)["S":"S",$P(RXPX,"^",15)=12:"C",1:"A"),DRNME=$P(DRP,"^"),^TMP($J,"PRF",SD,DRNME,ISSD,RXPNO)=RXNN
- Q
- PRT S RFS=$P(RXPX,"^",9),PQTY=$P(RXPX,"^",7)
- K DIC,X,Y S DIC="^VA(200,",DIC(0)="N,Z",X=$P(RXPX,"^",4) D ^DIC
- S PHYS=$S(+Y:$P(Y,"^",2),1:"UNKNOWN"),II=RXNN D LAST^PSORFL S RXF=0 F MJK=0:0 S MJK=$O(^PSRX(RXNN,1,MJK)) Q:'MJK S RXF=RXF+1
- S STA=$S($P(^PSRX(RXNN,"STA"),"^")=14:"DC",$P(^PSRX(RXNN,"STA"),"^")=15:"DE",$P(^PSRX(RXNN,"STA"),"^")=16:"PH",1:$E("ANRHPS ECD",(1+$P(^PSRX(RXNN,"STA"),"^")))),STA=$S(DT1>$P(RXPX2,"^",6):"E",1:STA)
- D SIG S FSIG=$O(FSIG(""),-1)
- S ^TMP("PSO",$J,PSI)="NTE"_FS_4_FS_FS,NTE4=1
- S ^TMP("PSO",$J,PSI,CNT)=SD_CS_RXPNO_CS_DRNME_CS_$E(ISSD,4,5)_"/"_$E(ISSD,6,7)
- S ^TMP("PSO",$J,PSI,CNT)=^TMP("PSO",$J,PSI,CNT)_CS_$E(RFL,1,5)_CS_RFS_CS_RXF_CS_PQTY_CS_STA_CS_$E(PHYS,1,20)_CS_$S($G(FSIG)'="":FSIG,1:"""""")_FS_"Profile Information"
- S CNT=CNT+1
- Q
- SIG ;Format Sig
- S PSPROSIG=$P($G(^PSRX(RXNN,"SIG")),"^",2) K FSIG,BSIG D
- .I PSPROSIG D FSIG^PSOUTLA("R",RXNN,80) Q
- .D EN2^PSOUTLA1(RXNN,80) F GGGGG=0:0 S GGGGG=$O(BSIG(GGGGG)) Q:'GGGGG S FSIG(GGGGG)=BSIG(GGGGG)
- K PSPROSIG,GGGGG,BSIG Q
- PEND ;include pending orders in profile
- N PSPCOUNT,PSPPEND,ZXXX,PSPSTAT,FSIGZZ,PZZDRUG,PSSODRUG,PZXZERO,PPPPP,GGGGG
- S PSPCOUNT=1,PSPPEND="" F PPPPP=0:0 S PPPPP=$O(^PS(52.41,"P",DFN,PPPPP)) Q:'PPPPP S PSPSTAT=$P($G(^PS(52.41,PPPPP,0)),"^",3) I PSPSTAT="NW"!(PSPSTAT="HD")!(PSPSTAT="RNW") S PSPPEND(PSPCOUNT)=PPPPP,PSPCOUNT=PSPCOUNT+1
- Q:'$O(PSPPEND(0))
- F ZXXX=0:0 S ZXXX=$O(PSPPEND(ZXXX)) Q:'ZXXX S PZXZERO=$G(^PS(52.41,PSPPEND(ZXXX),0)) D:$P(PZXZERO,"^")
- .S PZZDRUG=$P(PZXZERO,"^",9),PZZODRUG=$P(PZXZERO,"^",8) Q:'PZZDRUG Q:'PZZODRUG
- .S PEND="P"_CS_$S(PZZDRUG:$P($G(^PSDRUG(+PZZDRUG,0)),"^"),1:$P($G(^PS(50.7,+PZZODRUG,0)),"^")_" "_$P($G(^PS(50.606,+$P($G(^(0)),"^",2),0)),"^"))
- .S PEND=PEND_CS_$E($P(PZXZERO,"^",6),4,5)_"/"_$E($P(PZXZERO,"^",6),6,7)_"/"_$E($P(PZXZERO,"^",6),2,3)
- . K DIC,X,Y S DIC="^VA(200,",DIC(0)="N,Z",X=+$P(PZXZERO,"^",5) D ^DIC
- .S PEND=PEND_CS_$P(PZXZERO,"^",10)_CS_$P(PZXZERO,"^",11)_CS_$S(+Y:$P(Y,"^",2),1:"")
- .D FSIG^PSOUTLA("P",PSPPEND(ZXXX),100) S PEND=PEND_CS_$G(FSIG(1)) F FSIGZZ=1:0 S FSIGZZ=$O(FSIG(FSIGZZ)) Q:'FSIGZZ S PEND=PEND_CS_$G(FSIG(FSIGZZ))
- S:$D(PEND) ^TMP("PSO",$J,PSI,CNT)=PEND
- S CNT=CNT+1
- Q
- ;
- START2 ;build NTE for drug interactions
- K PSOSERV
- S RX=IRXN,RXY=^PSRX(RX,0)
- I $D(^PS(52.4,RX,0)) S SCRIPT=$P(^PS(52.4,RX,0),"^",10),SEV=$P(^PS(52.4,RX,0),"^",9) F X=1:1 S RXX(X)=$P(SCRIPT,",",X),SEV(X)=$P(SEV,",",X) Q:RXX(X)="" D
- .S SER=$P(^PS(56,SEV(X),0),"^",4) S:$G(SER)=1 PSOSERV=1
- .S DIRX=$P($G(^PSRX(RXX(X),0)),"^"),TYP=$S(SER=1:"CRITICAL",SER=2:"SIGNIFICANT",1:"UNKNOWN")
- .S DRG=$P(^PSDRUG($P(^PSRX(RXX(X),0),"^",6),0),"^")
- .S:X=1 NTE5=DIRX_CS_TYP_CS_DRG
- .S:X>1 NTE5=RS_DIRX_CS_TYP_CS_DRG
- I '$D(^PS(52.4,RX,0)),$D(^PSRX(RX,"DRI")) S SCRIPT=$P(^PSRX(RX,"DRI"),"^",2),SEV=$P(^PSRX(RX,"DRI"),"^") F X=1:1 S RXX(X)=$P(SCRIPT,",",X),SEV(X)=$P(SEV,",",X) Q:RXX(X)="" D
- .S SER=$P(^PS(56,SEV(X),0),"^",4)
- .S DIRX=$P($G(^PSRX(RXX(X),0)),"^"),TYP=$S(SER=1:"CRITICAL",SER=2:"SIGNIFICANT",1:"UNKNOWN")
- .S DRG=$P(^PSDRUG($P(^PSRX(RXX(X),0),"^",6),0),"^")
- .S:X=1 NTE5=DIRX_CS_TYP_CS_DRG
- .S:X>1 NTE5=RS_DIRX_CS_TYP_CS_DRG
- S NTE5=NTE5_CS_$S('$G(PSOSERV):"MAY REQUIRE",1:"REQUIRES")_$S('$G(PSOSERV):" REVIEWING BY A PHARMACIST",1:" INTERVENTION BY A PHARMACIST")
- K SER,SCRIPT,DIRX,TYP,DRG,SEV,RXX,RX,RXY
- Q
- START3 ;build NTE for drug allergy warning label ;PSO*198
- Q:'$G(DAW)
- S NTE6="NTE"_FS_6_FS_FS
- I '$G(DIN) D
- . S DARX=$P(^PSRX(IRXN,0),"^"),DRG=$P(^PSDRUG(IDGN,0),"^")
- . S NTE6=NTE6_DARX_CS_DRG
- I $G(DIN) D
- . S DARX=$P(^PSRX(IRXN,0),"^"),DRG=$P(^PSDRUG(IDGN,0),"^") D
- . . S NTE6=NTE6_DARX_CS_DRG
- . . F XY=1:1 S INGRE=ING(XY) S:XY=1 NTE6=NTE6_CS_INGRE S:XY>1 NTE6=NTE6_RS_INGRE Q:'INGRE
- K DARX,DRG,XY,INGRE
- Q
- ;PSO*198
- SPACE(PLN,CLN) ;check if a space should be inserted between lines of text
- ; Input: PLN - previous line of text
- ; CLN - current line of text to be appended to previous
- ; function return: 0 - do not insert space
- ; 1 - insert space
- ;
- ;quit 0, on cases where a space should NOT be inserted else assume 1
- ;
- N TSTP,TSTC,PCHR2,CCHR2 ; QUIT 0 CASES BELOW
- Q:PLN="" 0 ;no previous line, ignore
- Q:$E(PLN,$L(PLN))=" " 0 ;prev line ends in " "
- Q:$E(CLN,1)=" " 0 ;curr line begins in " "
- S PCHR2=$E(PLN,$L(PLN)-1,$L(PLN)) ;last 2 char of prev line
- S CCHR2=$E(CLN,1,2) ;first 2 char of curr line
- Q:PCHR2?1A1"/" 0 ;the prev & curr lines
- Q:CCHR2?1"/"1A 0 ; split, ex: "and/or"
- Q:PCHR2?1A1"-" 0 ;the prev & curr lines
- Q:CCHR2?1"-"1A 0 ; split ex: "15-25 degrees"
- S TSTP=$TR(PCHR2,"abcdefghijklmnoqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
- S TSTC=$TR(CCHR2,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
- S TSTP=TSTP_TSTC
- Q:TSTP="E.G." 0 ;lines are splitting "e.g."
- Q:TSTP="I.E." 0 ;lines are splitting "i.e."
- ;
- Q 1
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOHLDS3 7196 printed Feb 18, 2025@23:56:14 Page 2
- PSOHLDS3 ;BHAM ISC/SAB,LC,PWC - BUILD PROFILE FOR AUTOMATED INTERFACE ;4/13/05 1:53pm
- +1 ;;7.0;OUTPATIENT PHARMACY;**156,198**;DEC 1997
- +2 ;reference to PSDRUG suppoprted by DBIA # 221
- +3 ;reference to PS(50.606 supported by DBIA # 2174
- +4 ;reference to PS(50.7 supported by DBIA #2223
- +5 ;reference to PS(55 supported by DBIA # 2228
- +6 ;reference to PS(56 supported by DBIA # 2229
- +7 ;
- +8 ;PSO*198 add check to insert spaces into PMI segments, also add
- +9 ; "NTE|6||" to beginning of NTE6 segment
- +10 ;
- START ;build profile for the NTE4 segment
- +1 if '$DATA(DFN)
- QUIT
- +2 NEW II
- KILL ^TMP($JOB,"PRF")
- +3 SET PSODFN=DFN
- IF '$DATA(PSODTCUT)
- DO CUTDATE^PSOFUNC
- +4 if '$DATA(Z)
- SET Z=1
- if '$DATA(NEW1)
- SET (NEW1,NEW11)="^"
- SET %DT=""
- SET X="T"
- DO ^%DT
- SET DT1=Y
- SET X1=DT1
- SET X2=-365
- DO C^%DTC
- SET EXPS=X
- SET X1=DT1
- SET X2=-182
- DO C^%DTC
- SET EXP=X
- +5 FOR RXX=0:0
- SET RXX=$ORDER(^PS(55,DFN,"P",RXX))
- if 'RXX
- QUIT
- SET RXNN=+^(RXX,0)
- IF $DATA(^PSRX(RXNN,0))
- IF $PIECE($GET(^("STA")),"^")'=13
- SET RXPX=^PSRX(RXNN,0)
- SET $PIECE(RXPX,"^",15)=$PIECE($GET(^("STA")),"^")
- SET RXPX2=^(2)
- DO CHK
- +6 IF '$DATA(^TMP($JOB,"PRF"))
- GOTO PPP
- +7 ;
- SD SET CNT=1
- FOR SD="A","C","S"
- IF $DATA(^TMP($JOB,"PRF",SD))
- SET DRNME=""
- DO DRNME
- PPP DO PEND
- +1 KILL ^TMP($JOB,"PRF")
- +2 KILL A,B,DRNME,DRP,EXP,EXPS,I,II,ISSD,J,LINE,LN,MESS,MJK,NEW1,NEW11,PHYS,POP,PQTY,TTTT,RFL,RFS,RXF,RXNN,RXPX,RXPX2,RXPNO,RXX
- +3 KILL SD,SIG,STA,X,X1,X2,Y,Z,CNT,PEND,PSODTCUT,PSOPRPAS,PZZODRUG,RFDATE
- +4 QUIT
- DRNME SET DRNME=$ORDER(^TMP($JOB,"PRF",SD,DRNME))
- if DRNME=""
- QUIT
- DO ISSD
- GOTO DRNME
- +1 ;
- ISSD FOR ISSD=0:0
- SET ISSD=$ORDER(^TMP($JOB,"PRF",SD,DRNME,ISSD))
- if 'ISSD
- QUIT
- SET RXPNO=""
- DO RXPNO
- +1 QUIT
- RXPNO SET RXPNO=$ORDER(^TMP($JOB,"PRF",SD,DRNME,ISSD,RXPNO))
- if RXPNO=""
- QUIT
- SET RXNN=^(RXPNO)
- IF $DATA(^PSRX(RXNN,0))
- SET RXPX=^(0)
- SET RXPX2=^(2)
- DO PRT
- GOTO RXPNO
- +1 ;
- CHK if PSODTCUT>$PIECE(RXPX2,"^",6)
- QUIT
- +1 IF $PIECE(^PSRX(RXNN,"STA"),"^")=12
- SET II=RXNN
- DO LAST^PSORFL
- if PSODTCUT>RFDATE
- QUIT
- +2 IF $PIECE(RXPX,"^",3)=7!($PIECE(RXPX,"^",3)=8)&('PSOPRPAS)
- QUIT
- +3 SET J="^"_RXNN_"^"
- if (NEW1[J)!(NEW11[J)
- QUIT
- if $PIECE(RXPX,"^",13)<EXPS
- QUIT
- SET RXPNO=$PIECE(RXPX,"^")
- SET ISSD=$PIECE(RXPX,"^",13)
- +4 if '$DATA(^PSDRUG($PIECE(RXPX,"^",6),0))
- QUIT
- SET DRP=^(0)
- SET SD=$SELECT($PIECE(DRP,"^",3)["S":"S",$PIECE(RXPX,"^",15)=12:"C",1:"A")
- SET DRNME=$PIECE(DRP,"^")
- SET ^TMP($JOB,"PRF",SD,DRNME,ISSD,RXPNO)=RXNN
- +5 QUIT
- PRT SET RFS=$PIECE(RXPX,"^",9)
- SET PQTY=$PIECE(RXPX,"^",7)
- +1 KILL DIC,X,Y
- SET DIC="^VA(200,"
- SET DIC(0)="N,Z"
- SET X=$PIECE(RXPX,"^",4)
- DO ^DIC
- +2 SET PHYS=$SELECT(+Y:$PIECE(Y,"^",2),1:"UNKNOWN")
- SET II=RXNN
- DO LAST^PSORFL
- SET RXF=0
- FOR MJK=0:0
- SET MJK=$ORDER(^PSRX(RXNN,1,MJK))
- if 'MJK
- QUIT
- SET RXF=RXF+1
- +3 SET STA=$SELECT($PIECE(^PSRX(RXNN,"STA"),"^")=14:"DC",$PIECE(^PSRX(RXNN,"STA"),"^")=15:"DE",$PIECE(^PSRX(RXNN,"STA"),"^")=16:"PH",1:$EXTRACT("ANRHPS ECD",(1+$PIECE(^PSRX(RXNN,"STA"),"^"))))
- SET STA=$SELECT(DT1>$PIECE(RXPX2,"^",6):"E",1:STA)
- +4 DO SIG
- SET FSIG=$ORDER(FSIG(""),-1)
- +5 SET ^TMP("PSO",$JOB,PSI)="NTE"_FS_4_FS_FS
- SET NTE4=1
- +6 SET ^TMP("PSO",$JOB,PSI,CNT)=SD_CS_RXPNO_CS_DRNME_CS_$EXTRACT(ISSD,4,5)_"/"_$EXTRACT(ISSD,6,7)
- +7 SET ^TMP("PSO",$JOB,PSI,CNT)=^TMP("PSO",$JOB,PSI,CNT)_CS_$EXTRACT(RFL,1,5)_CS_RFS_CS_RXF_CS_PQTY_CS_STA_CS_$EXTRACT(PHYS,1,20)_CS_$SELECT($GET(FSIG)'="":FSIG,1:"""""")_FS_"Profile Information"
- +8 SET CNT=CNT+1
- +9 QUIT
- SIG ;Format Sig
- +1 SET PSPROSIG=$PIECE($GET(^PSRX(RXNN,"SIG")),"^",2)
- KILL FSIG,BSIG
- Begin DoDot:1
- +2 IF PSPROSIG
- DO FSIG^PSOUTLA("R",RXNN,80)
- QUIT
- +3 DO EN2^PSOUTLA1(RXNN,80)
- FOR GGGGG=0:0
- SET GGGGG=$ORDER(BSIG(GGGGG))
- if 'GGGGG
- QUIT
- SET FSIG(GGGGG)=BSIG(GGGGG)
- End DoDot:1
- +4 KILL PSPROSIG,GGGGG,BSIG
- QUIT
- PEND ;include pending orders in profile
- +1 NEW PSPCOUNT,PSPPEND,ZXXX,PSPSTAT,FSIGZZ,PZZDRUG,PSSODRUG,PZXZERO,PPPPP,GGGGG
- +2 SET PSPCOUNT=1
- SET PSPPEND=""
- FOR PPPPP=0:0
- SET PPPPP=$ORDER(^PS(52.41,"P",DFN,PPPPP))
- if 'PPPPP
- QUIT
- SET PSPSTAT=$PIECE($GET(^PS(52.41,PPPPP,0)),"^",3)
- IF PSPSTAT="NW"!(PSPSTAT="HD")!(PSPSTAT="RNW")
- SET PSPPEND(PSPCOUNT)=PPPPP
- SET PSPCOUNT=PSPCOUNT+1
- +3 if '$ORDER(PSPPEND(0))
- QUIT
- +4 FOR ZXXX=0:0
- SET ZXXX=$ORDER(PSPPEND(ZXXX))
- if 'ZXXX
- QUIT
- SET PZXZERO=$GET(^PS(52.41,PSPPEND(ZXXX),0))
- if $PIECE(PZXZERO,"^")
- Begin DoDot:1
- +5 SET PZZDRUG=$PIECE(PZXZERO,"^",9)
- SET PZZODRUG=$PIECE(PZXZERO,"^",8)
- if 'PZZDRUG
- QUIT
- if 'PZZODRUG
- QUIT
- +6 SET PEND="P"_CS_$SELECT(PZZDRUG:$PIECE($GET(^PSDRUG(+PZZDRUG,0)),"^"),1:$PIECE($GET(^PS(50.7,+PZZODRUG,0)),"^")_" "_$PIECE($GET(^PS(50.606,+$PIECE($GET(^(0)),"^",2),0)),"^"))
- +7 SET PEND=PEND_CS_$EXTRACT($PIECE(PZXZERO,"^",6),4,5)_"/"_$EXTRACT($PIECE(PZXZERO,"^",6),6,7)_"/"_$EXTRACT($PIECE(PZXZERO,"^",6),2,3)
- +8 KILL DIC,X,Y
- SET DIC="^VA(200,"
- SET DIC(0)="N,Z"
- SET X=+$PIECE(PZXZERO,"^",5)
- DO ^DIC
- +9 SET PEND=PEND_CS_$PIECE(PZXZERO,"^",10)_CS_$PIECE(PZXZERO,"^",11)_CS_$SELECT(+Y:$PIECE(Y,"^",2),1:"")
- +10 DO FSIG^PSOUTLA("P",PSPPEND(ZXXX),100)
- SET PEND=PEND_CS_$GET(FSIG(1))
- FOR FSIGZZ=1:0
- SET FSIGZZ=$ORDER(FSIG(FSIGZZ))
- if 'FSIGZZ
- QUIT
- SET PEND=PEND_CS_$GET(FSIG(FSIGZZ))
- End DoDot:1
- +11 if $DATA(PEND)
- SET ^TMP("PSO",$JOB,PSI,CNT)=PEND
- +12 SET CNT=CNT+1
- +13 QUIT
- +14 ;
- START2 ;build NTE for drug interactions
- +1 KILL PSOSERV
- +2 SET RX=IRXN
- SET RXY=^PSRX(RX,0)
- +3 IF $DATA(^PS(52.4,RX,0))
- SET SCRIPT=$PIECE(^PS(52.4,RX,0),"^",10)
- SET SEV=$PIECE(^PS(52.4,RX,0),"^",9)
- FOR X=1:1
- SET RXX(X)=$PIECE(SCRIPT,",",X)
- SET SEV(X)=$PIECE(SEV,",",X)
- if RXX(X)=""
- QUIT
- Begin DoDot:1
- +4 SET SER=$PIECE(^PS(56,SEV(X),0),"^",4)
- if $GET(SER)=1
- SET PSOSERV=1
- +5 SET DIRX=$PIECE($GET(^PSRX(RXX(X),0)),"^")
- SET TYP=$SELECT(SER=1:"CRITICAL",SER=2:"SIGNIFICANT",1:"UNKNOWN")
- +6 SET DRG=$PIECE(^PSDRUG($PIECE(^PSRX(RXX(X),0),"^",6),0),"^")
- +7 if X=1
- SET NTE5=DIRX_CS_TYP_CS_DRG
- +8 if X>1
- SET NTE5=RS_DIRX_CS_TYP_CS_DRG
- End DoDot:1
- +9 IF '$DATA(^PS(52.4,RX,0))
- IF $DATA(^PSRX(RX,"DRI"))
- SET SCRIPT=$PIECE(^PSRX(RX,"DRI"),"^",2)
- SET SEV=$PIECE(^PSRX(RX,"DRI"),"^")
- FOR X=1:1
- SET RXX(X)=$PIECE(SCRIPT,",",X)
- SET SEV(X)=$PIECE(SEV,",",X)
- if RXX(X)=""
- QUIT
- Begin DoDot:1
- +10 SET SER=$PIECE(^PS(56,SEV(X),0),"^",4)
- +11 SET DIRX=$PIECE($GET(^PSRX(RXX(X),0)),"^")
- SET TYP=$SELECT(SER=1:"CRITICAL",SER=2:"SIGNIFICANT",1:"UNKNOWN")
- +12 SET DRG=$PIECE(^PSDRUG($PIECE(^PSRX(RXX(X),0),"^",6),0),"^")
- +13 if X=1
- SET NTE5=DIRX_CS_TYP_CS_DRG
- +14 if X>1
- SET NTE5=RS_DIRX_CS_TYP_CS_DRG
- End DoDot:1
- +15 SET NTE5=NTE5_CS_$SELECT('$GET(PSOSERV):"MAY REQUIRE",1:"REQUIRES")_$SELECT('$GET(PSOSERV):" REVIEWING BY A PHARMACIST",1:" INTERVENTION BY A PHARMACIST")
- +16 KILL SER,SCRIPT,DIRX,TYP,DRG,SEV,RXX,RX,RXY
- +17 QUIT
- START3 ;build NTE for drug allergy warning label ;PSO*198
- +1 if '$GET(DAW)
- QUIT
- +2 SET NTE6="NTE"_FS_6_FS_FS
- +3 IF '$GET(DIN)
- Begin DoDot:1
- +4 SET DARX=$PIECE(^PSRX(IRXN,0),"^")
- SET DRG=$PIECE(^PSDRUG(IDGN,0),"^")
- +5 SET NTE6=NTE6_DARX_CS_DRG
- End DoDot:1
- +6 IF $GET(DIN)
- Begin DoDot:1
- +7 SET DARX=$PIECE(^PSRX(IRXN,0),"^")
- SET DRG=$PIECE(^PSDRUG(IDGN,0),"^")
- Begin DoDot:2
- +8 SET NTE6=NTE6_DARX_CS_DRG
- +9 FOR XY=1:1
- SET INGRE=ING(XY)
- if XY=1
- SET NTE6=NTE6_CS_INGRE
- if XY>1
- SET NTE6=NTE6_RS_INGRE
- if 'INGRE
- QUIT
- End DoDot:2
- End DoDot:1
- +10 KILL DARX,DRG,XY,INGRE
- +11 QUIT
- +12 ;PSO*198
- SPACE(PLN,CLN) ;check if a space should be inserted between lines of text
- +1 ; Input: PLN - previous line of text
- +2 ; CLN - current line of text to be appended to previous
- +3 ; function return: 0 - do not insert space
- +4 ; 1 - insert space
- +5 ;
- +6 ;quit 0, on cases where a space should NOT be inserted else assume 1
- +7 ;
- +8 ; QUIT 0 CASES BELOW
- NEW TSTP,TSTC,PCHR2,CCHR2
- +9 ;no previous line, ignore
- if PLN=""
- QUIT 0
- +10 ;prev line ends in " "
- if $EXTRACT(PLN,$LENGTH(PLN))=" "
- QUIT 0
- +11 ;curr line begins in " "
- if $EXTRACT(CLN,1)=" "
- QUIT 0
- +12 ;last 2 char of prev line
- SET PCHR2=$EXTRACT(PLN,$LENGTH(PLN)-1,$LENGTH(PLN))
- +13 ;first 2 char of curr line
- SET CCHR2=$EXTRACT(CLN,1,2)
- +14 ;the prev & curr lines
- if PCHR2?1A1"/"
- QUIT 0
- +15 ; split, ex: "and/or"
- if CCHR2?1"/"1A
- QUIT 0
- +16 ;the prev & curr lines
- if PCHR2?1A1"-"
- QUIT 0
- +17 ; split ex: "15-25 degrees"
- if CCHR2?1"-"1A
- QUIT 0
- +18 SET TSTP=$TRANSLATE(PCHR2,"abcdefghijklmnoqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
- +19 SET TSTC=$TRANSLATE(CCHR2,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
- +20 SET TSTP=TSTP_TSTC
- +21 ;lines are splitting "e.g."
- if TSTP="E.G."
- QUIT 0
- +22 ;lines are splitting "i.e."
- if TSTP="I.E."
- QUIT 0
- +23 ;
- +24 QUIT 1