| 1 | PSUDEM8 ;BIR/DAM - ICD9 Codes for Inpatient PTF Record Extract ; 20 DEC 2001
 | 
|---|
| 2 |  ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;DBIA's
 | 
|---|
| 5 |  ; Reference to file 45 supported by DBIA 3511
 | 
|---|
| 6 |  ; Reference to file 80 supported by DBIA 10082
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | EN ;EN  CALLED FROM PSUDEM7
 | 
|---|
| 9 |  D PTFIEN
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | PTFIEN ;$O through ^XTMP("PSU_"_PSUJOB,"PSUIPV" to get all the PTF IEN's
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  S PSUC=0
 | 
|---|
| 15 |  F  S PSUC=$O(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUC)) Q:'PSUC  D
 | 
|---|
| 16 |  .D PTF70     ;gather ICD9 data on ^DGPT(D0,70 node
 | 
|---|
| 17 |  .D PTFM      ;gather ICD9 data on ^DGPT(D0,"M","AC" node
 | 
|---|
| 18 |  .D FIN K ^XTMP("PSU_"_PSUJOB,"PSUTMP3")
 | 
|---|
| 19 |  .D EN^PSUDEM9    ;gather CPT data on 2 separate ^DGPT nodes
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | PTF70 ;Find all ICD9 pointers present on ^DGPT(D0,70 node
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  N PSU1,PSU2,PSU3,PSU4,PSU5,PSU6,PSU7,PSU8,PSU9,PSU10,PSU11
 | 
|---|
| 25 |  S PSU1=$P($G(^DGPT(PSUC,70)),U,10) S:PSU1="" PSU1="NULL"  ;Ptr 1
 | 
|---|
| 26 |  S PSU2=$P($G(^DGPT(PSUC,70)),U,16) S:PSU2="" PSU2="NULL"  ;Ptr 2
 | 
|---|
| 27 |  S PSU3=$P($G(^DGPT(PSUC,70)),U,17) S:PSU3="" PSU3="NULL"  ;Ptr 3
 | 
|---|
| 28 |  S PSU4=$P($G(^DGPT(PSUC,70)),U,18) S:PSU4="" PSU4="NULL"  ;Ptr 4
 | 
|---|
| 29 |  S PSU5=$P($G(^DGPT(PSUC,70)),U,19) S:PSU5="" PSU5="NULL"  ;Ptr 5
 | 
|---|
| 30 |  S PSU6=$P($G(^DGPT(PSUC,70)),U,20) S:PSU6="" PSU6="NULL"  ;Ptr 6
 | 
|---|
| 31 |  S PSU7=$P($G(^DGPT(PSUC,70)),U,21) S:PSU7="" PSU7="NULL"  ;Ptr 7
 | 
|---|
| 32 |  S PSU8=$P($G(^DGPT(PSUC,70)),U,22) S:PSU8="" PSU8="NULL"  ;Ptr 8
 | 
|---|
| 33 |  S PSU9=$P($G(^DGPT(PSUC,70)),U,23) S:PSU9="" PSU9="NULL"  ;Ptr 9
 | 
|---|
| 34 |  S PSU10=$P($G(^DGPT(PSUC,70)),U,24) S:PSU10="" PSU10="NULL"  ;Ptr 10
 | 
|---|
| 35 |  S PSU11=$P($G(^DGPT(PSUC,70)),U,11) S:PSU11="" PSU11="NULL"  ;Ptr 11
 | 
|---|
| 36 |  D ICD91
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | ICD91 ;Find ICD9 codes from pointer on ^DGPT(D0,70 node and place in
 | 
|---|
| 40 |  ;an array
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  N PSUID1,PSUID2,PSUID3,PSUID4,PSUID5,PSUID6,PSUID7,PSUID8,PSUID9
 | 
|---|
| 43 |  N PSUID10,PSUID11
 | 
|---|
| 44 |  S:PSU1'["N" PSUID1=$P($G(^ICD9(PSU1,0)),U) D
 | 
|---|
| 45 |  .I $D(PSUID1) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,1,PSUID1)=""   ;1ST ICD9 CODE
 | 
|---|
| 46 |  S:PSU2'["N" PSUID2=$P($G(^ICD9(PSU2,0)),U) D
 | 
|---|
| 47 |  .I $D(PSUID2) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,2,PSUID2)=""   ;2ND ICD9 CODE
 | 
|---|
| 48 |  S:PSU3'["N" PSUID3=$P($G(^ICD9(PSU3,0)),U) D
 | 
|---|
| 49 |  .I $D(PSUID3) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,3,PSUID3)=""   ;3rd ICD9 CODE
 | 
|---|
| 50 |  S:PSU4'["N" PSUID4=$P($G(^ICD9(PSU4,0)),U) D
 | 
|---|
| 51 |  .I $D(PSUID4) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,4,PSUID4)=""   ;4th ICD9 CODE
 | 
