| 1 | PSODGAL ;BIR/LC-DRUG ALLERGY REACTION CHECKING ;08/09/95  02:22 | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**26,243**;DEC 1997;Build 22 | 
|---|
| 3 | ;External reference to ^GMRADPT supported by DBIA 10099 | 
|---|
| 4 | ;External reference to ORCHK^GMRAOR supported by DBIA 2378 | 
|---|
| 5 | ;External reference to $P(^GMR(120.8,LP,3),"^",3) supp. by DBIA 2214 | 
|---|
| 6 | ;External reference to ^PS(50.605 supported by DBIA 696 | 
|---|
| 7 | ;External reference to EN1^GMRAOR2 supported by DBIA 2422 | 
|---|
| 8 | ;External reference to GETDATA^GMRAOR supported by DBIA 4847 | 
|---|
| 9 | ;External reference to ^TMP("GMRAOC" supported by DBIA 4848 | 
|---|
| 10 | ;External reference to ^XUSEC("PSORPH" supported by DBIA 10076 | 
|---|
| 11 | CHK(DFN,TYP,PTR) ;matched to ndf | 
|---|
| 12 | K ^TMP("PSODAI",$J) S PSOACK=$$ORCHK^GMRAOR(DFN,TYP,PTR) D:$G(PSOACK)=1 | 
|---|
| 13 | .Q:$D(^XUSEC("PSORPH",DUZ)) | 
|---|
| 14 | .S ^TMP("PSODAI",$J,0)=1 | 
|---|
| 15 | .S I=0 F  S I=$O(GMRAING(I)) Q:'I  S ^TMP("PSODAI",$J,I,0)=GMRAING(I) | 
|---|
| 16 | D:$G(PSOACK)=1 DSPLY | 
|---|
| 17 | K PSOACK,GMRAING,I | 
|---|
| 18 | Q | 
|---|
| 19 | CHK1(DFN) ;not matched to ndf | 
|---|
| 20 | K ^TMP("PSODAI",$J) | 
|---|
| 21 | S GMRA="0^0^001" D ^GMRADPT F LP=0:0 S LP=$O(GMRAL(LP)) Q:'LP!($G(PSOACK))  D:$D(^GMR(120.8,LP,0)) | 
|---|
| 22 | .S:'$D(PSOACK) APTR=$P(^GMR(120.8,LP,0),"^",3) | 
|---|
| 23 | .I $P(APTR,";",2)="PSDRUG(",$P(APTR,";")=PSODRUG("IEN") S PSOACK=1 | 
|---|
| 24 | .Q:$D(^XUSEC("PSORPH",DUZ))  S:$G(PSOACK)=1 ^TMP("PSODAI",$J,0)=1 | 
|---|
| 25 | D:$G(PSOACK)=1 DSPLY | 
|---|
| 26 | K APTR,GMRA,GMRAL,LP,PSOACK | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | CLASS(DFN) ; | 
|---|
| 30 | N CPT,CLCHK,CT,AGNL,CC,GMRA,LEN | 
|---|
| 31 | S LEN=4 | 
|---|
| 32 | I $E(PSODRUG("VA CLASS"),1,4)="CN10" S LEN=5 ;look at 5 chars if ANALGESICS | 
|---|
| 33 | K ^TMP($J,"PSODRCLS") | 
|---|
| 34 | I $T(GETDATA^GMRAOR)]"" G CLASS2 ; CHECK FOR EXISTENCE OF NEW ENTRY POINT BEFORE USING | 
|---|
| 35 | S CLCHK="" | 
|---|
| 36 | S GMRA="0^0^111" D ^GMRADPT F CC=0:0 S CC=$O(GMRAL(CC)) Q:'CC  D | 
|---|
| 37 | .K AGNL D EN1^GMRAOR2(CC,"AGNL") | 
|---|
| 38 | .I $D(AGNL("V")) F CT=0:1 S CPT=$O(AGNL("V",CT)) Q:'CPT  I $E($P($G(AGNL("V",CPT)),"^"),1,LEN)=$E(PSODRUG("VA CLASS"),1,LEN) D | 
|---|
| 39 | ..S CLCHK=$G(CLCHK)+1,^TMP($J,"PSODRCLS",CLCHK)=$P($G(AGNL("V",CPT)),"^")_" "_$P($G(AGNL("V",CPT)),"^",2) | 
|---|
| 40 | G CLASSDSP | 
|---|
| 41 | CLASS2 ; | 
|---|
| 42 | N RET | 
|---|
| 43 | S RET=$$DRCL(DFN) | 
|---|
| 44 | I '$G(RET) Q | 
|---|
| 45 | S CLCHK="",CT="" F  S CT=$O(GMRADRCL(CT)) Q:CT=""  D | 
|---|
| 46 | .I $E(PSODRUG("VA CLASS"),1,LEN)=$E(CT,1,LEN) S CLCHK=$G(CLCHK)+1,^TMP($J,"PSODRCLS",CLCHK)=CT_" "_$P(GMRADRCL(CT),"^",2) | 
|---|
| 47 | CLASSDSP ; | 
|---|
| 48 | I '$D(^TMP($J,"PSODRCLS")) Q | 
|---|
| 49 | W $C(7),!,"A Drug-Allergy Reaction exists for this medication and/or class!",! | 
|---|
| 50 | W !,"Drug: "_PSODRUG("NAME") | 
|---|
| 51 | S CT="" F  S CT=$O(^TMP($J,"PSODRCLS",CT)) Q:CT=""  W !,"Drug Class: "_^TMP($J,"PSODRCLS",CT) | 
|---|
| 52 | K ^TMP($J,"PSODRCLS") | 
|---|
| 53 | S DIR("?",1)="Answer 'YES' if you DO want to enter a reaction for this medication," | 
|---|
| 54 | S DIR("?")="       'NO' if you DON'T want to enter a reaction for this medication," | 
|---|
| 55 | S DIR(0)="SA^1:YES;0:NO",DIR("A")="Do you want to Intervene? ",DIR("B")="Y" W ! D ^DIR | 
|---|
| 56 | I Y D ^PSORXI | 
|---|
| 57 | I '$G(Y) K DIR,DTOUT,DIRUT,DIROUT,DUOUT,Y Q | 
|---|
| 58 | Q | 
|---|
| 59 | DSPLY ; | 
|---|
| 60 | W $C(7),!,"A Drug-Allergy Reaction exists for this medication and/or class!",! | 
|---|
| 61 | I $D(^XUSEC("PSORPH",DUZ)) D | 
|---|
| 62 | .W !,"Drug: "_PSODRUG("NAME") I $O(GMRAING(0)) W !,?6,"Ingredients: " | 
|---|
| 63 | .S DIR("?",1)="Answer 'YES' if you DO want to enter a reaction for this medication," | 
|---|
| 64 | .S DIR("?")="       'NO' if you DON'T want to enter a reaction for this medication," | 
|---|
| 65 | .W ?19 S I=0 F  S I=$O(GMRAING(I)) Q:'I  W:$X+$L($G(GMRAING(I)))+2>IOM !?19 W $G(GMRAING(I))_", " | 
|---|
| 66 | .S DIR(0)="SA^1:YES;0:NO",DIR("A")="Do you want to Intervene? ",DIR("B")="Y" W ! D ^DIR | 
|---|
| 67 | .I 'Y K DIR,DTOUT,DIRUT,DIROUT,DUOUT,Y Q | 
|---|
| 68 | .I Y D ^PSORXI | 
|---|
| 69 | K DIR,DTOUT,DIRUT,DIROUT,DUOUT,Y | 
|---|
| 70 | Q | 
|---|
| 71 | ; | 
|---|
| 72 | DRCL(DFN) ; | 
|---|
| 73 | N RET | 
|---|
| 74 | S RET=0 | 
|---|
| 75 | K GMRADRCL | 
|---|
| 76 | D GETDATA^GMRAOR(DFN) | 
|---|
| 77 | Q:'$D(^TMP("GMRAOC",$J,"APC")) 0 | 
|---|
| 78 | N GMRACL | 
|---|
| 79 | S GMRACL="" F  S GMRACL=$O(^TMP("GMRAOC",$J,"APC",GMRACL)) Q:'$L(GMRACL)  D | 
|---|
| 80 | .N GMRANM,GMRALOC | 
|---|
| 81 | .S GMRALOC=^TMP("GMRAOC",$J,"APC",GMRACL) | 
|---|
| 82 | .S GMRANM=$P(^PS(50.605,+$O(^PS(50.605,"B",GMRACL,0)),0),U,2) | 
|---|
| 83 | .S GMRADRCL(GMRACL)=GMRACL_U_GMRANM_" ("_GMRALOC_")" | 
|---|
| 84 | .S RET=RET+1 | 
|---|
| 85 | K ^TMP("GMRAOC",$J) | 
|---|
| 86 | Q RET | 
|---|