| 1 | SCRPW401 ;BPCIOFO/ACS - Diagnosis/Procedure Frequency Report ;06/23/99
 | 
|---|
| 2 |  ;;5.3;Scheduling;**180**;Aug 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;------------------------------------------------------------
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; Purpose  : Rank and print the CPT modifiers
 | 
|---|
| 7 |  ; Called by: SCRPW40
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;INPUT     : MODARRAY(MOD ptr,TYPE)=COUNT
 | 
|---|
| 11 |  ;            the full array referenced from SCRPW40 is -
 | 
|---|
| 12 |  ;            ^TMP("SCRPW",$J,SDIV,"PROC",1,SDPROC,SDMOD,TYPE))
 | 
|---|
| 13 |  ;              SDIV  : division
 | 
|---|
| 14 |  ;              SDPROC: pointer to CPT code
 | 
|---|
| 15 |  ;              SDMOD : pointer to CPT modifier code
 | 
|---|
| 16 |  ;              TYPE  : encounter "ENC" or quantity "QTY"
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ;OUTPUT    : none
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;OTHER     : RANKMOD is the array to hold the ranked modifiers
 | 
|---|
| 21 |  ;            for the current CPT code
 | 
|---|
| 22 |  ;            LINEFLAG is used as a flag to indicate that a line
 | 
|---|
| 23 |  ;            will be skipped before printing the next cpt code
 | 
|---|
| 24 |  ;            (cpt codes are double spaced on the report, but not
 | 
|---|
| 25 |  ;            immediately after printing the report headers, when
 | 
|---|
| 26 |  ;            LINEFLAG=0)
 | 
|---|
| 27 |  ;------------------------------------------------------------
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 | START(MODARRAY) ;build array to hold ranked modifiers (by quantity)
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  N SDMOD,RANKMOD,SDMODQTY
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  ; spin through modifier array and get modifier quantity
 | 
|---|
| 34 |  S SDMOD=0
 | 
|---|
| 35 |  F  S SDMOD=$O(@MODARRAY@(SDMOD)) Q:'SDMOD  D
 | 
|---|
| 36 |  . S SDMODQTY=$G(@MODARRAY@(SDMOD,"QTY"))
 | 
|---|
| 37 |  . Q:'SDMODQTY
 | 
|---|
| 38 |  . ;
 | 
|---|
| 39 |  . ; put modifier quantity and code into new array
 | 
|---|
| 40 |  . S RANKMOD(SDMODQTY,SDMOD)=""
 | 
|---|
| 41 |  . Q
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  ; loop through ranked modifiers in descending order
 | 
|---|
| 44 |  S SDMODQTY=""
 | 
|---|
| 45 |  F  S SDMODQTY=$O(RANKMOD(SDMODQTY),-1) Q:SDMODQTY=""  D
 | 
|---|
| 46 |  . S SDMOD=""
 | 
|---|
| 47 |  . F  S SDMOD=$O(RANKMOD(SDMODQTY,SDMOD),-1) Q:SDMOD=""  D
 | 
|---|
| 48 |  .. ; check page length. go to new page if necessary.
 | 
|---|
| 49 |  .. I $Y>(IOSL-4) D HDR^SCRPW40 D PRHD^SCRPW40 Q:SDOUT
 | 
|---|
| 50 |  .. ;
 | 
|---|
| 51 |  .. ; get modifier and desc
 | 
|---|
| 52 |  .. N MODINFO,MODCODE,MODTEXT,SDMENC,SDMQTY
 | 
|---|
| 53 |  .. S MODINFO=$$MOD^ICPTMOD(SDMOD,"I")
 | 
|---|
| 54 |  .. Q:+MODINFO<0
 | 
|---|
| 55 |  .. S MODCODE=$P(MODINFO,"^",2)
 | 
|---|
| 56 |  .. S MODTEXT=$E($P(MODINFO,"^",3),1,28)
 | 
|---|
| 57 |  .. S SDMENC="-"_$G(@MODARRAY@(SDMOD,"ENC"))
 | 
|---|
| 58 |  .. S SDMQTY="-"_$G(@MODARRAY@(SDMOD,"QTY"))
 | 
|---|
| 59 |  .. W !,?(C+2),"-",MODCODE,?(C+8),MODTEXT
 | 
|---|
| 60 |  .. W ?(C+38),$J(SDMENC,9,0),?(C+50),$J(SDMQTY,9,0)
 | 
|---|
| 61 |  .. Q
 | 
|---|
| 62 |  . S LINEFLAG=1
 | 
|---|
| 63 |  . Q
 | 
|---|
| 64 |  Q
 | 
|---|