| 1 | PSULR3 ;BIR/PDW - LAB extract assemble recs. for mail messg. ;25 AUG 1998 | 
|---|
| 2 | ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005 | 
|---|
| 3 | EN ;EP | 
|---|
| 4 | ; | 
|---|
| 5 | ; | 
|---|
| 6 | ;     Samples of the XTMP records being used | 
|---|
| 7 | ; | 
|---|
| 8 | ;^XTMP("PSULR_541075670",541075670,"CODES","CV800",4) = CREATININE^mg/dL | 
|---|
| 9 | ;^XTMP("PSULR_541075670",541075670,"EVENT",1) = IV^599^13^12345^ASPRIN^CV800 | 
|---|
| 10 | ;^XTMP("PSULR_541075670",541075670,"PATIENT",13,4) = CREATININE^mg/dL | 
|---|
| 11 | ;^XTMP("PSULR_541075670",541075670,"PATIENT",13,4,7029388.859632) = 1.0^^^50 | 
|---|
| 12 | ;^XTMP("PSULR_541077558",541077558,"RECORDS",59,1) = ^59^^^^12345^^^^^^ASPRIN^^CREATININE^^^^1.0 mg/dL^^6/10/97^ | 
|---|
| 13 | ;^XTMP("PSULR_541077558",541077558,"SUMMARY",599,13,"CV800",4) = CREATININE^1.0 mg/dL^6/10/97^ | 
|---|
| 14 | ; | 
|---|
| 15 | ;  LOOP through the events and assemble records accordingly | 
|---|
| 16 | K ^XTMP(PSULRSUB,"RECORDS") | 
|---|
| 17 | K ^XTMP(PSULRSUB,"SUMMARY") | 
|---|
| 18 | S PSUEV=0 F  S PSUEV=$O(^XTMP(PSULRSUB,"EVENT",PSUEV)) Q:PSUEV'>0  S X=^(PSUEV) D | 
|---|
| 19 | . ;W !,X | 
|---|
| 20 | . S PSUPK=$P(X,U,1),PSUDIV=$P(X,U,2),DFN=$P(X,U,3) | 
|---|
| 21 | . S PSUORD=$P(X,U,4),PSUDRGN=$P(X,U,5),PSUDRCD=$P(X,U,6) | 
|---|
| 22 | . K PSUCD | 
|---|
| 23 | . M PSUCD=^XTMP(PSULRSUB,"CODES",PSUDRCD) | 
|---|
| 24 | . S PSUND=0 F  S PSUND=$O(PSUCD(PSUND)) Q:PSUND'>0  D | 
|---|
| 25 | .. S PSUDT=$O(^XTMP(PSULRSUB,"PATIENT",DFN,PSUND,0)) | 
|---|
| 26 | .. I 'PSUDT Q  ; no test results found | 
|---|
| 27 | .. K VA D PID^VADPT | 
|---|
| 28 | .. S PSUX=$$RECORD() | 
|---|
| 29 | .. K VA | 
|---|
| 30 | .. S PSULC=$O(^XTMP(PSULRSUB,"RECORDS",PSUDIV,""),-1)+1 | 
|---|
| 31 | .. S ^XTMP(PSULRSUB,"RECORDS",PSUDIV,PSULC)=PSUX | 
|---|
| 32 | ; | 
|---|
| 33 | Q | 
|---|
| 34 | ; | 
|---|
| 35 | RECORD() ;EP  Construct mailing record | 
|---|
| 36 | ;3.2.11.42 | 
|---|
| 37 | K PSUR | 
|---|
| 38 | S PSULRDT=9999999-PSUDT | 
|---|
| 39 | S X=^XTMP(PSULRSUB,"PATIENT",DFN,PSUND,PSUDT) | 
|---|
| 40 | S PSULRF=$S(X["^":$P(X,U,2),1:"") ; hi/low flag | 
|---|
| 41 | S PSULRR=$S(X["^":$P(X,U),1:X) ; test result | 
|---|
| 42 | S X=^XTMP(PSULRSUB,"PATIENT",DFN,PSUND) | 
|---|
| 43 | S PSULRT=$P(X,U) ; Lab Test name stored | 
|---|
| 44 | S PSULRU=$P(X,U,2) ; Units stored | 
|---|
| 45 | K PSUR | 
|---|
| 46 | S PSUR(2)=PSUDIV | 
|---|
| 47 | S PSUR(3)=$TR(VA("PID"),"-","") | 
|---|
| 48 | S X=$S(PSUPK="IV":4,PSUPK="UD":5,1:10) | 
|---|
| 49 | S PSUR(X)=PSUORD | 
|---|
| 50 | S PSUR(7)=PSUDRGN | 
|---|
| 51 | S PSUR(8)=$P(PSULRT,U) | 
|---|
| 52 | S PSUR(9)=PSULRR_" "_PSULRU | 
|---|
| 53 | S PSUR(10)=PSULRF | 
|---|
| 54 | S PSUR(11)=PSULRDT | 
|---|
| 55 | S PSUR="" | 
|---|
| 56 | S I=0 F  S I=$O(PSUR(I)) Q:I'>0  S PSUR(I)=$TR(PSUR(I),"^","'") | 
|---|
| 57 | S I=0 F  S I=$O(PSUR(I)) Q:I'>0  S $P(PSUR,U,I)=PSUR(I) | 
|---|
| 58 | S PSUR=PSUR_U | 
|---|
| 59 | ;  Store info for summary by patient | 
|---|
| 60 | S PSUTEST=PSULRT_U_PSUR(9)_U_PSULRDT_U_PSULRF ; test^result unit^date^flag | 
|---|
| 61 | S ^XTMP(PSULRSUB,"SUMMARY",PSUDIV,DFN,PSUDRCD,PSUND)=PSUTEST | 
|---|
| 62 | Q PSUR | 
|---|