| 1 | PPPBFFX1 ;BHM/DB-Build off of CD_ROM continued ;3JUL97 | 
|---|
| 2 | ;;1.0;PHARMACY PRESCRIPTION PRACTICE;**11,16,17,21,26**;APR 7, 1995 | 
|---|
| 3 | K CNTR1,MAILERR,CNTR2,^TMP("PPP SORT",$J),PPPEND | 
|---|
| 4 | PPPSTRT ;Starting point for extraction process | 
|---|
| 5 | ;@references to variable names generally represent extended globals | 
|---|
| 6 | ;@EXCARR@  = ["DEV","VAA"]^TMP("PPP",$J,"EXCLUDE") | 
|---|
| 7 | ;@MPDARR@  = ["DEV","VAA"]^TMP("PPP",$J,"RESULTS") | 
|---|
| 8 | ;@SORTSSN@ = ["DEV","VAA"]^DPT("SSN") | 
|---|
| 9 | ;@SSNARR@  = ["DEV","VAA"]^TMP("PPP",$J,"SSN") | 
|---|
| 10 | S PPP1=$G(^PPP(1020.1,1,1)),PPP0=$G(^PPP(1020.1,1,0)) | 
|---|
| 11 | D NOW^%DTC S TODAY=$P(%,".") D YX^%DTC S STRTTM=Y | 
|---|
| 12 | K ERRTXT,DMNNEW,SSNCNT,Y,PATCHK,PATCHG,PATADD,SITECNT | 
|---|
| 13 | K ^TMP($J) D TXT S ^TMP($J,"PPPERR",ERRTXT)=" BUILD FOREIGN FACILITY CROSS REFERENCE FILE" | 
|---|
| 14 | S INUCI=$P(PPP1,"^"),OUTUCI=$P(PPP1,"^",2),PPPSTANO=$P(PPP0,"^",9) | 
|---|
| 15 | S XX="["""_$E(INUCI,1,3)_""","""_$E(INUCI,5,7)_"""]" | 
|---|
| 16 | S SORTSSN="^"_XX_"DPT("_"""SSN"""_")" | 
|---|
| 17 | S SSNARR="^"_XX_"TMP(""PPP"","_$J_",""SSN"")" | 
|---|
| 18 | S XX="["""_$E(OUTUCI,1,3)_""","""_$E(OUTUCI,5,7)_"""]" | 
|---|
| 19 | S MPDARR="^"_XX_"TMP(""PPP"","_$J_",""RESULTS"")" | 
|---|
| 20 | S EXCARR="^"_XX_"TMP(""PPP"","_$J_",""EXCLUDE"")" | 
|---|
| 21 | S KLLARRAY="^"_XX_"TMP(""PPP"")" S X=0 F  S X=$O(@KLLARRAY@(X)) Q:X=""  K @KLLARRAY@(X) | 
|---|
| 22 | S X=0 F  S X=$O(@MPDARR@(X)) Q:X=""  K @MPDARR@(X) | 
|---|
| 23 | S @EXCARR@(PPPSTANO)="" | 
|---|
| 24 | ; | 
|---|
| 25 | 1 ; | 
|---|
| 26 | S MAXTM=1000,STARTTM=$$NOW^PPPCNV1 ;Max time = 10 minutes | 
|---|
| 27 | F  S PPPSSN=$O(@SORTSSN@(PPPSSN)) Q:PPPSSN=""  S CNTR1=$G(CNTR1)+1,^TMP("PPP SORT",CNTR1)=PPPSSN,PPPEND=PPPSSN | 
|---|
| 28 | K CNTR,CNTR2,SSNCNT,PATCHK,PATCHG,PATADD,SITECNT,DMNNEW | 
|---|
| 29 | 2 S CNTR=$G(CNTR)+1,CNTR2=$G(CNTR2)+1,PPPSSN=$G(^TMP("PPP SORT",CNTR)) G 3:$G(PPPSSN)="" S @SSNARR@(PPPSSN)="",PPPEND=PPPSSN I $G(CNTR2)=100 G 3 | 
|---|
| 30 | G 2 | 
|---|
| 31 | 3 S X=0 F  S X=$O(@MPDARR@(X)) Q:X=""  K @MPDARR@(X) | 
|---|
| 32 | S STARTTM=$$NOW^PPPCNV1 G:$G(CNTR2)=1 FINI S X="VAMPAPI0" X ^%ZOSF("TEST") I $T S ERR=$$MPD^VAMPAPI0(SSNARR,MPDARR,"MPD**00001",EXCARR,600,1) | 
|---|
| 33 | I +ERR<0 S ERRTXT=$G(ERRTXT)+1,^TMP($J,"PPPERR",ERRTXT)="Error : "_$P(ERR,"^",2) G FINI | 
|---|
| 34 | 4 I $D(@MPDARR@("DONE",PPPEND)) K PPPSSN G BGN | 
|---|
| 35 | I $$DIFFTM^PPPCNV1($$NOW^PPPCNV1,STARTTM)>MAXTM S ERRTEXT=$G(ERRTXT)+1,^TMP($J,"PPPERR",ERRTXT)="      Timed out waiting for server to transfer data" S MAILERR=1 G FINI | 
|---|
| 36 | H .5 G 4 | 
|---|
| 37 | BGN ;begin compilation of data | 
|---|
| 38 | S PPPSSN=$S('$D(PPPSSN):$O(@MPDARR@("DONE",0)),1:$O(@MPDARR@("DONE",PPPSSN))) G NXTBTCH:PPPSSN="" S SSNCNT=$G(SSNCNT)+1 | 
|---|
| 39 | S $P(^PPP(1020.1,1,2),"^",1)=PPPSSN | 
|---|
| 40 | I '$D(@MPDARR@(PPPSSN,"FOUND")) G BGN | 
|---|
| 41 | I @MPDARR@(PPPSSN,"FOUND")'>0 G BGN | 
|---|
| 42 | S PATDFN=$O(@SORTSSN@(PPPSSN,0)) I $G(PATDFN)'>0 G BGN | 
|---|
| 43 | S PPPSITE=0 | 
|---|
| 44 | FAC ;Get facilities visited | 
|---|
| 45 | S PPPSITE=$O(@MPDARR@(PPPSSN,"SITES",PPPSITE)) G BGN:PPPSITE'>0 K PPPERR1 D | 
|---|
| 46 | .;Get internal ien for station & domain name | 
|---|
| 47 | .I $D(^PPP(1020.5,"B",PPPSITE)) S PPPERR1=1 Q | 
|---|
| 48 | .I $D(^PPP(1020.8,"B",PPPSITE)) S PPPIEN=$O(^PPP(1020.8,"B",PPPSITE,0)),DMNNAME=$P($G(^PPP(1020.8,PPPIEN,0)),"^",2) Q | 
|---|
| 49 | .I $D(^PPP(1020.8,"D",PPPSITE)) S PPPIEN=$O(^PPP(1020.8,"D",PPPSITE,0)),DMNNAME=$P($G(^PPP(1020.8,PPPIEN,0)),"^",2) Q | 
|---|
| 50 | .I $D(^PPP(1020.8,PPPSITE)) S PPPIEN=PPPSITE Q | 
|---|
| 51 | .S DIC="^DIC(4,",DIC(0)="QMZ",X=PPPSITE,D="D" D IX^DIC I $D(Y),Y>0 S PPPIEN=+Y I $D(^PPP(1020.8,PPPIEN)) S DMNNAME=$P($G(^PPP(1020.8,PPPIEN,0)),"^",2) | 
|---|
| 52 | I $G(PPPERR1)=1 K PPPERR1 G FAC | 
|---|
| 53 | S PPPIEN=$S($G(PPPIEN)'="":PPPIEN,1:PPPSITE) | 
|---|
| 54 | S:$G(DMNNAME)="" DMNNAME="" | 
|---|
| 55 | S LNUM=0 I $G(DMNNAME)]"" S LNUM=$O(^PPP(1020.128,"A",DMNNAME,0)) | 
|---|
| 56 | I LNUM S DMNNAME=$P(^PPP(1020.128,LNUM,0),"^",2),DMNNEW=$G(DMNNEW)+1 | 
|---|
| 57 | ; | 
|---|
| 58 | UPDATE ;new entry or update old | 
|---|
| 59 | S X=@MPDARR@(PPPSSN,"SITES",PPPSITE),%DT="" D ^%DT S LSTVISIT=Y K X,UPDATE1 | 
|---|
| 60 | I $G(DMNNAME)'="",$D(^PPP(1020.2,"AC",PATDFN,DMNNAME)) S PPPIEN1=$O(^PPP(1020.2,"AC",PATDFN,DMNNAME,0)) D | 
|---|
| 61 | .Q:$G(PPPIEN1)'>0 | 
|---|
| 62 | .S OLDDT=$P($G(^PPP(1020.2,PPPIEN1,0)),"^",3) ;Date of last visit | 
|---|
| 63 | .I LSTVISIT>OLDDT S DIE="^PPP(1020.2,",DA=PPPIEN1,DR="2///"_LSTVISIT D ^DIE K DR,DIE | 
|---|
| 64 | .S UPDATE1=1 Q | 
|---|
| 65 | I $G(UPDATE1)=1 G FAC ;get next facility visited | 
|---|
| 66 | NEWSSN ; | 
|---|
| 67 | S X=PATDFN,DIC="^PPP(1020.2,",DIC(0)="",DIC("DR")="1////"_PPPIEN_";2///"_LSTVISIT_";7///0" K DD,D0 D FILE^DICN | 
|---|
| 68 | G FAC | 
|---|
| 69 | ; | 
|---|
| 70 | FINI ;Done | 
|---|
| 71 | G ^PPPBFFX2 | 
|---|
| 72 | Q D Q^PPPBFFX K ^TMP($J) Q | 
|---|
| 73 | S X=0 F  S X=$O(@KLLARRAY@(X)) Q:X=""  K @KLLARRAY@(X) | 
|---|
| 74 | K X,KLLARRAY Q | 
|---|
| 75 | TXT S ERRTXT=$G(ERRTXT)+1 Q | 
|---|
| 76 | NXTBTCH S X=0 F  S X=$O(@SSNARR@(X)) Q:X=""  K @SSNARR@(X) | 
|---|
| 77 | S X=0 F  S X=$O(@MPDARR@(X)) Q:X=""  K @MPDARR@(X),@MPDARR@("DONE",X) | 
|---|
| 78 | S CNTR2=0 | 
|---|
| 79 | G 2 | 
|---|