| 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 | 
|---|