| 1 | SDAMBMR2 ;ALB/MLI - PRINT AMBULATORY PROCEDURES MANAGEMENT REPORTS ; 4/27/00 12:14pm
 | 
|---|
| 2 |  ;;5.3;Scheduling;**28,140,132,180,339,387,402**;Aug 13, 1993
 | 
|---|
| 3 | HD S SDPG=SDPG+1 W @IOF,!?20,"AMBULATORY PROCEDURE MANAGEMENT REPORTS",!!,"DATE RANGE: ",SDB,"-",SDE,?50,"DATE PRINTED: ",SDNOW,!,$S(SDFL:SDSTR_" NAME:",1:"ALL "_SDSTR_"S"),?16,SDT,?71,"PAGE: ",$J(SDPG,3) Q
 | 
|---|
| 4 | DT S SDB=SDB+.1,SDE=SDE-.9,SDB=$TR($$FMTE^XLFDT(SDB,"5DF")," ","0"),SDE=$TR($$FMTE^XLFDT(SDE,"5DF")," ","0") Q
 | 
|---|
| 5 | 1 S SDSTR=$S(SDSC="C":"CLINIC",1:"SERVICE") D DT G 2:SDRT="E" I SDSC="C" S I=0 F I1=0:0 S I=$S(VAUTC:$O(^TMP($J,I)),1:$O(VAUTC(I))) Q:I=""!SDFG  I $D(^TMP($J,I,"T")),^("T") S SDT=I,SDFL=1 D P^SDAMBMR3 Q:SDFG
 | 
|---|
| 6 |  I SDSC="S" F I="M","N","P","R","S" I SDAS!$D(SDS(I)) I ^TMP($J,I,"T") D SET,P^SDAMBMR3 Q:SDFG
 | 
|---|
| 7 |  D TOT Q
 | 
|---|
| 8 | 2 G 3:SDPN="N" S I=0
 | 
|---|
| 9 |  F I1=0:0 D:I'=0 P^SDAMBMR3 Q:SDFG  S I=$O(^TMP($J,"*PRO",I)) Q:I=""!(SDSC="S"&I)!SDFG  D SET,HD2 Q:SDFG  F J=0:0 D:J T S J=$O(^TMP($J,"*PRO",I,J)) Q:J=""  D CD,PN:SDPT=1 D:$Y>(IOSL-5) HD2 Q:SDFG
 | 
|---|
| 10 |  D TOT Q
 | 
|---|
| 11 | 3 S (SDFL,I)=0,SDSTR=$S(SDSC="C":"CLINIC",1:"SERVICE")
 | 
|---|
| 12 |  F I1=0:0 D:SDFL P^SDAMBMR3 S SDFL=0,I=$O(^TMP($J,"*PTC",I)) Q:I=""!SDFG  D SET,HD3 Q:SDFG  D CONT
 | 
|---|
| 13 |  D TOT Q
 | 
|---|
| 14 | CONT S J=0 F J1=0:0 S J=$O(^TMP($J,"*PTC",I,J)) Q:J=""!SDFG  S K=0 F K1=0:0 S K=$O(^TMP($J,"*PTC",I,J,K)) Q:K=""  D C D:$Y>(IOSL-5) HD3 Q:SDFG
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 | PN S L=0,K="A"
 | 
|---|
| 17 |  F K1=0:0 S K=$O(^TMP($J,"*PRO",I,J,K)) Q:K=""!SDFG  F L1=0:0 S L=$O(^TMP($J,"*PRO",I,J,K,L)) Q:L=""!SDFG  F M=0:0 S M=$O(^TMP($J,"*PRO",I,J,K,L,M)) Q:M=""  S SDINFO=^(M) D PNAME D:$Y>(IOSL-5) HD2 Q:SDFG
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | PNAME N %
 | 
|---|
| 21 |  F %=1:1:$P(SDINFO,U,4) W !,?8,$E(K,1,18),?28,$P(SDINFO,U,10),?39,"AGE: ",$J($P(SDINFO,U,2),3),?49,$S($P(SDINFO,U)=1:"VETERAN",1:"NON-VET"),?58,$P(SDINFO,U,3),?61 S VADAT("W")=M D ^VADATE W VADATE("E")
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ;If prompt "Sort by 'P'rocedure or patient 'N'ame: P//PROCEDURE"
 | 
