| [613] | 1 | PSS50B1 ;BIR/LDT - API FOR INFORMATION FROM FILE 50; 5 Sep 03 | 
|---|
|  | 2 | ;;1.0;PHARMACY DATA MANAGEMENT;**85**;9/30/97 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | LOOP ; | 
|---|
|  | 5 | N PSS50DD5,PSS50ER5,PSS501NX D FIELD^DID(50.1,1,"Z","POINTER","PSS50DD5","PSS50ER5") S PSS501NX=$G(PSS50DD5("POINTER")) | 
|---|
|  | 6 | N PSSENCT | 
|---|
|  | 7 | S PSSENCT=0 | 
|---|
|  | 8 | S PSS(1)=0 F  S PSS(1)=$O(^PSDRUG(PSS(1))) Q:'PSS(1)  D | 
|---|
|  | 9 | .I $P($G(^PSDRUG(PSS(1),0)),"^")="" Q | 
|---|
|  | 10 | .I $G(PSSFL),$P($G(^PSDRUG(PSS(1),"I")),"^"),$P($G(^("I")),"^")'>PSSFL Q | 
|---|
|  | 11 | .I $G(PSSRTOI)=1,'$P($G(^PSDRUG(PSS(1),2)),"^") Q | 
|---|
|  | 12 | .;Naked reference below refers to ^PSDRUG(PSS(1),2) | 
|---|
|  | 13 | .I $G(PSSPK)]"" N PSSZ5,PSSZ6 S PSSZ5=0 F PSSZ6=1:1:$L(PSSPK) Q:PSSZ5  I $P($G(^(2)),"^",3)[$E(PSSPK,PSSZ6) S PSSZ5=1 | 
|---|
|  | 14 | .I $G(PSSPK)]"",'PSSZ5 Q | 
|---|
|  | 15 | .D SETSUB1^PSS50AQM(PSS(1)),SETSUB4^PSS50AQM(PSS(1)) | 
|---|
|  | 16 | .D SETINV,SETSYN2,SETIFC | 
|---|
|  | 17 | .S PSSENCT=PSSENCT+1 | 
|---|
|  | 18 | S ^TMP($J,LIST,0)=$S($G(PSSENCT):$G(PSSENCT),1:"-1^NO DATA FOUND") | 
|---|
|  | 19 | Q | 
|---|
|  | 20 | SETINV ; | 
|---|
|  | 21 | N PSSZNODE,PSS660,PSS6601 | 
|---|
|  | 22 | S PSSZNODE=$G(^PSDRUG(PSS(1),0)),PSS660=$G(^(660)),PSS6601=$G(^(660.1)) | 
|---|
|  | 23 | S ^TMP($J,LIST,+PSS(1),.01)=$P(PSSZNODE,"^") | 
|---|
|  | 24 | S ^TMP($J,LIST,"B",$P(PSSZNODE,"^"),+PSS(1))="" | 
|---|
|  | 25 | S ^TMP($J,LIST,+PSS(1),11)=$P(PSS660,"^") | 
|---|
|  | 26 | S ^TMP($J,LIST,+PSS(1),12)=$S($P(PSS660,"^",2):$P(PSS660,"^",2)_"^"_$P($G(^DIC(51.5,+$P(PSS660,"^",2),0)),"^")_"^"_$P($G(^(0)),"^",2),1:"") | 
|---|
|  | 27 | S ^TMP($J,LIST,+PSS(1),13)=$P(PSS660,"^",3) | 
|---|
|  | 28 | S ^TMP($J,LIST,+PSS(1),14)=$P(PSS660,"^",4) | 
|---|
|  | 29 | S ^TMP($J,LIST,+PSS(1),15)=$P(PSS660,"^",5) | 
|---|
|  | 30 | S ^TMP($J,LIST,+PSS(1),16)=$P(PSS660,"^",6) | 
|---|
|  | 31 | S ^TMP($J,LIST,+PSS(1),17)=$P(PSS660,"^",7) | 
|---|
|  | 32 | S ^TMP($J,LIST,+PSS(1),14.5)=$P(PSS660,"^",8) | 
|---|
|  | 33 | N Y S Y=$P(PSS660,"^",9) D | 
|---|
|  | 34 | .I Y S ^TMP($J,LIST,+PSS(1),17.1)=$G(Y) X ^DD("DD") S ^TMP($J,LIST,+PSS(1),17.1)=^TMP($J,LIST,+PSS(1),17.1)_"^"_$G(Y) Q | 
|---|
|  | 35 | .S ^TMP($J,LIST,+PSS(1),17.1)="" | 
|---|
|  | 36 | S ^TMP($J,LIST,+PSS(1),50)=$P(PSS6601,"^") | 
|---|
|  | 37 | Q | 
|---|
|  | 38 | SETSYN2 ; | 
|---|
|  | 39 | N PSS501C S PSS501C=0 | 
|---|
|  | 40 | I $O(^PSDRUG(PSS(1),1,0)) N PSS501,PSS501ND  D | 
|---|
|  | 41 | .F PSS501=0:0 S PSS501=$O(^PSDRUG(PSS(1),1,PSS501)) Q:'PSS501  D | 
|---|
|  | 42 | ..S PSS501ND=$G(^PSDRUG(PSS(1),1,PSS501,0)) I $P(PSS501ND,"^")'="" S PSS501C=PSS501C+1 D | 
|---|
|  | 43 | ...S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,.01)=$P(PSS501ND,"^") | 
|---|
|  | 44 | ...N PSS501NN S PSS501NN=$P(PSS501ND,"^",3)  D | 
|---|
|  | 45 | ....I PSS501NN'="",PSS501NX'="",PSS501NX[(PSS501NN_":") S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,1)=PSS501NN_"^"_$P($E(PSS501NX,$F(PSS501NX,(PSS501NN_":")),999),";") Q | 
|---|
|  | 46 | ....S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,1)="" | 
|---|
|  | 47 | ...S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,2)=$P(PSS501ND,"^",2) | 
|---|
|  | 48 | ...S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,400)=$P(PSS501ND,"^",4) | 
|---|
|  | 49 | ...S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,401)=$S($P(PSS501ND,"^",5):$P(PSS501ND,"^",5)_"^"_$P($G(^DIC(51.5,+$P(PSS501ND,"^",5),0)),"^")_"^"_$P($G(^(0)),"^",2),1:"") | 
|---|
|  | 50 | ...S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,402)=$P(PSS501ND,"^",6) | 
|---|
|  | 51 | ...S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,403)=$P(PSS501ND,"^",7) | 
|---|
|  | 52 | ...S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,404)=$P(PSS501ND,"^",8) | 
|---|
|  | 53 | ...S ^TMP($J,LIST,+PSS(1),"SYN",PSS501,405)=$P(PSS501ND,"^",9) | 
|---|
|  | 54 | S ^TMP($J,LIST,+PSS(1),"SYN",0)=$S(PSS501C:PSS501C,1:"-1^NO DATA FOUND") | 
|---|
|  | 55 | Q | 
|---|
|  | 56 | SETIFC ; | 
|---|
|  | 57 | N PSS441C S PSS441C=0 | 
|---|
|  | 58 | I $O(^PSDRUG(PSS(1),441,0)) N PSS441,PSS441ND  D | 
|---|
|  | 59 | .F PSS441=0:0 S PSS441=$O(^PSDRUG(PSS(1),441,PSS441)) Q:'PSS441  D | 
|---|
|  | 60 | ..S PSS441ND=$G(^PSDRUG(PSS(1),441,PSS441,0)) I $P(PSS441ND,"^")'="" S PSS441C=PSS441C+1 D | 
|---|
|  | 61 | ...S ^TMP($J,LIST,+PSS(1),"IFC",PSS441,.01)=$P(PSS441ND,"^") | 
|---|
|  | 62 | S ^TMP($J,LIST,+PSS(1),"IFC",0)=$S(PSS441C:PSS441C,1:"-1^NO DATA FOUND") | 
|---|
|  | 63 | Q | 
|---|
|  | 64 | ; | 
|---|
|  | 65 | AVSN ; | 
|---|
|  | 66 | ;PSSVAL - ITEM NUMBER sub-field (#.01) of the IFCAP ITEM NUMBER multiple of the DRUG file (#50) | 
|---|
|  | 67 | ;PSSFL - Inactive flag - "" - All entries | 
|---|
|  | 68 | ;                        FileMan Date - Only entries with no Inactive Date or an Inactive Date greater than this date. | 
|---|
|  | 69 | ;PSSPK - Application Package's Use - "" - All entries | 
|---|
|  | 70 | ;                                         Alphabetic codes that represent the DHCP packages that consider this drug to be | 
|---|
|  | 71 | ;                                         part of their formulary. | 
|---|
|  | 72 | ;LIST - Subscript of ^TMP array in the form ^TMP($J,LIST,Field Number where Field Number is the Field Number of the data | 
|---|
|  | 73 | ;       piece being returned. | 
|---|
|  | 74 | ;Returns zero node of 50 | 
|---|
|  | 75 | I $G(LIST)']"" Q | 
|---|
|  | 76 | K ^TMP($J,LIST) | 
|---|
|  | 77 | I +$G(PSSVAL)'>0 S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND" Q | 
|---|
|  | 78 | N PSS,CNT,PSSIEN  S (CNT,PSS)=0 F  S PSS=$O(^PSDRUG("AVSN",+PSSVAL,PSS)) Q:'PSS  D | 
|---|
|  | 79 | .N INODE,NODE2 S NODE2=$G(^PSDRUG(+PSS,2)),INODE=$G(^("I")) | 
|---|
|  | 80 | .I +$G(PSSFL)>0,+INODE>0,+INODE'>PSSFL Q | 
|---|
|  | 81 | .;Naked reference below refers to ^PSDRUG(+Y,2) | 
|---|
|  | 82 | .I $G(PSSPK)]"" N PSSZ5,PSSZ6 S PSSZ5=0 F PSSZ6=1:1:$L(PSSPK) Q:PSSZ5  I $P($G(^(2)),"^",3)[$E(PSSPK,PSSZ6) S PSSZ5=1 | 
|---|
|  | 83 | .I $G(PSSPK)]"",'PSSZ5 Q | 
|---|
|  | 84 | .K ^TMP($J,"PSS50") D GETS^DIQ(50,+PSS,".01;9*","IE","^TMP($J,""PSS50""") D | 
|---|
|  | 85 | ..S PSS(1)=0 F  S PSS(1)=$O(^TMP($J,"PSS50",50,PSS(1))) Q:'PSS(1)  D | 
|---|
|  | 86 | ...S ^TMP($J,LIST,+PSS(1),.01)=$G(^TMP($J,"PSS50",50,PSS(1),.01,"I")),CNT=CNT+1 | 
|---|
|  | 87 | ...S ^TMP($J,LIST,"AVSN",$G(^TMP($J,"PSS50",50,PSS(1),.01,"I")),+PSS(1))="",PSSIEN=+PSS(1) | 
|---|
|  | 88 | ..S (CNT(1),PSS(2))=0 F  S PSS(2)=$O(^TMP($J,"PSS50",50.1,PSS(2))) Q:'PSS(2)  D | 
|---|
|  | 89 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),.01)=$G(^TMP($J,"PSS50",50.1,PSS(2),.01,"I")),CNT(1)=CNT(1)+1 | 
|---|
|  | 90 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),2)=$G(^TMP($J,"PSS50",50.1,PSS(2),2,"I")) | 
|---|
|  | 91 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),1)=$S($G(^TMP($J,"PSS50",50.1,PSS(2),1,"I"))="":"",1:$G(^TMP($J,"PSS50",50.1,PSS(2),1,"I"))_"^"_$G(^TMP($J,"PSS50",50.1,PSS(2),1,"E"))) | 
|---|
|  | 92 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),400)=$G(^TMP($J,"PSS50",50.1,PSS(2),400,"I")) | 
|---|
|  | 93 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),401)=$S($G(^TMP($J,"PSS50",50.1,PSS(2),401,"I"))="":"",1:$G(^TMP($J,"PSS50",50.1,PSS(2),401,"I"))_"^"_$G(^TMP($J,"PSS50",50.1,PSS(2),401,"E"))) | 
|---|
|  | 94 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),402)=$G(^TMP($J,"PSS50",50.1,PSS(2),402,"I")) | 
|---|
|  | 95 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),403)=$G(^TMP($J,"PSS50",50.1,PSS(2),403,"I")) | 
|---|
|  | 96 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),404)=$G(^TMP($J,"PSS50",50.1,PSS(2),404,"I")) | 
|---|
|  | 97 | ...S ^TMP($J,LIST,+PSSIEN,"SYN",+PSS(2),405)=$G(^TMP($J,"PSS50",50.1,PSS(2),405,"I")) | 
|---|
|  | 98 | ..S ^TMP($J,LIST,+PSSIEN,"SYN",0)=$S(CNT(1)>0:CNT(1),1:"-1^NO DATA FOUND") | 
|---|
|  | 99 | S ^TMP($J,LIST,0)=$S(CNT>0:CNT,1:"-1^NO DATA FOUND") | 
|---|
|  | 100 | K ^TMP($J,"PSS50") | 
|---|
|  | 101 | Q | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | AQ1 ; | 
|---|
|  | 104 | ;PSSVAL - ITEM NUMBER sub-field (#.01) of the IFCAP ITEM NUMBER multiple of the DRUG file (#50) | 
|---|
|  | 105 | ;PSSFL - Inactive flag - "" - All entries | 
|---|
|  | 106 | ;                        FileMan Date - Only entries with no Inactive Date or an Inactive Date greater than this date. | 
|---|
|  | 107 | ;PSSPK - Application Package's Use - "" - All entries | 
|---|
|  | 108 | ;                                         Alphabetic codes that represent the DHCP packages that consider this drug to be | 
|---|
|  | 109 | ;                                         part of their formulary. | 
|---|
|  | 110 | ;LIST - Subscript of ^TMP array in the form ^TMP($J,LIST,Field Number where Field Number is the Field Number of the data | 
|---|
|  | 111 | ;       piece being returned. | 
|---|
|  | 112 | ;Returns zero node of 50 | 
|---|
|  | 113 | I $G(LIST)']"" Q | 
|---|
|  | 114 | K ^TMP($J,LIST) | 
|---|
|  | 115 | I $G(PSSVAL)']"" S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND" Q | 
|---|
|  | 116 | N PSS,CNT S (CNT,PSS)=0 F  S PSS=$O(^PSDRUG("AQ1",PSSVAL,PSS)) Q:'PSS  D | 
|---|
|  | 117 | .N INODE,NODE2,ZNODE S NODE2=$G(^PSDRUG(+PSS,2)),INODE=$G(^("I")),ZNODE=$G(^(0)) | 
|---|
|  | 118 | .I +$G(PSSFL)>0,+INODE>0,+INODE'>PSSFL Q | 
|---|
|  | 119 | .;Naked reference below refers to ^PSDRUG(+PSS,2) | 
|---|
|  | 120 | .I $G(PSSPK)]"" N PSSZ5,PSSZ6 S PSSZ5=0 F PSSZ6=1:1:$L(PSSPK) Q:PSSZ5  I $P($G(^(2)),"^",3)[$E(PSSPK,PSSZ6) S PSSZ5=1 | 
|---|
|  | 121 | .I $G(PSSPK)]"",'PSSZ5 Q | 
|---|
|  | 122 | .S ^TMP($J,LIST,+PSS,.01)=$P(ZNODE,"^"),CNT=CNT+1 | 
|---|
|  | 123 | .S ^TMP($J,LIST,"AQ1",$P(ZNODE,"^"),+PSS)="" | 
|---|
|  | 124 | S ^TMP($J,LIST,0)=$S(CNT>0:CNT,1:"-1^NO DATA FOUND") | 
|---|
|  | 125 | Q | 
|---|
|  | 126 | ; | 
|---|
|  | 127 | AIU ; | 
|---|
|  | 128 | ;PSSFT - NAME field (#.01) of the DRUG file (#50) | 
|---|
|  | 129 | ;PSSPK - Application Package's Use - "" - All entries | 
|---|
|  | 130 | ;                                         Alphabetic codes that represent the DHCP packages that consider this drug to be | 
|---|
|  | 131 | ;                                         part of their formulary. | 
|---|
|  | 132 | ;PSSFL - Inactive flag - "" - All entries | 
|---|
|  | 133 | ;                        FileMan Date - Only entries with no Inactive Date or an Inactive Date greater than this date. | 
|---|
|  | 134 | ;LIST - Subscript of ^TMP array in the form ^TMP($J,LIST,Field Number where Field Number is the Field Number of the data | 
|---|
|  | 135 | ;       piece being returned. | 
|---|
|  | 136 | ;Returns NAME field (#.01) of DRUG file (#50). | 
|---|
|  | 137 | I $G(LIST)']"" Q | 
|---|
|  | 138 | K ^TMP($J,LIST) | 
|---|
|  | 139 | I $G(PSSFT)']"" S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND" Q | 
|---|
|  | 140 | I $G(PSSPK)']"" S ^TMP($J,LIST,0)=-1_"^"_"NO DATA FOUND" Q | 
|---|
|  | 141 | N PSS,CNT S CNT=0,PSS="" F  S PSS=$O(^PSDRUG("AIU"_PSSPK,PSS)) Q:PSS=""  S PSS(1)=0 F  S PSS(1)=$O(^PSDRUG("AIU"_PSSPK,PSS,PSS(1))) Q:'PSS(1)  D | 
|---|
|  | 142 | .N INODE,NODE2,ZNODE S NODE2=$G(^PSDRUG(+PSS(1),2)),INODE=$G(^("I")),ZNODE=$G(^(0)) | 
|---|
|  | 143 | .I +$G(PSSFL)>0,+INODE>0,+INODE'>PSSFL Q | 
|---|
|  | 144 | .I $E(PSS,1,$L(PSSFT))'[PSSFT Q | 
|---|
|  | 145 | .S ^TMP($J,LIST,+PSS(1),.01)=$P(ZNODE,"^"),CNT=CNT+1 | 
|---|
|  | 146 | .S ^TMP($J,LIST,"AIU",$P(ZNODE,"^"),+PSS(1))="" | 
|---|
|  | 147 | S ^TMP($J,LIST,0)=$S(CNT>0:CNT,1:"-1^NO DATA FOUND") | 
|---|
|  | 148 | Q | 
|---|
|  | 149 | ; | 
|---|
|  | 150 | IU ; | 
|---|
|  | 151 | ;PSSFL - Inactive flag - "" - All entries | 
|---|
|  | 152 | ;                        FileMan Date - Only entries with no Inactive Date or an Inactive Date greater than this date. | 
|---|
|  | 153 | ;LIST - Subscript of ^TMP array in the form ^TMP($J,LIST,Field Number where Field Number is the Field Number of the data | 
|---|
|  | 154 | ;       piece being returned. | 
|---|
|  | 155 | ;Returns NAME field (#.01) of DRUG file (#50). | 
|---|
|  | 156 | I $G(LIST)']"" Q | 
|---|
|  | 157 | K ^TMP($J,LIST) | 
|---|
|  | 158 | N PSS,CNT | 
|---|
|  | 159 | S CNT=0,PSS="" F  S PSS=$O(^PSDRUG("IU",PSS)) Q:PSS=""  I PSS'["O"&(PSS'["U")&(PSS'["I")&(PSS'["N") S PSS(1)=0 F  S PSS(1)=$O(^PSDRUG("IU",PSS,PSS(1))) Q:'PSS(1)  D | 
|---|
|  | 160 | .N INODE,ZNODE S ZNODE=$G(^PSDRUG(+PSS(1),0)),INODE=$G(^("I")) | 
|---|
|  | 161 | .I +$G(PSSFL)>0,+INODE>0,+INODE'>PSSFL Q | 
|---|
|  | 162 | .S ^TMP($J,LIST,+PSS(1),.01)=$P(ZNODE,"^"),CNT=CNT+1 | 
|---|
|  | 163 | .S ^TMP($J,LIST,"IU",$P(ZNODE,"^"),+PSS(1))="" | 
|---|
|  | 164 | S ^TMP($J,LIST,0)=$S(CNT>0:CNT,1:"-1^NO DATA FOUND") | 
|---|
|  | 165 | Q | 
|---|