| 1 | PSONRXN ;IHS/DSD/JCM - GETS NEXT VALID RX NUMBER ;08/09/93 9:17
 | 
|---|
| 2 |  ;;7.0;OUTPATIENT PHARMACY;**5,25,166,268**;DEC 1997;Build 9
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;External reference to ^PSDRUG supported by DBIA 221
 | 
|---|
| 5 |  ;External reference to ^DIC supported by DBIA 10006
 | 
|---|
| 6 |  ;External reference to ^DIE supported by DBIA 10018
 | 
|---|
| 7 |  ;External reference to ^DIR supported by DBIA 10026
 | 
|---|
| 8 |  ;External reference to ^VALM1 supported by DBIA 10016
 | 
|---|
| 9 |  ;External reference to ^DPT( supported by DBIA 10035
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ; This routine asks for the next rx # if manually assigning rx#
 | 
|---|
| 12 |  ; and gets next rx# if auto numbering.
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ;-------------------------------------------------------------------
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | MANUAL ; Entry Point to ask user for new rx #
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  S PSONEW("DFLG")=0
 | 
|---|
| 19 |  K DIR S DIR(0)="52,.01O"
 | 
|---|
| 20 |  S DIR("A")="Select New Rx # for "_$S($G(PSORX("NAME"))]"":PSORX("NAME"),1:"")
 | 
|---|
| 21 |  I $G(PSONEW("RX #"))]"",'$G(COPY) S DIR("B")=PSONEW("RX #")
 | 
|---|
| 22 |  D DIR^PSODIR2 K DIR,DIC,DIE,DA
 | 
|---|
| 23 |  I X="" S PSONEW("QFLG")=1 G MANUALX
 | 
