| 1 | PSOSIGNO ;BHAM ISC/RTR-Check new Sig for Route and Schedule ; 10/10/96 | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;;DEC 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | ;Pass in IEN from Pending File, and New Sig | 
|---|
| 5 | ;Returned   PSOSIGFL=0  no new order (common Routes and Schedules) | 
|---|
| 6 | ;           PSOSIGFL=1  new order (no Route to having route) or | 
|---|
| 7 | ;                                 (no Schedule to having schedule) or | 
|---|
| 8 | ;                                 (visa versa, or discrepency) | 
|---|
| 9 | ; | 
|---|
| 10 | ;Also returned are arrays with Original and New Routes & Schedules: | 
|---|
| 11 | ; | 
|---|
| 12 | ; PSOMDRTE array (original route)      PSOMDRTE(1)="ORAL" | 
|---|
| 13 | ; | 
|---|
| 14 | ; PSONEWMD array (new routes)          PSONEWMD(1)="ORAL" | 
|---|
| 15 | ;                                      PSONEWMD(22)="BOTH EYES" | 
|---|
| 16 | ; | 
|---|
| 17 | ; PSOSCH array (original schedules)    PSOSCH("Q12H")="" | 
|---|
| 18 | ;                                      PSOSCH("Q4H")="" | 
|---|
| 19 | ; | 
|---|
| 20 | ; PSONEWSD array (new schedules)       PSONEWSD("Q4H")="" | 
|---|
| 21 | ;                                      PSONEWSD("Q8H")="" | 
|---|
| 22 | ; | 
|---|
| 23 | EN(PSPENIEN,PSPENSIG) ; | 
|---|
| 24 | K PSONEWMD,PSOMDRTE,PSOSCH,PSONEWSD N AA,GGG,PSONULL,XXX,XXXX,ZZZZ | 
|---|
| 25 | ;S PSOSIGFL=0 | 
|---|
| 26 | I $P($G(^PS(52.41,PSPENIEN,0)),"^",15),$P($G(^PS(51.2,+$P(^(0),"^",15),0)),"^")'="" S PSOMDRTE($P(^PS(52.41,PSPENIEN,0),"^",15))=$P(^PS(51.2,+$P(^(0),"^",15),0),"^") | 
|---|
| 27 | F ZZZZ=0:0 S ZZZZ=$O(^PS(52.41,PSPENIEN,1,ZZZZ)) Q:'ZZZZ  I $P($G(^PS(52.41,PSPENIEN,1,ZZZZ,1)),"^")'="" S PSOSCH($P(^(1),"^"))="" | 
|---|
| 28 | F GGG=1:1:$L(PSPENSIG," ") S XXX=$P(PSPENSIG," ",GGG) D:XXX]"" | 
|---|
| 29 | .I $D(^PS(51,"A",XXX)) D | 
|---|
| 30 | ..S XXXX=$O(^PS(51,"B",XXX,0)) D:XXXX | 
|---|
| 31 | ...I $P($G(^PS(51,XXXX,0)),"^",5),$P($G(^PS(51.2,+$P(^(0),"^",5),0)),"^")'="" S PSONEWMD($P(^PS(51,XXXX,0),"^",5))=$P(^PS(51.2,$P(^(0),"^",5),0),"^") | 
|---|
| 32 | ...I $P($G(^PS(51,XXXX,0)),"^",6)'="" S PSONEWSD($P(^(0),"^",6))="" | 
|---|
| 33 | NEW ;Check for new order | 
|---|
| 34 | S PSONULL="" | 
|---|
| 35 | I $O(PSOMDRTE(0)),'$O(PSONEWMD(0)) S PSOSIGFL=1 | 
|---|
| 36 | Q:$G(PSOSIGFL)  I $O(PSONEWMD(0)),'$O(PSOMDRTE(0)) S PSOSIGFL=1 | 
|---|
| 37 | Q:$G(PSOSIGFL)  I $O(PSOSCH(PSONULL))="",$O(PSONEWSD(PSONULL))'="" S PSOSIGFL=1 | 
|---|
| 38 | Q:$G(PSOSIGFL)  I $O(PSONEWSD(PSONULL))="",$O(PSOSCH(PSONULL))'="" S PSOSIGFL=1 | 
|---|
| 39 | Q:$G(PSOSIGFL) | 
|---|
| 40 | ERROR ;check for error | 
|---|
| 41 | ;This is also a new order now | 
|---|
| 42 | F AA=0:0 S AA=$O(PSOMDRTE(AA)) Q:'AA!($G(PSOSIGFL))  I '$D(PSONEWMD(AA)) S PSOSIGFL=1 | 
|---|
| 43 | Q:$G(PSOSIGFL)  F AA=0:0 S AA=$O(PSONEWMD(AA)) Q:'AA!($G(PSOSIGFL))  I '$D(PSOMDRTE(AA)) S PSOSIGFL=1 | 
|---|
| 44 | Q:$G(PSOSIGFL)  S AA="" F  S AA=$O(PSOSCH(AA)) Q:AA=""!($G(PSOSIGFL))  I '$D(PSONEWSD(AA)) S PSOSIGFL=1 | 
|---|
| 45 | Q:$G(PSOSIGFL)  S AA="" F  S AA=$O(PSONEWSD(AA)) Q:AA=""!($G(PSOSIGFL))  I '$D(PSOSCH(AA)) S PSOSIGFL=1 | 
|---|
| 46 | Q | 
|---|
| 47 | ; | 
|---|
| 48 | EN1(PSRENIEN,PSRENSIG) ; | 
|---|
| 49 | ;Same as above, only for a new Sig from File 52 | 
|---|
| 50 | ;Pass in IEN from 52, and new Sig | 
|---|
| 51 | K PSONEWMD,PSOMDRTE,PSOSCH,PSONEWSD N AA,GGG,PSONULL,XXX,XXXX,ZZZZ | 
|---|
| 52 | ;S PSOSIGFL=0 | 
|---|
| 53 | F GGG=0:0 S GGG=$O(^PSRX(PSRENIEN,"MEDR",GGG)) Q:'GGG  S ZZZZ=+$P(^(GGG,0),"^") I ZZZZ,$P($G(^PS(51.2,ZZZZ,0)),"^")'="" S PSOMDRTE(ZZZZ)=$P(^(0),"^") | 
|---|
| 54 | F ZZZZ=0:0 S ZZZZ=$O(^PSRX(PSRENIEN,"SCH",ZZZZ)) Q:'ZZZZ  I $P(^(ZZZZ,0),"^")'="" S PSOSCH($P(^(0),"^"))="" | 
|---|
| 55 | F GGG=1:1:$L(PSRENSIG," ") S XXX=$P(PSRENSIG," ",GGG) D:XXX]"" | 
|---|
| 56 | .I $D(^PS(51,"A",XXX)) D | 
|---|
| 57 | ..S XXXX=$O(^PS(51,"B",XXX,0)) D:XXXX | 
|---|
| 58 | ...I $P($G(^PS(51,XXXX,0)),"^",5),$P($G(^PS(51.2,+$P(^(0),"^",5),0)),"^")'="" S PSONEWMD($P(^PS(51,XXXX,0),"^",5))=$P(^PS(51.2,$P(^(0),"^",5),0),"^") | 
|---|
| 59 | ...I $P($G(^PS(51,XXXX,0)),"^",6)'="" S PSONEWSD($P(^(0),"^",6))="" | 
|---|
| 60 | NEWOR ;Check for new order | 
|---|
| 61 | G NEW | 
|---|
| 62 | ; | 
|---|
| 63 | POP(PSOPOPRX) ;Pass in Internal Rx number, will populate Med Route and | 
|---|
| 64 | ;schedule fields from BACK door Sig | 
|---|
| 65 | N BACKSIG,BBB,LLL,LLLL,POPMD,POPSC | 
|---|
| 66 | Q:'$D(^PSRX(PSOPOPRX,0)) | 
|---|
| 67 | Q:$P($G(^PSRX(PSOPOPRX,"SIG")),"^")=""!($P($G(^("SIG")),"^",2)) | 
|---|
| 68 | S BACKSIG=$P(^PSRX(PSOPOPRX,"SIG"),"^") | 
|---|
| 69 | F BBB=1:1:$L(BACKSIG," ") S LLL=$P(BACKSIG," ",BBB) D:LLL]"" | 
|---|
| 70 | .I $D(^PS(51,"A",LLL)) D | 
|---|
| 71 | ..S LLLL=$O(^PS(51,"B",LLL,0)) D:LLLL | 
|---|
| 72 | ...I $P($G(^PS(51,LLLL,0)),"^",5),$P($G(^PS(51.2,+$P(^(0),"^",5),0)),"^")'="" S POPMD($P(^PS(51,LLLL,0),"^",5))="" | 
|---|
| 73 | ...I $P($G(^PS(51,LLLL,0)),"^",6)'="" S POPSC($P(^(0),"^",6))="" | 
|---|
| 74 | K ^PSRX(PSOPOPRX,"MEDR"),^PSRX(PSOPOPRX,"SCH") | 
|---|
| 75 | S LLLL=1 F LLL=0:0 S LLL=$O(POPMD(LLL)) Q:'LLL  S ^PSRX(PSOPOPRX,"MEDR",LLLL,0)=LLL,^PSRX(PSOPOPRX,"MEDR",0)="^52.037PA^"_LLLL_"^"_LLLL S LLLL=LLLL+1 | 
|---|
| 76 | S LLLL=1,LLL="" F  S LLL=$O(POPSC(LLL)) Q:LLL=""  S ^PSRX(PSOPOPRX,"SCH",LLLL,0)=LLL,^PSRX(PSOPOPRX,"SCH",0)="^52.038A^"_LLLL_"^"_LLLL S LLLL=LLLL+1 | 
|---|
| 77 | K PSOPOPRX | 
|---|
| 78 | Q | 
|---|