|---|
| 52 |  S:PSU5'["N" PSUID5=$P($G(^ICD9(PSU5,0)),U) D
 | 
|---|
| 53 |  .I $D(PSUID5) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,5,PSUID5)=""   ;5th ICD9 CODE
 | 
|---|
| 54 |  S:PSU6'["N" PSUID6=$P($G(^ICD9(PSU6,0)),U) D
 | 
|---|
| 55 |  .I $D(PSUID6) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,6,PSUID6)=""   ;6th ICD9 CODE
 | 
|---|
| 56 |  S:PSU7'["N" PSUID7=$P($G(^ICD9(PSU7,0)),U) D
 | 
|---|
| 57 |  .I $D(PSUID7) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,7,PSUID7)=""   ;7th ICD9 CODE
 | 
|---|
| 58 |  S:PSU8'["N" PSUID8=$P($G(^ICD9(PSU8,0)),U) D
 | 
|---|
| 59 |  .I $D(PSUID8) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,8,PSUID8)=""    ;8th ICD9 CODE
 | 
|---|
| 60 |  S:PSU9'["N" PSUID9=$P($G(^ICD9(PSU9,0)),U) D
 | 
|---|
| 61 |  .I $D(PSUID9) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,9,PSUID9)=""   ;9th ICD9 CODE
 | 
|---|
| 62 |  S:PSU10'["N" PSUID10=$P($G(^ICD9(PSU10,0)),U) D
 | 
|---|
| 63 |  .I $D(PSUID10) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,10,PSUID10)=""  ;10th ICD9 CODE
 | 
|---|
| 64 |  S:PSU11'["N" PSUID11=$P($G(^ICD9(PSU11,0)),U) D
 | 
|---|
| 65 |  .I $D(PSUID11) S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,11,PSUID11)=""  ;11th ICD9 CODE
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 | PTFM ;
 | 
|---|
| 69 |  S PSUCD=0
 | 
|---|
| 70 |  S I=12
 | 
|---|
| 71 |  F  S PSUCD=$O(^DGPT(PSUC,"M","AC",PSUCD)) Q:'PSUCD  D
 | 
|---|
| 72 |  .I PSUCD="" S PSUCD="N"
 | 
|---|
| 73 |  .N PSUIDT
 | 
|---|
| 74 |  .S PSUIDT=$P($G(^ICD9(PSUCD,0)),U) D
 | 
|---|
| 75 |  ..S ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,I,PSUIDT)=""
 | 
|---|
| 76 |  ..D DEL
 | 
|---|
| 77 |  ..S I=I+1
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | DEL ;Delete duplicates
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  F N=1:1:10 I $D(^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,N,PSUIDT)) D
 | 
|---|
| 83 |  .K ^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,I,PSUIDT)
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | FIN ;$O through array, and set codes into the Inpatient Record 
 | 
|---|
| 87 |  ;global ^XTMP("PSU_"_PSUJOB,"PSUIPV"
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  S T=0,N=8
 | 
|---|
| 90 |  F  S T=$O(^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,T)) Q:'T  Q:N=29  D
 | 
|---|
| 91 |  .S PSUIDF=0
 | 
|---|
| 92 |  .F  S PSUIDF=$O(^XTMP("PSU_"_PSUJOB,"PSUTMP3",PSUC,T,PSUIDF)) Q:'PSUIDF  D
 | 
|---|
| 93 |  ..S $P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUC),U,N)=PSUIDF
 | 
|---|
| 94 |  ..S N=N+1
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  F N=8:1:28 I '$P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUC),U,N) D
 | 
|---|
| 97 |  .S $P(^XTMP("PSU_"_PSUJOB,"PSUIPV",PSUC),U,N)=""    ;Set unfilled pieces to null
 | 
|---|
| 98 |  Q
 | 
|---|