| [613] | 1 | PSUAA1 ;BIR/RDC - ALLERGY/ADVERSE EVENT EXTRACT ; 23 FEB 2004
 | 
|---|
 | 2 |  ;;4.0;PHARMACY BENEFITS MANAGEMENT;**10**;MARCH, 2005;Build 4
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; Reference to file #4          supported by DBIA 10090
 | 
|---|
 | 5 |  ; Reference to file #2          supported by DBIA 10035 AND 3504
 | 
|---|
 | 6 |  ; Reference to file #120.8      supported by DBIA 10099, 2422, AND 4562
 | 
|---|
 | 7 |  ; Reference to file #120.85     supported by DBIA 10099
 | 
|---|
 | 8 |  ; Reference to file #49         supported by DBIA 432
 | 
|---|
 | 9 |  ;
 | 
|---|
 | 10 | EN ;
 | 
|---|
 | 11 |  N ARTMP,DFN,EDATE,GMRA,GMRACT,GMRAL,GMREC,ICN,K,LINECNT,LINEMAX,LINETOT,MSGCNT,NPTR,OPTR,OREC,PN,PREC,RPTR,RRDT,RREC,SDATE,SSN,STAT5ION,V,VPTR,X,Z
 | 
|---|
 | 12 |  K PSUMKFLG
 | 
|---|
 | 13 |  ;
 | 
|---|
 | 14 |  D INITZ
 | 
|---|
 | 15 |  D GETRECS
 | 
|---|
 | 16 |  D ^PSUAA2
 | 
|---|
 | 17 |  Q
 | 
|---|
 | 18 |  ;
 | 
|---|
 | 19 | INITZ ;
 | 
|---|
 | 20 |  ;  ** new all non-namespaced variables **
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 |  S SDATE=PSUSDT\1-.0001
 | 
|---|
 | 23 |  S EDATE=PSUEDT\1+.2359
 | 
|---|
 | 24 |  ;
 | 
|---|
 | 25 |  S LINEMAX=$$VAL^PSUTL(4.3,1,8.3)
 | 
|---|
 | 26 |  S:LINEMAX=""!(LINEMAX>10000) LINEMAX=10000
 | 
|---|
 | 27 |  S LINECNT=999999
 | 
|---|
 | 28 |  S LINETOT=0
 | 
|---|
 | 29 |  ;
 | 
|---|
 | 30 |  S PSUFAC=PSUSNDR
 | 
|---|
 | 31 |  ;
 | 
|---|
 | 32 |  ; ** get station number **
 | 
|---|
 | 33 |  S X=$$VALI^PSUTL(4.3,1,217)
 | 
|---|
 | 34 |  S STATION=+$$VAL^PSUTL(4,X,99)
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  ; ** get run date **
 | 
|---|
 | 37 |  S %H=$H
 | 
|---|
 | 38 |  D YMD^%DTC
 | 
|---|
 | 39 |  S $P(^TMP("PSUAA",$J),U,3)=X
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 |  ;
 | 
|---|
 | 42 |  Q  ;  ** end of partition initialization **
 | 
|---|
 | 43 |  ;
 | 
|---|
 | 44 | GETRECS ;  ;  **  extract reactive data  **
 | 
