| 1 | SCRPW241 ;BPCIOFO/ACS - ACRP Ad Hoc Report (cont.) ;06/30/99
 | 
|---|
| 2 |  ;;5.3;Scheduling;**180,254,351**;AUG 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;----------------------------------------------------------------
 | 
|---|
| 5 |  ; This routine was created due to the max number of bytes
 | 
|---|
| 6 |  ; being reached in SCRPW24
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ; This routine is called by SCRPW24, and it contains CPT API calls
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;----------------------------------------------------------------
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | APAC(SDX) ;Get all procedure codes
 | 
|---|
| 13 |  ; INPUT - .SDX  array reference
 | 
|---|
| 14 |  ; OUTPUT-  SDX  array with CPT pointer, CPT code, quantity
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  K SDX
 | 
|---|
| 17 |  N SDY,SDI,CPTINFO,CPTCODE
 | 
|---|
| 18 |  ; array SDY will contain the CPT information
 | 
|---|
| 19 |  D GETCPT^SDOE(SDOE,"SDY")
 | 
|---|
| 20 |  ; Spin through CPT array and get CPT code and quantity
 | 
|---|
| 21 |  S SDI=0 F  S SDI=$O(SDY(SDI)) Q:'SDI  D
 | 
|---|
| 22 |  . I $D(SDY(SDI,0)) S SDX=$P(SDY(SDI,0),U)
 | 
|---|
| 23 |  . E  Q
 | 
|---|
| 24 |  . S CPTINFO=$$CPT^ICPTCOD(+SDX,+SDOE0,1)
 | 
|---|
| 25 |  . Q:CPTINFO'>0
 | 
|---|
| 26 |  . S CPTCODE=$P(CPTINFO,U,2)
 | 
|---|
| 27 |  . S SDX=SDX_U_CPTCODE_U_$P(SDY(SDI,0),U,16)
 | 
|---|
| 28 |  . I $L($P(SDX,U,2)) D APOTR(.SDX) S SDX(SDI)=SDX
 | 
|---|
| 29 |  . Q
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | APOTR(SDX) ;Transform procedure external value
 | 
|---|
| 33 |  ; INPUT - .SDX  CPT pointer
 | 
|---|
| 34 |  ; OUTPUT-  SDX  text string containing CPT code, CPT text
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  N CPTINFO,CPTTEXT,ENCDT
 | 
|---|
| 37 |  S ENCDT=+$G(SDOE0)
 | 
|---|
| 38 |  I 'ENCDT D
 | 
|---|
| 39 |  .I '$G(SDOE) S ENCDT=$$NOW^XLFDT() Q
 | 
|---|
| 40 |  .D GETGEN^SDOE(SDOE,"SDY")
 | 
|---|
| 41 |  .S ENCDT=+$G(SDY(0))
 | 
|---|
| 42 |  .K SDY
 | 
|---|
| 43 |  S CPTINFO=$$CPT^ICPTCOD(+SDX,ENCDT,1)
 | 
|---|
| 44 |  Q:CPTINFO'>0
 | 
|---|
| 45 |  S CPTTEXT=$P(CPTINFO,U,3)
 | 
|---|
| 46 |  S $P(SDX,U,2)=$P(SDX,U,2)_" "_CPTTEXT
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | APAP(SDX) ;Get ambulatory procedures (no E&M codes)
 | 
|---|
| 50 |  ; INPUT - .SDX  array reference
 | 
|---|
| 51 |  ; OUTPUT-  SDX  array containing CPT pointer, CPT code, CPT text
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  K SDX
 | 
|---|
| 54 |  N SDY,SDI,CPTINFO,CPTCODE
 | 
|---|
| 55 |  D GETCPT^SDOE(SDOE,"SDY")
 | 
|---|
| 56 |  ; Spin through CPT array and get CPT code
 | 
|---|
| 57 |  S SDI=0 F  S SDI=$O(SDY(SDI)) Q:'SDI  D
 | 
|---|
| 58 |  . I $D(SDY(SDI,0)) S SDX=$P(SDY(SDI,0),U)
 | 
|---|
| 59 |  . E  Q
 | 
|---|
| 60 |  . I '$D(^IBE(357.69,"B",SDX)) D
 | 
|---|
| 61 |  .. S CPTINFO=$$CPT^ICPTCOD(+SDX,+SDOE0,1)
 | 
|---|
| 62 |  .. Q:CPTINFO'>0
 | 
