- MCARPS ;WISC/TJK,RCH-PROCEDURE SUMMARY REPORTS ;6/18/97 10:53
- ;;2.3;Medicine;**8**;09/13/1996
- CHOOZ K S5 R !,"PRINT BY DATE OR PROCEDURE (D/P): D//",WH:DTIME
- S WH=$E(WH,1) G BEG:"DP"[WH I WH'?1"^".E W:WH'?1"?".E *7," ??" D HELP G CHOOZ
- K WH,X,Y Q
- BEG ;SEARCH FOR SELECTED PATIENT IN CARDIOLOGY FILE
- I WH="P" D PROC I $D(S5),S5=U G CHOOZ
- S DIC="^MCAR(690,",DIC(0)="AEQM"
- D ^DIC I Y<0 K WH,DIC,Y Q
- ; ------------------------
- ; SSN = Enternal Format of the patients SSN with the first letter
- ; of the last name tacked on the end
- ; ------------------------
- S DFN=+Y D DEM^VADPT S MCARNM=VADM(1),SSN=VA("PID")
- D INP^VADPT S WARD=$S(VAIN(4)'="":$P(VAIN(4),U,2),1:"NOT INPATIENT") D KVAR^VADPT
- LOC ;LOCATE PROCEDURES FROM "AC" X-REF
- I '$D(^MCAR(690,"AC",DFN)) W !!,"NO PROCEDURES FOR THIS PATIENT" G BEG
- I $D(S5),'$D(@(U_S5_",""C"","_DFN_")")) W !!,"NO ",$P(@(U_S5_",0)"),U,1)," PROCEDURES FOR THIS PATIENT" G BEG
- D ^MCARPS1
- PR K IO("Q") S %ZIS="QM" D ^%ZIS K %ZIS G EXIT:POP
- I $D(IO("Q")) K IO("Q") S ZTRTN="PR0^MCARPS",ZTDESC="PROCEDURE SUMMARY"
- I S ZTSAVE("^TMP(""MCAR"",$J,")="",(ZTSAVE("DFN"),ZTSAVE("WH"),ZTSAVE("MC*"),ZTSAVE("SSN"),ZTSAVE("WARD"))="" D ^%ZTLOAD K ZTSK W !!,*7,"Report Queued" G FIN
- U IO
- PR0 D TOP S I="",L=0
- PR1 S I=$O(^TMP("MCAR",$J,I)) G PR1:I="OT" I I="" G EXP:IOST'?1"P-".E,FIN
- S J=""
- PR2 S J=$O(^TMP("MCAR",$J,I,J)) G PR1:J=""
- S PR=^(J),MCARDT=$S(WH="P":$P(J,U),1:I),MCARPROC=$S(WH="P":I,1:$P(J,U)) ;MC*2.3*8
- S MCARPROC=$O(^MCAR(697.2,"B",MCARPROC,0)),MCARPROC=$P(^MCAR(697.2,MCARPROC,0),U,8)
- I $P(PR,U,12)'="" S MCARPROC=$P(PR,U,12) ;MC*2.3*8
- S DA=$P(PR,U,2),K=$P(PR,U),M=$P(PR,U,10)
- S K=$S(K="N"!(K="L"):"NORMAL",K="A":"ABNORMAL",K="B":"BORDERLINE",K="T":"TECHNICALLY UNSATISFACTORY",K="ND":"NON-DIAGNOSTIC",K="MI":"MILDLY ABNORMAL",K="MO":"MODERATELY ABNORMAL",K="S":"SEVERELY ABNORMAL",1:"")
- ;S Y=9999999.9999-MCARDT X ^DD("DD") S L=L+1 W !,$J(L,2),?4,MCARPROC,?36,Y,?56,$E(K,1,22) W !,?1,M S ^TMP("MCAR",$J,"OT",L)=MCARPROC_U_DA_U_$P(PR,U,3,5)_U_J S $P(^(L),U,6)=Y,$P(^(L),U,7)=K,$P(^(L),U,10)=M,$P(^(L),U,11)=J
- S Y=9999999.9999-MCARDT X ^DD("DD") S L=L+1 W !,$J(L,2),?4,MCARPROC,?36,Y,?56,$E(K,1,22) W !,?1,M S ^TMP("MCAR",$J,"OT",L)=MCARPROC_U_DA_U_$P(PR,U,3,5)_U_J S $P(^(L),U,6)=Y,$P(^(L),U,7)=K,$P(^(L),U,10)=M,$P(^(L),U,11)=$S(WH="P":I_U_$P(J,U,2),1:J)
- S LN=LN+2 I LN'<(IOSL-2) G EXP:IOST'?1"P-".E D TOP
- G PR2
- TOP W @IOF,!,"NAME: ",MCARNM,?35,"SSN: ",SSN,?55,"WARD: ",$E(WARD,1,19)
- ;W !!,"PROCEDURE",?36,"DATE",?56,"RESULTS",! F M=1:1:79 W "-"
- W !!,"(SUBSPECIALTY)/PROCEDURE",?36,"DATE",?56,"RESULTS" S M="",$P(M,"-",79)="-" W !,M
- S LN=6 Q
- EXP G FIN:LN=6 W !!,*7,"FOR PROCEDURE EXPANSION (1-",L,") OR <RETURN> TO CONTINUE DISPLAY//" R R:DTIME G EXIT:R=U,EXIT:'$T
- I R'="",$D(^TMP("MCAR",$J,"OT",R)) G EXP1
- G FIN:I="" D TOP G PR2
- EXP1 W @IOF,!! S OT=^TMP("MCAR",$J,"OT",R),(DA,MCARGDA)=$P(OT,U,2),MCARPPS=$P(OT,U,3,4),MCPRO=$P(OT,U,11) D MCPPROC^MCARP
- S MCARGRTN=$P(OT,U,5)
- K DXS D NEW,REDISP G EXP
- FIN W:IOST'?1"P-".E !!,"END OF REPORT" W:IOST?1"P-".E @IOF D ^%ZISC
- EXIT S:$D(ZTQUEUED) ZTREQ="@" K ZTSK
- K LN,PR,OT,DA,MCARPPS,I,J,R,L,S1,S2,S4,S5,S6,DFN,LL,LL1,MCARGRTN,POP,IO("Q")
- K ^TMP("MCAR",$J),K,N,MCARDT,WARD,MCARNM,MCARPROC,M,SSN
- ;The kill statement on next line will reset the TMP global for Imaging
- K ^TMP("MAG","ROW"),^("COL")
- Q
- NEW N DFN,SSN,I,J,L D @MCARPPS Q
- REDISP S MCL=$S(L#8:L-(L#8),1:L-8) D TOP
- F MCRED=MCL+1:1:MCL+8 Q:'$D(^TMP("MCAR",$J,"OT",MCRED)) S MCRED1=^(MCRED) W !,$J(MCRED,2),?4,$P(MCRED1,U),?36,$P(MCRED1,U,6),?56,$E($P(MCRED1,U,7),1,22),!,?1,$P(MCRED1,U,10) S LN=LN+2
- K MCL,MCRED,MCRED1 Q
- PROC K PE,S5 R !,"Select Procedure: ALL// ",S5:DTIME
- Q:S5=U I S5="ALL"!(S5="") K S5 Q
- S DIC(0)="ZQE",DIC=697.2,X=S5 D ^DIC
- G PROC:Y<0 S S5=$P(Y(0),U,2),PE=$P(Y(0),U,1) Q
- HELP W !,"You may sort this report by date or procedure.",!,"If you choose 'D' (date) all medical procedures will be displayed starting",!,"with the most recent procedure."
- W !,"If you choose 'P' (procedure), you may specify in the next prompt either a",!,"specific procedure or 'ALL' procedures, alphabetically arranged with the most",!,"recent of that type of procedure displayed first." Q
- MCARPS ;WISC/TJK,RCH-PROCEDURE SUMMARY REPORTS ;6/18/97 10:53
- +1 ;;2.3;Medicine;**8**;09/13/1996
- CHOOZ KILL S5
- READ !,"PRINT BY DATE OR PROCEDURE (D/P): D//",WH:DTIME
- +1 SET WH=$EXTRACT(WH,1)
- IF "DP"[WH
- GOTO BEG
- IF WH'?1"^".E
- IF WH'?1"?".E
- WRITE *7," ??"
- DO HELP
- GOTO CHOOZ
- +2 KILL WH,X,Y
- QUIT
- BEG ;SEARCH FOR SELECTED PATIENT IN CARDIOLOGY FILE
- +1 IF WH="P"
- DO PROC
- IF $DATA(S5)
- IF S5=U
- GOTO CHOOZ
- +2 SET DIC="^MCAR(690,"
- SET DIC(0)="AEQM"
- +3 DO ^DIC
- IF Y<0
- KILL WH,DIC,Y
- QUIT
- +4 ; ------------------------
- +5 ; SSN = Enternal Format of the patients SSN with the first letter
- +6 ; of the last name tacked on the end
- +7 ; ------------------------
- +8 SET DFN=+Y
- DO DEM^VADPT
- SET MCARNM=VADM(1)
- SET SSN=VA("PID")
- +9 DO INP^VADPT
- SET WARD=$SELECT(VAIN(4)'="":$PIECE(VAIN(4),U,2),1:"NOT INPATIENT")
- DO KVAR^VADPT
- LOC ;LOCATE PROCEDURES FROM "AC" X-REF
- +1 IF '$DATA(^MCAR(690,"AC",DFN))
- WRITE !!,"NO PROCEDURES FOR THIS PATIENT"
- GOTO BEG
- +2 IF $DATA(S5)
- IF '$DATA(@(U_S5_",""C"","_DFN_")"))
- WRITE !!,"NO ",$PIECE(@(U_S5_",0)"),U,1)," PROCEDURES FOR THIS PATIENT"
- GOTO BEG
- +3 DO ^MCARPS1
- PR KILL IO("Q")
- SET %ZIS="QM"
- DO ^%ZIS
- KILL %ZIS
- IF POP
- GOTO EXIT
- +1 IF $DATA(IO("Q"))
- KILL IO("Q")
- SET ZTRTN="PR0^MCARPS"
- SET ZTDESC="PROCEDURE SUMMARY"
- +2 IF $TEST
- SET ZTSAVE("^TMP(""MCAR"",$J,")=""
- SET (ZTSAVE("DFN"),ZTSAVE("WH"),ZTSAVE("MC*"),ZTSAVE("SSN"),ZTSAVE("WARD"))=""
- DO ^%ZTLOAD
- KILL ZTSK
- WRITE !!,*7,"Report Queued"
- GOTO FIN
- +3 USE IO
- PR0 DO TOP
- SET I=""
- SET L=0
- PR1 SET I=$ORDER(^TMP("MCAR",$JOB,I))
- IF I="OT"
- GOTO PR1
- IF I=""
- IF IOST'?1"P-".E
- GOTO EXP
- GOTO FIN
- +1 SET J=""
- PR2 SET J=$ORDER(^TMP("MCAR",$JOB,I,J))
- IF J=""
- GOTO PR1
- +1 ;MC*2.3*8
- SET PR=^(J)
- SET MCARDT=$SELECT(WH="P":$PIECE(J,U),1:I)
- SET MCARPROC=$SELECT(WH="P":I,1:$PIECE(J,U))
- +2 SET MCARPROC=$ORDER(^MCAR(697.2,"B",MCARPROC,0))
- SET MCARPROC=$PIECE(^MCAR(697.2,MCARPROC,0),U,8)
- +3 ;MC*2.3*8
- IF $PIECE(PR,U,12)'=""
- SET MCARPROC=$PIECE(PR,U,12)
- +4 SET DA=$PIECE(PR,U,2)
- SET K=$PIECE(PR,U)
- SET M=$PIECE(PR,U,10)
- +5 SET K=$SELECT(K="N"!(K="L"):"NORMAL",K="A":"ABNORMAL",K="B":"BORDERLINE",K="T":"TECHNICALLY UNSATISFACTORY",K="ND":"NON-DIAGNOSTIC",K="MI":"MILDLY ABNORMAL",K="MO":"MODERATELY ABNORMAL",K="S":"SEVERELY ABNORMAL",1:"")
- +6 ;S Y=9999999.9999-MCARDT X ^DD("DD") S L=L+1 W !,$J(L,2),?4,MCARPROC,?36,Y,?56,$E(K,1,22) W !,?1,M S ^TMP("MCAR",$J,"OT",L)=MCARPROC_U_DA_U_$P(PR,U,3,5)_U_J S $P(^(L),U,6)=Y,$P(^(L),U,7)=K,$P(^(L),U,10)=M,$P(^(L),U,11)=J
- +7 SET Y=9999999.9999-MCARDT
- XECUTE ^DD("DD")
- SET L=L+1
- WRITE !,$JUSTIFY(L,2),?4,MCARPROC,?36,Y,?56,$EXTRACT(K,1,22)
- WRITE !,?1,M
- SET ^TMP("MCAR",$JOB,"OT",L)=MCARPROC_U_DA_U_$PIECE(PR,U,3,5)_U_J
- SET $PIECE(^(L),U,6)=Y
- SET $PIECE(^(L),U,7)=K
- SET $PIECE(^(L),U,10)=M
- SET $PIECE(^(L),U,11)=$SELECT(WH="P":I_U_$PIECE(J,U,2),1:J)
- +8 SET LN=LN+2
- IF LN'<(IOSL-2)
- IF IOST'?1"P-".E
- GOTO EXP
- DO TOP
- +9 GOTO PR2
- TOP WRITE @IOF,!,"NAME: ",MCARNM,?35,"SSN: ",SSN,?55,"WARD: ",$EXTRACT(WARD,1,19)
- +1 ;W !!,"PROCEDURE",?36,"DATE",?56,"RESULTS",! F M=1:1:79 W "-"
- +2 WRITE !!,"(SUBSPECIALTY)/PROCEDURE",?36,"DATE",?56,"RESULTS"
- SET M=""
- SET $PIECE(M,"-",79)="-"
- WRITE !,M
- +3 SET LN=6
- QUIT
- EXP IF LN=6
- GOTO FIN
- WRITE !!,*7,"FOR PROCEDURE EXPANSION (1-",L,") OR <RETURN> TO CONTINUE DISPLAY//"
- READ R:DTIME
- IF R=U
- GOTO EXIT
- IF '$TEST
- GOTO EXIT
- +1 IF R'=""
- IF $DATA(^TMP("MCAR",$JOB,"OT",R))
- GOTO EXP1
- +2 IF I=""
- GOTO FIN
- DO TOP
- GOTO PR2
- EXP1 WRITE @IOF,!!
- SET OT=^TMP("MCAR",$JOB,"OT",R)
- SET (DA,MCARGDA)=$PIECE(OT,U,2)
- SET MCARPPS=$PIECE(OT,U,3,4)
- SET MCPRO=$PIECE(OT,U,11)
- DO MCPPROC^MCARP
- +1 SET MCARGRTN=$PIECE(OT,U,5)
- +2 KILL DXS
- DO NEW
- DO REDISP
- GOTO EXP
- FIN IF IOST'?1"P-".E
- WRITE !!,"END OF REPORT"
- IF IOST?1"P-".E
- WRITE @IOF
- DO ^%ZISC
- EXIT IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- KILL ZTSK
- +1 KILL LN,PR,OT,DA,MCARPPS,I,J,R,L,S1,S2,S4,S5,S6,DFN,LL,LL1,MCARGRTN,POP,IO("Q")
- +2 KILL ^TMP("MCAR",$JOB),K,N,MCARDT,WARD,MCARNM,MCARPROC,M,SSN
- +3 ;The kill statement on next line will reset the TMP global for Imaging
- +4 KILL ^TMP("MAG","ROW"),^("COL")
- +5 QUIT
- NEW NEW DFN,SSN,I,J,L
- DO @MCARPPS
- QUIT
- REDISP SET MCL=$SELECT(L#8:L-(L#8),1:L-8)
- DO TOP
- +1 FOR MCRED=MCL+1:1:MCL+8
- IF '$DATA(^TMP("MCAR",$JOB,"OT",MCRED))
- QUIT
- SET MCRED1=^(MCRED)
- WRITE !,$JUSTIFY(MCRED,2),?4,$PIECE(MCRED1,U),?36,$PIECE(MCRED1,U,6),?56,$EXTRACT($PIECE(MCRED1,U,7),1,22),!,?1,$PIECE(MCRED1,U,10)
- SET LN=LN+2
- +2 KILL MCL,MCRED,MCRED1
- QUIT
- PROC KILL PE,S5
- READ !,"Select Procedure: ALL// ",S5:DTIME
- +1 IF S5=U
- QUIT
- IF S5="ALL"!(S5="")
- KILL S5
- QUIT
- +2 SET DIC(0)="ZQE"
- SET DIC=697.2
- SET X=S5
- DO ^DIC
- +3 IF Y<0
- GOTO PROC
- SET S5=$PIECE(Y(0),U,2)
- SET PE=$PIECE(Y(0),U,1)
- QUIT
- HELP WRITE !,"You may sort this report by date or procedure.",!,"If you choose 'D' (date) all medical procedures will be displayed starting",!,"with the most recent procedure."
- +1 WRITE !,"If you choose 'P' (procedure), you may specify in the next prompt either a",!,"specific procedure or 'ALL' procedures, alphabetically arranged with the most",!,"recent of that type of procedure displayed first."
- QUIT