|---|
 | 45 |  F  S SDATE=$O(^GMR(120.8,"V",SDATE)) Q:SDATE>EDATE!('SDATE)  D
 | 
|---|
 | 46 |  . S VPTR=""                       ;*** loop through verified dates  ***
 | 
|---|
 | 47 |  . F  S VPTR=$O(^GMR(120.8,"V",SDATE,VPTR)) Q:VPTR=""  D
 | 
|---|
 | 48 |  .. K GMRACT,GMRAL,GMREC
 | 
|---|
 | 49 |  .. S PSUMKFLG=0
 | 
|---|
 | 50 |  .. S VREC=^GMR(120.8,VPTR,0)
 | 
|---|
 | 51 |  .. S DFN=$P(VREC,U)
 | 
|---|
 | 52 |  .. Q:$G(DFN)=""
 | 
|---|
 | 53 |  .. Q:$$TESTPAT^VADPT(DFN)=1                  ;test patient
 | 
|---|
 | 54 |  .. S PREC=$G(^DPT(DFN,0))
 | 
|---|
 | 55 |  .. S SSN=$P(PREC,U,9)
 | 
|---|
 | 56 |  .. S GMRA="0^1^111"
 | 
|---|
 | 57 |  .. D EN1^GMRADPT
 | 
|---|
 | 58 |  .. Q:'$D(GMRAL(VPTR))
 | 
|---|
 | 59 |  .. S GMREC=GMRAL(VPTR)
 | 
|---|
 | 60 |  .. D EN1^GMRAOR2(VPTR,.ARTMP)    ;  ** load multiple variables  **
 | 
|---|
 | 61 |  .. S Z="$",OREC=""
 | 
|---|
 | 62 |  .. D STATIC
 | 
|---|
 | 63 |  .. S V="" F  S V=$O(GMRACT("S",V)) Q:V=""!(V=7)  D
 | 
|---|
 | 64 |  ... S $P(OREC,Z,13+V)=$G(GMRACT("S",V))               ; * symptoms
 | 
|---|
 | 65 |  .. S $P(OREC,Z,20)=""
 | 
|---|
 | 66 |  .. S V="" F  S V=$O(GMRACT("O",V)) Q:V=""!(V=7)  D
 | 
|---|
 | 67 |  ... S $P(OREC,Z,12)=$P(GMRACT("O",V),U)               ; * event date
 | 
|---|
 | 68 |  ... S $P(OREC,Z,13)=$P(GMRACT("O",V),U,2)             ; * severity
 | 
|---|
 | 69 |  ... D MAKE1 S PSUMKFLG=1
 | 
|---|
 | 70 |  .. D:'$G(PSUMKFLG) MAKE1                ; **  load ^XTMP with OREC  **
 | 
|---|
 | 71 |  .. S:$G(MSGCNT) ^XTMP("PSU_"_PSUJOB,"PSUAA","MSGTCNT")=MSGCNT
 | 
|---|
 | 72 |  .. S:LINECNT=999999 LINECNT=1
 | 
|---|
 | 73 |  .. S:$G(LINECNT) ^XTMP("PSU_"_PSUJOB,"PSUAA","LINECNT")=LINECNT
 | 
|---|
 | 74 |  Q
 | 
|---|
 | 75 |  ;
 | 
|---|
 | 76 | STATIC ;  ** set static pieces of record into OREC **
 | 
|---|
 | 77 |  ;
 | 
|---|
 | 78 |  S $P(OREC,Z,1)=""
 | 
|---|
 | 79 |  S $P(OREC,Z,2)=STATION_VPTR          ; ** event ID
 | 
|---|
 | 80 |  S $P(OREC,Z,3)=SSN                   ; ** social security #
 | 
|---|
 | 81 |  ;
 | 
|---|
 | 82 |  S ICN=$$GETICN^MPIF001(DFN)           ; **  ICN
 | 
|---|
 | 83 |  I $E(ICN,1,2)="-1" S ICN=""
 | 
|---|
 | 84 |  S $P(OREC,Z,4)=ICN
 | 
|---|
 | 85 |  ;
 | 
|---|
 | 86 |  S $P(OREC,Z,5)=$P(GMREC,U,2)          ;  ** reactant
 | 
|---|
 | 87 |  S $P(OREC,Z,6)=$P($P($P(GMREC,U,9),"(",2),",")  ; * reactant file #
 | 
|---|
 | 88 |  S $P(OREC,Z,7)=$P(GMREC,U,7)          ;  **  allergy type
 | 
|---|
 | 89 |  S $P(OREC,Z,8)=$P(VREC,U,4)           ;  ** origination date
 | 
|---|
 | 90 |  ;
 | 
|---|
 | 91 |  S NPTR=$P(VREC,U,5)                ; * originator's section/service
 | 
|---|
 | 92 |  I NPTR S OPTR=$P($G(^VA(200,NPTR,5)),U,1)
 | 
|---|
 | 93 |  I OPTR S $P(OREC,Z,9)=$P(^DIC(49,OPTR,0),U,1)
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 |  S $P(OREC,Z,10)=$P(VREC,U,6)          ;  ** observed/historical
 | 
|---|
 | 96 |  S $P(OREC,Z,11)=$P(VREC,U,14)         ;  ** mechanism
 | 
|---|
 | 97 |  ;
 | 
|---|
 | 98 |  Q  ;  ** end of static variables for a message **
 | 
|---|
 | 99 |  ;
 | 
|---|
 | 100 | MAKE1 ;   ** load one record/message **
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 |  S OREC=$TR(OREC,"^","'")
 | 
|---|
 | 103 |  S OREC=$TR(OREC,Z,U)
 | 
|---|
 | 104 |  ;
 | 
|---|
 | 105 |  S LINECNT=LINECNT+1
 | 
|---|
 | 106 |  S LINETOT=LINETOT+1
 | 
|---|
 | 107 |  I LINECNT>LINEMAX S MSGCNT=$G(MSGCNT)+1,LINECNT=1
 | 
|---|
 | 108 |  I $L(OREC)<254 S ^XTMP("PSU_"_PSUJOB,"PSUAA",MSGCNT,LINECNT)=OREC Q
 | 
|---|
 | 109 |  F K=254:-1 Q:$E(OREC,K)="^"
 | 
|---|
 | 110 |  S ^XTMP("PSU_"_PSUJOB,"PSUAA",MSGCNT,LINECNT)=$E(OREC,1,K)
 | 
|---|
 | 111 |  S LINECNT=LINECNT+1
 | 
|---|
 | 112 |  S LINETOT=LINETOT+1
 | 
|---|
 | 113 |  S ^XTMP("PSU_"_PSUJOB,"PSUAA",MSGCNT,LINECNT)="*"_$E(OREC,K,K+253)
 | 
|---|
 | 114 |  Q
 | 
|---|
 | 115 | PRINT ; ALLOW NO PRINTING
 | 
|---|
 | 116 |  Q
 | 
|---|
 | 117 |  ;
 | 
|---|