| 1 | PSNCLEAN ;BIR/DMA-clean up ingredients and interactions ; 06 Oct 2006  10:26 AM | 
|---|
| 2 | ;;4.0; NATIONAL DRUG FILE;**117**; 3O Oct 98;Build 6 | 
|---|
| 3 | ; | 
|---|
| 4 | ;Reference to ^GMR(120.8 supported by DBIA# 2545 | 
|---|
| 5 | ; | 
|---|
| 6 | N DA,DIE,DIK,DR,J,LINE,NA,NEWDA,PSN,PSNDA,PSNI,PSNI1,PSNI1N,PSNI1P,PSNI2,PSNI2N,PSNI2P,PSNN,PSNK,PSNPAT,PSNX,X,XMDUZ,XMSUB,XMTEXT,XMY | 
|---|
| 7 | K ^TMP($J),^TMP("PSN",$J) | 
|---|
| 8 | INTER ;CHECK FOR NON-PRIMARIES | 
|---|
| 9 | S DA=0 F  S DA=$O(^PS(56,DA)) Q:'DA  S X=^(DA,0),PSNI1=$P(X,"^",2),PSNI2=$P(X,"^",3),PSNI1N=$P(^PS(50.416,PSNI1,0),"^",2),PSNI2N=$P(^PS(50.416,PSNI2,0),"^",2) D | 
|---|
| 10 | .I 'PSNI1N,'PSNI2N Q | 
|---|
| 11 | .S PSNI1P=$S('PSNI1N:PSNI1,1:PSNI1N),PSNI2P=$S('PSNI2N:PSNI2,1:PSNI2N) | 
|---|
| 12 | .I '$D(^PS(56,"AE",PSNI1P,PSNI2P)) D  Q | 
|---|
| 13 | ..;NO PRE-EXISTING INTERACTION - RENAME AND QUIT | 
|---|
| 14 | ..K PSN,PSNN S PSN($P(^PS(50.416,PSNI1P,0),"^"))="",PSN($P(^PS(50.416,PSNI2P,0),"^"))="",PSNN=$O(PSN(""))_"/"_$O(PSN($O(PSN("")))),^TMP($J,"RENAM",$P(X,"^")_"^"_PSNN)="",DIE="^PS(56,",DR=".01////"_PSNN D ^DIE | 
|---|
| 15 | ..K ^PS(56,"AI1",PSNI1,DA),^PS(56,"AI2",PSNI2,DA),^PS(56,"AE",PSNI1,PSNI2,DA),^PS(56,"AE",PSNI2,PSNI1,DA) S (^PS(56,"AI1",PSNI1P,DA),^PS(56,"AI2",PSNI2P,DA),^PS(56,"AE",PSNI1P,PSNI2P,DA),^PS(56,"AE",PSNI2P,PSNI1P,DA))="" | 
|---|
| 16 | ..S $P(^PS(56,DA,0),"^",2,3)=PSNI1P_"^"_PSNI2P | 
|---|
| 17 | .;PRE-EXISTING INTERACTIONS - LOG TO DELETE | 
|---|
| 18 | .S NEWDA=$QS($Q(^PS(56,"AE",PSNI1P,PSNI2P)),5) D | 
|---|
| 19 | ..S ^TMP($J,"DEL",$P(X,"^"))="",^TMP($J,"DELIEN",DA)=NEWDA | 
|---|
| 20 | ;NOW DELETE AND REPOINT | 
|---|
| 21 | S PSN=0 F  S PSN=$O(^TMP($J,"DELIEN",PSN)) Q:'PSN  S X=^PS(56,PSN,0),PSNI1=$P(X,"^",2),PSNI2=$P(X,"^",3),$P(^PS(56,PSN,0),"^",2,7)="" K ^PS(56,"AI1",PSNI1,PSN),^PS(56,"AI2",PSNI2,PSN),^PS(56,"AE",PSNI1,PSNI2,PSN),^PS(56,"AE",PSNI2,PSNI1,PSN) | 
|---|
| 22 | ;NOW THE APD | 
|---|
| 23 | S X="^PS(56,""APD"")" F  S X=$Q(@X) Q:$QS(X,2)'="APD"  I $D(^TMP($J,"DELIEN",$QS(X,5))) S NEWDA=^($QS(X,5)) K @X,^PS(56,"APD",$QS(X,4),$QS(X,3),$QS(X,5)) S (^PS(56,"APD",$QS(X,3),$QS(X,4),NEWDA),^PS(56,"APD",$QS(X,4),$QS(X,3),NEWDA))="" | 
|---|
| 24 | ;NOW THE 0 NODE | 
|---|
| 25 | S PSN=0 F  S PSN=$O(^TMP($J,"DELIEN",PSN)) Q:'PSN  S DIK="^PS(56,",DA=PSN D ^DIK | 
|---|
| 26 | ; | 
|---|
| 27 | I '$D(^TMP($J,"DEL")),'$D(^("RENAM")) D  G ALLER | 
|---|
| 28 | .F LINE=1:1 S X=$P($T(TEXT4+LINE),";",3,300) Q:X=""  S ^TMP("PSN",$J,LINE,0)=X | 
|---|
| 29 | F LINE=1:1 S X=$P($T(TEXT+LINE),";",3,300) Q:X=""  S ^TMP("PSN",$J,LINE,0)=X | 
|---|
| 30 | I '$D(^TMP($J,"RENAM")) S ^TMP("PSN",$J,LINE,0)=" ",^TMP("PSN",$J,LINE+1,0)="none found",LINE=LINE+2 | 
|---|
| 31 | S NA="" F  S NA=$O(^TMP($J,"RENAM",NA)) Q:NA=""  S ^TMP("PSN",$J,LINE,0)=$P(NA,"^")_" was changed to",^TMP("PSN",$J,LINE+1,0)="   "_$P(NA,"^",2),^TMP("PSN",$J,LINE+2,0)=" ",LINE=LINE+3 | 
|---|
| 32 | F J=1:1 S X=$P($T(TEXT2+J),";",3,300) Q:X=""  S ^TMP("PSN",$J,LINE,0)=X,LINE=LINE+1 | 
|---|
| 33 | I '$D(^TMP($J,"DEL")) S ^TMP("PSN",$J,LINE,0)="none found",LINE=LINE+1 | 
|---|
| 34 | S NA="" F  S NA=$O(^TMP($J,"DEL",NA)) Q:NA=""  S ^TMP("PSN",$J,LINE,0)=NA,LINE=LINE+1 | 
|---|
| 35 | ALLER ;now the allergies | 
|---|
| 36 | I ^XMB("NETNAME")["CMOP" G SENDIT | 
|---|
| 37 | ;skip allergies for CMOPs | 
|---|
| 38 | K ^TMP($J) | 
|---|
| 39 | S PSNDA=0 F  S PSNDA=$O(^GMR(120.8,PSNDA)) Q:'PSNDA  I $D(^(PSNDA,0)) S PSNPAT=+^(0) I $D(^DPT(PSNPAT,0)) S PSNPAT=$P(^(0),"^"),PSNI=$P(^GMR(120.8,PSNDA,0),"^",3) D | 
|---|
| 40 | .I PSNI["PS(50.416",$D(^PS(50.416,+PSNI,0)),$P(^(0),"^",2) S PSNI=$P(^(0),"^",2)_";PS(50.416,",$P(^GMR(120.8,PSNDA,0),"^",3)=PSNI | 
|---|
| 41 | .S PSNK=0 F  S PSNK=$O(^GMR(120.8,PSNDA,2,PSNK)) Q:'PSNK  S PSNI=^(PSNK,0) D | 
|---|
| 42 | ..S PSNX=$P(^PS(50.416,PSNI,0),"^",2) I PSNX S DA(1)=PSNDA,DA=PSNK,DIE="^GMR(120.8,DA(1),2,",DR=".01////"_$S($D(^GMR(120.8,DA(1),2,"B",PSNX)):"@",1:PSNX) D ^DIE S ^TMP($J,1,PSNPAT,$P(^PS(50.416,PSNI,0),"^")_"^"_$P(^PS(50.416,PSNX,0),"^"))="" | 
|---|
| 43 | ; | 
|---|
| 44 | I '$D(^TMP($J,1)) D  G SENDIT | 
|---|
| 45 | .F J=1:1 S X=$P($T(TEXT5+J),";",3,300) Q:X=""  S ^TMP("PSN",$J,LINE,0)=X,LINE=LINE+1 | 
|---|
| 46 | F J=1:1 S X=$P($T(TEXT3+J),";",3,300) Q:X=""  S ^TMP("PSN",$J,LINE,0)=X,LINE=LINE+1 | 
|---|
| 47 | I '$D(^TMP($J,1)) S ^TMP("PSN",$J,LINE,0)="none found",LINE=LINE+1 | 
|---|
| 48 | S NA="" F  S NA=$O(^TMP($J,1,NA)) Q:NA=""  S X="" F  S X=$O(^TMP($J,1,NA,X)) Q:X=""  S ^TMP("PSN",$J,LINE,0)="Patient: "_NA,LINE=LINE+1,^TMP("PSN",$J,LINE,0)="Non-primary ingredient "_$P(X,"^"),LINE=LINE+1 D | 
|---|
| 49 | .S ^TMP("PSN",$J,LINE,0)="was replaced with primary ingredient "_$P(X,"^",2),LINE=LINE+1,^TMP("PSN",$J,LINE,0)=" ",LINE=LINE+1 | 
|---|
| 50 | ; | 
|---|
| 51 | SENDIT ; | 
|---|
| 52 | S XMSUB="INTERACTIONS and ALLERGIES UPDATED",XMDUZ="NDF MANAGER",XMTEXT="^TMP(""PSN"",$J," K XMY S XMY(DUZ)="",XMY("G.NDF DATA@"_^XMB("NETNAME"))="",DA=0 F  S DA=$O(^XUSEC("PSNMGR",DA)) Q:'DA  S XMY(DA)="" | 
|---|
| 53 | N DIFROM D ^XMD | 
|---|
| 54 | QUIT K DA,DIE,DIK,DR,J,LINE,NA,NEWDA,PSN,PSNDA,PSNI,PSNI1,PSNI1N,PSNI1P,PSNI2,PSNI2N,PSNI2P,PSNN,PSNK,PSNPAT,PSNX,X,XMDUZ,XMSUB,XMTEXT,XMY,^TMP($J),^TMP("PSN",$J) | 
|---|
| 55 | Q | 
|---|
| 56 | TEXT3 ; | 
|---|
| 57 | ;; | 
|---|
| 58 | ;;========================================================================= | 
|---|
| 59 | ;;Allergy information for the following patients has been changed. | 
|---|
| 60 | ;; | 
|---|
| 61 | ;;The allergy for the listed patients was created with a non-primary | 
|---|
| 62 | ;;ingredient.  These have been updated to replace the non-primary | 
|---|
| 63 | ;;ingredient with the proper primary ingredient. | 
|---|
| 64 | ;; | 
|---|
| 65 | ; | 
|---|
| 66 | TEXT ; | 
|---|
| 67 | ;; | 
|---|
| 68 | ;;The following interactions have been edited because they | 
|---|
| 69 | ;;involved ingredients that are not primary ingredients. | 
|---|
| 70 | ;; | 
|---|
| 71 | ; | 
|---|
| 72 | TEXT2 ; | 
|---|
| 73 | ;; | 
|---|
| 74 | ;;The following interactions have been deleted because | 
|---|
| 75 | ;;Primary Ingredient/Other Ingredient combination already | 
|---|
| 76 | ;;exists in the DRUG INGREDIENTS file involved ingredients | 
|---|
| 77 | ;;that are not primary ingredients. | 
|---|
| 78 | ;; | 
|---|
| 79 | ; | 
|---|
| 80 | TEXT4 ; | 
|---|
| 81 | ;; | 
|---|
| 82 | ;;No DRUG INTERACTIONS were updated due to Primary Ingredients being | 
|---|
| 83 | ;;changed to Non-Primary ingredients in the Data Update. | 
|---|
| 84 | ;; | 
|---|
| 85 | ; | 
|---|
| 86 | TEXT5 ; | 
|---|
| 87 | ;; | 
|---|
| 88 | ;;No PATIENT ALLERGIES were updated due to Primary Ingredients being | 
|---|
| 89 | ;;changed to Non-Primary ingredients during the Data Update. | 
|---|
| 90 | ;; | 
|---|