|---|
| 25 |  ;CPTMOD is called to print Procedure (CPT) codes and associated
 | 
|---|
| 26 |  ;Modifiers.
 | 
|---|
| 27 | CD N BLKLN,MODCODE,MODINFO,MODTEXT,MODVAL,SDJJ,KK,ICPTVDT
 | 
|---|
| 28 |  S (BLKLN,MODVAL)=0,SDHI=I D HD2:($Y>(IOSL-5)) Q:SDFG
 | 
|---|
| 29 |  S %DT="X",X=SDE D ^%DT S ICPTVDT=$S(Y<0:DT,1:Y)
 | 
|---|
| 30 |  S J=$P($$CPT^ICPTCOD(J,ICPTVDT),"^",1)  ; equals IEN for CPT
 | 
|---|
| 31 |  S KK=$P($$CPT^ICPTCOD(J,ICPTVDT),"^",2)  ; SD*5.3*339 external CPT value
 | 
|---|
| 32 |  W !!,$G(KK)  ; SD*5.3*339 print external CPT code
 | 
|---|
| 33 |  S I=J D N W ?7,$E(SDN,1,72) S I=SDHI
 | 
|---|
| 34 |  Q:'SDMOD
 | 
|---|
| 35 |  I $D(^TMP($J,"*PRO",I,J,0)) S MODVAL=$P(^TMP($J,"*PRO",I,J,0),"^",2,99)
 | 
|---|
| 36 |  I $D(^TMP($J,"*PRO",I,J,1)) S MODVAL=$P(^TMP($J,"*PRO",I,J,1),"^",2,99)
 | 
|---|
| 37 |  Q:'MODVAL
 | 
|---|
| 38 |  F SDJJ=1:1:$L(MODVAL,"^") S MODINFO=$P(MODVAL,"^",SDJJ)  D
 | 
|---|
| 39 |  . S MODINFO=$$MOD^ICPTMOD(MODINFO,"I",ICPTVDT,1)
 | 
|---|
| 40 |  . Q:MODINFO'>0
 | 
|---|
| 41 |  . S MODCODE="-"_$P(MODINFO,"^",2)
 | 
|---|
| 42 |  . S MODTEXT=$P(MODINFO,"^",3)
 | 
|---|
| 43 |  . W !?2,MODCODE,?8,$E(MODTEXT,1,65)
 | 
|---|
| 44 |  . Q
 | 
