| [613] | 1 | PPPPRT4 ;ALB/DMB - FFX PRINT ROUTINES ; 3/13/92 | 
|---|
|  | 2 | ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;;APR 7,1995 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | SRTBYNM(OUTARRY) ; Sort the FFX file by name | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | ; This function will order through the APOV xref of the FFX file | 
|---|
|  | 8 | ; and return an array containing the patient info and place of visit | 
|---|
|  | 9 | ; info. | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | ; The output array is in the form: | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | ;   @OUTARRY@(PATIENT_NAME)=DOB^SSN | 
|---|
|  | 14 | ;   @OUTARRY@(PATIENT_NAME,STATION_NAME)=NUMBER^DOMAIN^LDOV | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | N DIC,DA,PATDFN,DR,DIQ,PATNAME,PATDOB,PATSSN,PPPTMP,STANAME,STANUM | 
|---|
|  | 17 | N STADOM,LDOV,TPATS,TSTATION,SNIFN,FFXIFN | 
|---|
|  | 18 | ; | 
|---|
|  | 19 | K @OUTARRY | 
|---|
|  | 20 | ; | 
|---|
|  | 21 | S TPATS=0 | 
|---|
|  | 22 | S TSTATION=0 | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | ; Order through the APOV xref and get the data for each dfn | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | F PATDFN=0:0 D  Q:PATDFN="" | 
|---|
|  | 27 | .S PATDFN=$O(^PPP(1020.2,"APOV",PATDFN)) Q:PATDFN="" | 
|---|
|  | 28 | .S DIC=2,DA=PATDFN,DR=".01;.03;.09",DIQ="PPPTMP" | 
|---|
|  | 29 | .D EN^DIQ1 Q:'$D(PPPTMP) | 
|---|
|  | 30 | .S PATNAME=PPPTMP(2,PATDFN,.01) | 
|---|
|  | 31 | .S PATDOB=PPPTMP(2,PATDFN,.03) | 
|---|
|  | 32 | .S PATSSN=PPPTMP(2,PATDFN,.09) | 
|---|
|  | 33 | .S @OUTARRY@(PATNAME)=PATDOB_"^"_PATSSN | 
|---|
|  | 34 | .S TPATS=TPATS+1 | 
|---|
|  | 35 | .K PPPTMP | 
|---|
|  | 36 | .F SNIFN=0:0 D  Q:SNIFN="" | 
|---|
|  | 37 | ..S SNIFN=$O(^PPP(1020.2,"APOV",PATDFN,SNIFN)) Q:SNIFN="" | 
|---|
|  | 38 | ..S FFXIFN=$O(^PPP(1020.2,"APOV",PATDFN,SNIFN,"")) Q:FFXIFN="" | 
|---|
|  | 39 | ..S DIC=4,DA=SNIFN,DR=".01;99",DIQ="PPPTMP" | 
|---|
|  | 40 | ..D EN^DIQ1 Q:'$D(PPPTMP) | 
|---|
|  | 41 | ..S STANAME=PPPTMP(4,SNIFN,.01) | 
|---|
|  | 42 | ..S STANUM=PPPTMP(4,SNIFN,99) | 
|---|
|  | 43 | ..K PPPTMP | 
|---|
|  | 44 | ..S LDOV=$$I2EDT^PPPCNV1($P($G(^PPP(1020.2,FFXIFN,0)),"^",3)) | 
|---|
|  | 45 | ..S STADOM=$P($G(^PPP(1020.2,FFXIFN,1)),"^",5) | 
|---|
|  | 46 | ..S @OUTARRY@(PATNAME,STANAME)=STANUM_"^"_STADOM_"^"_LDOV | 
|---|
|  | 47 | ..S TSTATION=TSTATION+1 | 
|---|
|  | 48 | Q TPATS_"^"_TSTATION | 
|---|
|  | 49 | ; | 
|---|
|  | 50 | SRTBYSTA(OUTARRY) ; Sort the FFX file by STATION | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | ; This function will order through the ARPOV xref of the FFX file | 
|---|
|  | 53 | ; and return an array containing the patient info and place of visit | 
|---|
|  | 54 | ; info. | 
|---|
|  | 55 | ; | 
|---|
|  | 56 | ; The output array is in the form: | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | ;   @OUTARRY@(STATION_NAME)=NUMBER^DOMAIN | 
|---|
|  | 59 | ;   @OUTARRY@(STATION_NAME_PATIENT_NAME)=DOB^SSN^LDOV | 
|---|
|  | 60 | ; | 
|---|
|  | 61 | N DIC,DA,PATDFN,DR,DIQ,PATNAME,PATDOB,PATSSN,PPPTMP,STANAME,STANUM | 
|---|
|  | 62 | N STADOM,LDOV,TPATS,TSTATION,SNIFN,FFXIFN | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | K @OUTARRY | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | S TPATS=0 | 
|---|
|  | 67 | S TSTATION=0 | 
|---|
|  | 68 | ; | 
|---|
|  | 69 | ; Order through the ARPOV xref and get the data for each dfn | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | F SNIFN=0:0 D  Q:SNIFN="" | 
|---|
|  | 72 | .S SNIFN=$O(^PPP(1020.2,"ARPOV",SNIFN)) Q:SNIFN="" | 
|---|
|  | 73 | .S DIC=4,DA=SNIFN,DR=".01;99",DIQ="PPPTMP" | 
|---|
|  | 74 | .D EN^DIQ1 Q:'$D(PPPTMP) | 
|---|
|  | 75 | .S STANAME=PPPTMP(4,SNIFN,.01) | 
|---|
|  | 76 | .S STANUM=PPPTMP(4,SNIFN,99) | 
|---|
|  | 77 | .K PPPTMP | 
|---|
|  | 78 | .S TSTATION=TSTATION+1 | 
|---|
|  | 79 | .F PATDFN=0:0 D  Q:PATDFN="" | 
|---|
|  | 80 | ..S PATDFN=$O(^PPP(1020.2,"ARPOV",SNIFN,PATDFN)) Q:PATDFN="" | 
|---|
|  | 81 | ..S DIC=2,DA=PATDFN,DR=".01;.03;.09",DIQ="PPPTMP" | 
|---|
|  | 82 | ..D EN^DIQ1 Q:'$D(PPPTMP) | 
|---|
|  | 83 | ..S PATNAME=PPPTMP(2,PATDFN,.01) | 
|---|
|  | 84 | ..S PATDOB=PPPTMP(2,PATDFN,.03) | 
|---|
|  | 85 | ..S PATSSN=PPPTMP(2,PATDFN,.09) | 
|---|
|  | 86 | ..S FFXIFN=$O(^PPP(1020.2,"ARPOV",SNIFN,PATDFN,"")) Q:FFXIFN="" | 
|---|
|  | 87 | ..S LDOV=$$I2EDT^PPPCNV1($P($G(^PPP(1020.2,FFXIFN,0)),"^",3)) | 
|---|
|  | 88 | ..S STADOM=$P($G(^PPP(1020.2,FFXIFN,1)),"^",5) | 
|---|
|  | 89 | ..S @OUTARRY@(STANAME)=STANUM_"^"_STADOM | 
|---|
|  | 90 | ..S @OUTARRY@(STANAME,PATNAME)=PATDOB_"^"_PATSSN_"^"_LDOV | 
|---|
|  | 91 | ..S TPATS=TPATS+1 | 
|---|
|  | 92 | ..K PPPTMP | 
|---|
|  | 93 | Q TSTATION_"^"_TPATS | 
|---|
|  | 94 | ; | 
|---|
|  | 95 | NAMESRT(INARRY,OUTARRY) ; Sort the clinic list by name and get SSN & DOB. | 
|---|
|  | 96 | ; | 
|---|
|  | 97 | N DIC,DA,PATDFN,DR,DIQ,NAME,DOB,SSN,PPPTMP | 
|---|
|  | 98 | ; | 
|---|
|  | 99 | ; Make sure the output array is empty | 
|---|
|  | 100 | ; | 
|---|
|  | 101 | K @OUTARRY,PPPTMP | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | S TENTRY=0 | 
|---|
|  | 104 | ; | 
|---|
|  | 105 | ; Order through the in array and get the data for each DFN. | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | F PATDFN=0:0 D  Q:PATDFN="" | 
|---|
|  | 108 | .S PATDFN=$O(@INARRY@(PATDFN)) Q:PATDFN="" | 
|---|
|  | 109 | .S DIC=2,DA=PATDFN,DR=".01;.03;.09",DIQ="PPPTMP" | 
|---|
|  | 110 | .D EN^DIQ1 Q:'$D(PPPTMP) | 
|---|
|  | 111 | .S NAME=PPPTMP(2,PATDFN,.01) | 
|---|
|  | 112 | .S DOB=PPPTMP(2,PATDFN,.03) | 
|---|
|  | 113 | .S SSN=PPPTMP(2,PATDFN,.09) | 
|---|
|  | 114 | .S @OUTARRY@(NAME,PATDFN)=DOB_"^"_SSN | 
|---|
|  | 115 | .S TENTRY=TENTRY+1 | 
|---|
|  | 116 | .K PPPTMP | 
|---|
|  | 117 | Q TENTRY | 
|---|