|---|
| 24 |  I "Pp"[Y K Y D ^PSODSPL G MANUAL
 | 
|---|
| 25 |  I "Rr"[Y K Y S (PSONEW("QFLG"),PSORX("DO REFILL"))=1 G MANUALX
 | 
|---|
| 26 |  I $G(PSODIR("DFLG"))=1 S (PSONEW("QFLG"),PSORX("QFLG"))=1 G MANUALX
 | 
|---|
| 27 |  G:$G(PSONEW("FIELD")) MANUALX
 | 
|---|
| 28 |  S PSOX=Y
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | CHECK ; Entry Point to check if valid new rx number
 | 
|---|
| 31 |  S:'$D(PSOX) PSOX=$G(PSONEW("RX #"))
 | 
|---|
| 32 |  S PSONRXN("ERR FLG")=0
 | 
|---|
| 33 |  S DIC="^PSRX(",DIC(0)="XZ",X=PSOX D ^DIC K DIC
 | 
|---|
| 34 |  I Y'<0 D  G MANUALX
 | 
|---|
| 35 |  . W $C(7),!!,?10,"Not a new prescription number!!!",!,"Rxn: ",Y(0,0),!,"Patient: ",$S($D(^DPT(+$P(Y(0),"^",2),0)):$P(^(0),"^"),1:"UNKNOWN"),!,"Drug: ",$S($D(^PSDRUG(+$P(Y(0),"^",6),0)):$P(^(0),"^"),1:"UNKNOWN")
 | 
|---|
| 36 |  . S PSONRXN("ID")=$P(Y(0),"^",13)
 | 
|---|
| 37 |  . I PSONRXN("ID") W !,"Issued: ",$E(PSONRXN("ID"),4,5),"-",$E(PSONRXN("ID"),6,7),"-",$E(PSONRXN("ID"),2,3)
 | 
|---|
| 38 |  . K PSONRXN("ID"),Y
 | 
|---|
| 39 |  . W:$G(PSODRUG("NAME")) !,"RX DELETED",!
 | 
|---|
| 40 |  . S PSONRXN("ERR FLG")=1
 | 
|---|
| 41 |  . I $G(PSOFIN)!($G(PSOFINFL)),'$G(PSOAC) W ! K DIR S DIR(0)="E",DIR("A")="Press Return to Continue" D ^DIR K DIR
 | 
|---|
| 42 |  . Q
 | 
|---|
| 43 |  L +^PSRX("B",PSOX):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) I '$T L -^PSRX("B",PSOX) D  G MANUALX
 | 
|---|
| 44 |  . W $C(7),?10,"Prescription Rx# "_PSOX_" already being processed."
 | 
|---|
| 45 |  . W:$G(PSODRUG("NAME")) !,"Rx Deleted",!
 | 
|---|
| 46 |  . S PSONRXN("ERR FLG")=1
 | 
|---|
| 47 |  . Q
 | 
|---|
| 48 |  S PSONEW("RX #")=PSOX
 | 
|---|
| 49 | MANUALX I $G(PSONRXN("ERR FLG"))=1 S (PSONEW("DFLG"),PSONEW("QFLG"))=1
 | 
|---|
| 50 |  K PSONRXN,X,Y,DIRUT,DTOUT,DUOUT,DIC,DIE,DR,PSOX,PSODIR,PSOX1
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | AUTO ; Entry point for getting next rx # if autonumbering
 | 
|---|
| 54 |  S PSONEW("QFLG")=0
 | 
|---|
| 55 |  S PSONRXN("TYPE")=$S('+$G(^PS(59,+PSOSITE,2)):8,PSODRUG("DEA")[2&(+$G(^PS(59,+PSOSITE,2))):3,1:8)
 | 
|---|
| 56 |  L +^PS(59,+PSOSITE,PSONRXN("TYPE")):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
 | 
|---|
| 57 |  S PSOX1=^PS(59,+PSOSITE,PSONRXN("TYPE")),PSONRXN("LO")=$P(PSOX1,"^")
 | 
|---|
| 58 |  S PSONRXN("HI")=$P(PSOX1,"^",2),PSOI=$P(PSOX1,"^",3),PSONEW("OLD LAST RX#",PSONRXN("TYPE"))=PSOI
 | 
|---|
| 59 |  S:PSOI<PSONRXN("LO") PSOI=PSONRXN("LO")
 | 
|---|
| 60 | LOOP2 F  S PSOI=PSOI+1 D:PSOI>PSONRXN("HI") FATAL Q:'$D(^PSRX("B",PSOI))!PSONEW("QFLG")
 | 
|---|
| 61 |  G:PSONEW("QFLG") AUTOX
 | 
|---|
| 62 |  K DUP L +^PSRX("B",PSOI):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) D  I $G(DUP) K DUP,I G LOOP2
 | 
|---|
| 63 |  .I $D(^PSRX("B",PSOI))!'$T L -^PSRX("B",PSOI) S DUP=1 Q
 | 
|---|
| 64 |  .F I=65:1:90 I $D(^PSRX("B",PSOI_$C(I))) L -^PSRX("B",PSOI) S DUP=1 Q
 | 
|---|
| 65 |  K DIC,DIE,DA,DUP,I
 | 
|---|
| 66 |  S DIE=59,DA=PSOSITE
 | 
|---|
| 67 |  S DR=$S(PSONRXN("TYPE")=8:"2003////"_PSOI,PSONRXN("TYPE")=3:"1002.1////"_PSOI,1:"2003////"_PSOI)
 | 
|---|
| 68 |  S PSONEW("RX #")=PSOI
 | 
|---|
| 69 |  D ^DIE K DIE,DIC,DR,DA
 | 
|---|
| 70 |  L -^PS(59,+PSOSITE,PSONRXN("TYPE"))
 | 
|---|
| 71 | AUTOX K PSOX1,PSONRXN,PSOI,X,Y
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 | FATAL ;error in autonum queue if necessary and quit
 | 
|---|
| 75 |  W !!,$C(7),"Fatal error in Autonumbering - No Numbers Left!",!,"See Application Package Coordinator!",!,$C(7)
 | 
|---|
| 76 |  S PSONEW("QFLG")=1 S DIR("A")="Enter RETURN to continue" D PAUSE^VALM1
 | 
|---|
| 77 |  Q
 | 
|---|