|---|
| 45 |  W !
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 | HD2 Q:SDFG  I IOST?1"C-".E R !?20,"Enter <RETURN> to continue",SDFG1:DTIME I SDFG1["^"!'$T S SDFG=1 Q
 | 
|---|
| 48 |  D HD W !!?25,"SUMMARY OF PROCEDURES PERFORMED",! K Y S $P(Y,"-",81)="" W Y Q
 | 
|---|
| 49 | HD3 Q:SDFG  I IOST?1"C-".E R !?20,"Enter <RETURN> to continue",SDFG1:DTIME I SDFG1["^"!'$T S SDFG=1 Q
 | 
|---|
| 50 |  D HD W !!?31,"SUMMARY BY PATIENT",!,"NAME",?27,"SSN",?38,"AGE",?43,"VET/NON",?53,"SEX",?60,"DATE/TIME OF STOP",! K Y S $P(Y,"-",81)="" W Y
 | 
|---|
| 51 | SET S SDT=$S(SDSC="C":I,I="M":"MEDICINE",I="N":"NEUROLOGY",I="P":"PSYCHIATRY",I="R":"REHAB MEDICINE",I="S":"SURGERY",I="Z":"NONE",1:"UNKNOWN"),SDFL=1 Q
 | 
|---|
| 52 | T W !?8,"TOTAL PROCEDURES==>",?30,"VETERAN:",?39,$J($S($D(^TMP($J,"*PRO",I,J,1)):$P(^(1),"^",1),1:0),4),?47,"NON-VETERAN:",$J($S($D(^(0)):$P(^(0),"^",1),1:0),4)
 | 
|---|
| 53 |  W ?69,"TOTAL:",?76,$J($S($D(^TMP($J,"*PRO",I,J,0))&$D(^(1)):$P(^(0),"^",1)+$P(^(1),"^",1),'$D(^(0)):$P(^(1),"^",1),1:$P(^(0),"^",1)),4) Q
 | 
|---|
| 54 | C F L=-1:0 S L=$O(^TMP($J,"*PTC",I,J,K,L)) Q:L=""  F M=0:0 S M=$O(^TMP($J,"*PTC",I,J,K,L,M)) Q:M=""  M SDINFO=^(M) D C2
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | C2 W !!,$E(J,1,24),?27,$P(SDINFO,U,10) ; 10th piece is ssn
 | 
|---|
| 57 |  W ?38,$P(SDINFO,U),?43,$S(L=1:"VETERAN",1:"NON-VET"),?52,$S($P(SDINFO,U,2)="M":" MALE",1:"FEMALE"),?60 S VADAT("W")=M D ^VADATE W VADATE("E") D LIST
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ;If "Sort by 'P'rocedure or patient 'N'ame: P//NAME" the patient name
 | 
|---|
| 61 |  ;,Procedure (CPT) Codes and Modifiers will be printed.
 | 
|---|
| 62 | LIST N BLKLN,MODCODE,MODINFO,MODTEXT,MODVAL,SDJJ,ICPTVDT
 | 
|---|
| 63 |  S %DT="X",X=SDE D ^%DT S ICPTVDT=$S(Y<0:DT,1:Y)
 | 
|---|
| 64 |  S BLKLN=1
 | 
|---|
| 65 |  F PR=11:1 S SDPRO=$P(SDINFO,U,PR) Q:'SDPRO  D
 | 
|---|
| 66 |  . S SDHI=I D HD:($Y>(IOSL)) Q:SDFG
 | 
|---|
| 67 |  . W !?5,$P($$CPT^ICPTCOD(SDPRO,ICPTVDT),U,2) S I=SDPRO D N  ; SD*5.3*402
 | 
|---|
| 68 |  . W ?12,$E(SDN,1,67) S I=SDHI
 | 
|---|
| 69 |  . Q:'SDMOD
 | 
|---|
| 70 |  . S MODVAL=SDINFO(PR-10)
 | 
|---|
| 71 |  . F SDJJ=1:1:$L(MODVAL,"^") S MODINFO=$P(MODVAL,"^",SDJJ)  D
 | 
|---|
| 72 |  . . S MODINFO=$$MOD^ICPTMOD(MODINFO,"I",ICPTVDT,1)
 | 
|---|
| 73 |  . . Q:MODINFO'>0
 | 
|---|
| 74 |  . . S MODCODE="-"_$P(MODINFO,"^",2)
 | 
|---|
| 75 |  . . S MODTEXT=$P(MODINFO,"^",3)
 | 
|---|
| 76 |  . . W !?7,MODCODE,?13,$E(MODTEXT,1,65)
 | 
|---|
| 77 |  . . Q
 | 
|---|
| 78 |  . W !
 | 
|---|
| 79 |  . Q
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | TOT Q:SDFG  K I S SDT="",SDFL=0 D P^SDAMBMR3 Q
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  ;Retrieves the Procedure (CPT) Code description by calling API
 | 
|---|
| 84 |  ;CPTD^ICPTCOD
 | 
|---|
| 85 | N N DATA,SDIX,SDDATA,SDCOUNT,ICPTVDT
 | 
|---|
| 86 |  S %DT="X",X=SDE D ^%DT S ICPTVDT=$S(Y<0:DT,1:Y)
 | 
|---|
| 87 |  S SDN="",DATA=""
 | 
|---|
| 88 |  ;F  S DATA=$O(DESCR(DATA)) Q:'DATA  S SDN=SDN_" "_DESCR(DATA) Q:$L(SDN)>72
 | 
|---|
| 89 |  ;SDDATA will contain the returned information from the call to CPTD^ICPTCOD.
 | 
|---|
| 90 |  ;This is an extrinsic function, and can't be called with a "Do" statement.
 | 
|---|
| 91 |  S SDDATA=$$CPTD^ICPTCOD(I,"DESCR",,ICPTVDT)
 | 
|---|
| 92 |  S SDCOUNT=$P(SDDATA,"^",1)
 | 
|---|
| 93 |  F SDIX=1:1:SDCOUNT S SDN=SDN_" "_DESCR(SDIX) Q:$L(SDN)>72
 | 
|---|
| 94 |  S SDN=$E(SDN,1,72)
 | 
|---|
| 95 |  Q
 | 
|---|