| 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 | 
|---|