|---|
| 63 |  .. S CPTCODE=$P(CPTINFO,U,2)
 | 
|---|
| 64 |  .. S SDX=SDX_U_CPTCODE
 | 
|---|
| 65 |  .. I $L($P(SDX,U,2)) D APOTR(.SDX) S SDX(SDI)=SDX
 | 
|---|
| 66 |  .. Q
 | 
|---|
| 67 |  . Q
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 | APEM(SDX) ;Get evaluation and management codes
 | 
|---|
| 71 |  ; INPUT - .SDX  array reference
 | 
|---|
| 72 |  ; OUTPUT-  SDX  array containing CPT pointer, CPT code, CPT text
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  K SDX
 | 
|---|
| 75 |  N SDY,SDI,CPTINFO,CPTCODE
 | 
|---|
| 76 |  D GETCPT^SDOE(SDOE,"SDY")
 | 
|---|
| 77 |  ; Spin through CPT array and get CPT code
 | 
|---|
| 78 |  S SDI=0 F  S SDI=$O(SDY(SDI)) Q:'SDI  D
 | 
|---|
| 79 |  . I $D(SDY(SDI,0)) S SDX=$P(SDY(SDI,0),U)
 | 
|---|
| 80 |  . E  Q
 | 
|---|
| 81 |  . I $D(^IBE(357.69,"B",SDX)) D
 | 
|---|
| 82 |  .. S CPTINFO=$$CPT^ICPTCOD(+SDX,+SDOE0,1)
 | 
|---|
| 83 |  .. Q:CPTINFO'>0
 | 
|---|
| 84 |  .. S CPTCODE=$P(CPTINFO,U,2)
 | 
|---|
| 85 |  .. S SDX=SDX_U_CPTCODE
 | 
|---|
| 86 |  .. I $L($P(SDX,U,2)) D APOTR(.SDX) S SDX(SDI)=SDX
 | 
|---|
| 87 |  .. Q
 | 
|---|
| 88 |  . Q
 | 
|---|
| 89 |  Q
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 | PDPE(SDX)       ;Get patient's ethnicities
 | 
|---|
| 92 |  K SDX
 | 
|---|
| 93 |  N DFN,VADM,NUM,CNT,ABB,TXT
 | 
|---|
| 94 |  S DFN=$P(SDOE0,U,2)
 | 
|---|
| 95 |  I DFN D DEM^VADPT I VADM(11) S CNT=1,NUM=0 F  S NUM=+$O(VADM(11,NUM)) Q:'NUM  D
 | 
|---|
| 96 |  .I VADM(11,NUM) D
 | 
|---|
| 97 |  ..S TXT=$$PTR2TEXT^DGUTL4(+VADM(11,NUM),2) S:TXT="" TXT="?"
 | 
|---|
| 98 |  ..S ABB=$$PTR2CODE^DGUTL4(+$G(VADM(11,NUM,1)),3,1) S:ABB="" ABB="?"
 | 
|---|
| 99 |  ..S SDX(CNT)=+VADM(11,NUM)_"^"_TXT_" ("_ABB_")",CNT=CNT+1
 | 
|---|
| 100 |  S:$D(SDX)<10 SDX(1)="~~~NONE~~~^~~~UNANSWERED~~~"
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 | PDPR(SDX)       ;Get patient's race
 | 
|---|
| 104 |  K SDX
 | 
|---|
| 105 |  N DFN,VADM,NUM,CNT,ABB,TXT
 | 
|---|
| 106 |  S DFN=$P(SDOE0,U,2)
 | 
|---|
| 107 |  I DFN D DEM^VADPT I VADM(12) S CNT=1,NUM=0 F  S NUM=+$O(VADM(12,NUM)) Q:'NUM  D
 | 
|---|
| 108 |  .I VADM(12,NUM) D
 | 
|---|
| 109 |  ..S TXT=$$PTR2TEXT^DGUTL4(+VADM(12,NUM),1) S:TXT="" TXT="?"
 | 
|---|
| 110 |  ..S ABB=$$PTR2CODE^DGUTL4(+$G(VADM(12,NUM,1)),3,1) S:ABB="" ABB="?"
 | 
|---|
| 111 |  ..S SDX(CNT)=+VADM(12,NUM)_"^"_TXT_" ("_ABB_")",CNT=CNT+1
 | 
|---|
| 112 |  S:$D(SDX)<10 SDX(1)="~~~NONE~~~^~~~UNANSWERED~~~"
 | 
|---|
| 113 |  Q
 | 
|---|