| 1 | GMPLPRNT ; SLC/MKB,KER -- Problem List prints/displays; 04/15/2002 | 
|---|
| 2 | ;;2.0;Problem List;**1,13,26**;Aug 25, 1994 | 
|---|
| 3 | ; | 
|---|
| 4 | ; External References | 
|---|
| 5 | ;   DBIA 10090  ^DIC(4 | 
|---|
| 6 | ;   DBIA 10082  ^ICD9( | 
|---|
| 7 | ;   DBIA 10086  ^%ZIS | 
|---|
| 8 | ;   DBIA 10086  HOME^%ZIS | 
|---|
| 9 | ;   DBIA 10089  ^%ZISC | 
|---|
| 10 | ;   DBIA 10063  ^%ZTLOAD | 
|---|
| 11 | ;   DBIA 10026  ^DIR | 
|---|
| 12 | ;   DBIA 10061  OERR^VADPT | 
|---|
| 13 | ;   DBIA 10116  CLEAR^VALM1 | 
|---|
| 14 | ;   DBIA 10103  $$FMTE^XLFDT | 
|---|
| 15 | ;   DBIA 10103  $$NOW^XLFDT | 
|---|
| 16 | ;   DBIA 10104  $$REPEAT^XLFSTR | 
|---|
| 17 | ; | 
|---|
| 18 | EN ; Print/Display (Main) | 
|---|
| 19 | N DIR,X,Y S VALMBCK=$S(VALMCC:"",1:"R") W ! | 
|---|
| 20 | I '(($L(GMPLVIEW("ACT")))!(GMPLVIEW("PROV"))!($L(GMPLVIEW("VIEW"),"/")>2)) S Y="A" G EN1 | 
|---|
| 21 | S DIR(0)="SAOM^C:CURRENT VIEW;A:ALL PROBLEMS;" | 
|---|
| 22 | S DIR("A")="Print (C)urrently displayed problems only, or include (A)ll problems? " | 
|---|
| 23 | S DIR("?",1)="Enter C to print a copy of your currently displayed view" | 
|---|
| 24 | S DIR("?",2)="of this patient's list; to print a complete list of all" | 
|---|
| 25 | S DIR("?",3)="active and inactive problems, which may be included in" | 
|---|
| 26 | S DIR("?")="the patient's chart, select A." | 
|---|
| 27 | D ^DIR G:$D(DTOUT)!($D(DUOUT))!(Y="") ENQ | 
|---|
| 28 | EN1 ;   Print View | 
|---|
| 29 | W ! D @$S(Y="C":"LIST",1:"VAF") | 
|---|
| 30 | I GMPRT'>0 W !!,"No problems found.",!,$C(7) H 1 G ENQ | 
|---|
| 31 | D DEVICE G:$D(GMPQUIT) ENQ | 
|---|
| 32 | D CLEAR^VALM1,PRT S VALMBCK="R" | 
|---|
| 33 | ENQ ;   Quit Print/Display | 
|---|
| 34 | D KILL^GMPLX S VALMSG=$$MSG^GMPLX Q | 
|---|
| 35 | ; | 
|---|
| 36 | VAF ; Build Chart Copy | 
|---|
| 37 | N TOTAL,VIEW K GMPLCURR S (TOTAL,GMPRT)=0 | 
|---|
| 38 | Q:'$D(^AUPNPROB("AC",+GMPDFN)) | 
|---|
| 39 | S (VIEW("ACT"),VIEW("VIEW"))="",VIEW("PROV")=0 | 
|---|
| 40 | D GETPLIST^GMPLMGR1(.GMPRT,.TOTAL,.VIEW) | 
|---|
| 41 | S GMPRT=TOTAL | 
|---|
| 42 | Q | 
|---|
| 43 | ; | 
|---|
| 44 | LIST ; Build Current View | 
|---|
| 45 | S GMPLCURR=1,GMPRT=0 Q:+$G(GMPCOUNT)'>0  N I,IFN | 
|---|
| 46 | W !,"One moment, please ..." | 
|---|
| 47 | F I=0:0 S I=$O(^TMP("GMPLIDX",$J,I)) Q:I'>0  D | 
|---|
| 48 | . S IFN=$P($G(^TMP("GMPLIDX",$J,I)),U,2) Q:IFN'>0 | 
|---|
| 49 | . S GMPRT=GMPRT+1,GMPRT(I)=IFN W "." | 
|---|
| 50 | Q | 
|---|
| 51 | ; | 
|---|
| 52 | DEVICE ; Get Device | 
|---|
| 53 | S %ZIS="Q",%ZIS("B")="" D ^%ZIS I POP S GMPQUIT=1 G DQ | 
|---|
| 54 | I '$D(GMPLCURR) K GMPRINT | 
|---|
| 55 | I $D(IO("Q")) D | 
|---|
| 56 | . S ZTRTN="PRT^GMPLPRNT",ZTDESC="PROBLEM LIST OF "_$P(GMPDFN,U,2) | 
|---|
| 57 | . S (ZTSAVE("GMPRT"),ZTSAVE("GMPRT("),ZTSAVE("GMPDFN"),ZTSAVE("GMPVAMC"))="" | 
|---|
| 58 | . S:$D(GMPLCURR) ZTSAVE("GMPLCURR")="" S ZTDTH=$H | 
|---|
| 59 | . D ^%ZTLOAD,HOME^%ZIS S:$D(ZTSK) GMPQUIT=1 | 
|---|
| 60 | DQ ;   Quit Device | 
|---|
| 61 | K IO("Q"),POP,%ZIS,ZTRTN,ZTDESC,ZTSAVE,ZTSK | 
|---|
| 62 | Q | 
|---|
| 63 | ; | 
|---|
| 64 | HDR ; Header Code | 
|---|
| 65 | N PAGE S PAGE="Page: "_GMPLPAGE,GMPLPAGE=GMPLPAGE+1 | 
|---|
| 66 | W $C(13),$$REPEAT^XLFSTR("-",79),! | 
|---|
| 67 | I IOST?1"P".E W:$D(GMPLCURR) "** NOT for " W "Medical Record" W:$D(GMPLCURR) " **" | 
|---|
| 68 | I IOST'?1"P".E W $P(GMPDFN,U,2)_"  ("_$P(GMPDFN,U,3)_")" | 
|---|
| 69 | W ?41,"|  " W:$D(GMPLCURR) "PARTIAL " | 
|---|
| 70 | W "PROBLEM LIST",?(79-$L(PAGE)),PAGE,! | 
|---|
| 71 | W $$REPEAT^XLFSTR("-",79),! | 
|---|
| 72 | W !,"       Date",?63,"Date of   Date" | 
|---|
| 73 | W !,"     Recorded  Problems",?64,"Onset  Resolved" | 
|---|
| 74 | W !,$$REPEAT^XLFSTR("-",79) | 
|---|
| 75 | Q | 
|---|
| 76 | ; | 
|---|
| 77 | FTR ; Footer Code | 
|---|
| 78 | N I,SITE,DFN,VA,VADM,LOC,DATE,FORM | 
|---|
| 79 | F I=1:1:(IOSL-$Y-6) W ! | 
|---|
| 80 | S SITE=$O(^DIC(4,"D",+GMPVAMC,0)),SITE=$P($G(^DIC(4,+SITE,0)),U) | 
|---|
| 81 | S:SITE'["VAMC" SITE=SITE_" VAMC" | 
|---|
| 82 | S DFN=+GMPDFN D OERR^VADPT | 
|---|
| 83 | S LOC="Pt Loc: "_$S(VAIN(4)]"":$P(VAIN(4),U,2)_"  "_VAIN(5),1:"OUTPATIENT") K VAIN | 
|---|
| 84 | I $L(LOC)>51 S LOC=$E(LOC,1,51),FORM="VAF10-141" | 
|---|
| 85 | E  S FORM="VA FORM 10-1415" | 
|---|
| 86 | W !,$S($D(GMPLFLAG):"$ = Requires verification by provider",1:"") | 
|---|
| 87 | W !,$$REPEAT^XLFSTR("-",79) | 
|---|
| 88 | W !,$P(GMPDFN,U,2),?(79-$L(SITE)\2),SITE | 
|---|
| 89 | S DATE=$$FMTE^XLFDT($E(($$NOW^XLFDT),1,12),2) | 
|---|
| 90 | S DATE="Printed:"_$P(DATE,"@")_" "_$P(DATE,"@",2) | 
|---|
| 91 | W ?(79-$L(DATE)),DATE | 
|---|
| 92 | W !,VA("PID"),?(79-$L(LOC)\2),LOC,?(79-$L(FORM)),FORM | 
|---|
| 93 | W !,$$REPEAT^XLFSTR("-",79),@IOF | 
|---|
| 94 | Q | 
|---|
| 95 | ; | 
|---|
| 96 | RETURN() ; End of page | 
|---|
| 97 | N X,Y,DIR,I F I=1:1:(IOSL-$Y-3) W ! | 
|---|
| 98 | S DIR(0)="E" D ^DIR | 
|---|
| 99 | Q +Y | 
|---|
| 100 | ; | 
|---|
| 101 | PRT ; Body of Problem List | 
|---|
| 102 | U IO N I,IFN,GMPLPAGE,GMPLFLAG S GMPLPAGE=1 D HDR | 
|---|
| 103 | F I=0:0 S I=$O(GMPRT(I)) Q:I'>0  D  Q:$D(GMPQUIT) | 
|---|
| 104 | . S IFN=GMPRT(I) Q:IFN'>0 | 
|---|
| 105 | . D PROB(IFN,I) | 
|---|
| 106 | D FTR:IOST?1"P".E I '$D(GMPQUIT),IOST?1"C".E S I=$$RETURN | 
|---|
| 107 | I $D(ZTQUEUED) S ZTREQ="@" K GMPDFN,GMPLCURR,GMPQUIT,GMPRT | 
|---|
| 108 | D ^%ZISC | 
|---|
| 109 | Q | 
|---|
| 110 | ; | 
|---|
| 111 | PROB(DA,NUM) ; Get Problem Text Line | 
|---|
| 112 | N GMPL0,GMPL1,ONSET,DATE,TEXT,NOTES,J,RESOLVED,X,LINES,PROB,SCS,SP | 
|---|
| 113 | S GMPL0=$G(^AUPNPROB(DA,0)),GMPL1=$G(^(1)) Q:GMPL0=""  Q:GMPL1="" | 
|---|
| 114 | S ONSET=$P(GMPL0,U,13),DATE=$P(GMPL1,U,9),RESOLVED=$P(GMPL1,U,7) | 
|---|
| 115 | D SCS^GMPLX1(+DA,.SCS) S SP=$G(SCS(3)) | 
|---|
| 116 | I 'DATE S DATE=$P(GMPL0,U,8) | 
|---|
| 117 | S PROB=$$PROBTEXT^GMPLX(DA) | 
|---|
| 118 | S PROB=PROB_" ("_$P($G(^ICD9(+GMPL0,0)),U)_")" | 
|---|
| 119 | I $P($G(^AUPNPROB(DA,1)),"^",14)="A" S PROB="*"_PROB | 
|---|
| 120 | E  S PROB=" "_PROB | 
|---|
| 121 | D WRAP^GMPLX(PROB,50,.TEXT) | 
|---|
| 122 | D NOTES(DA) S LINES=TEXT+NOTES+1 | 
|---|
| 123 | I ($Y+LINES)>(IOSL-7) D  Q:$D(GMPQUIT) | 
|---|
| 124 | . I IOST?1"P".E D FTR,HDR Q | 
|---|
| 125 | . I $$RETURN W @IOF D HDR Q | 
|---|
| 126 | . S GMPQUIT=1 | 
|---|
| 127 | PR1 ; Write Problem Text Line | 
|---|
| 128 | W !!,$E("   ",1,3-$L(NUM))_NUM_". "_$J($$EXTDT^GMPLX(DATE),8) | 
|---|
| 129 | I $P(GMPL1,U,2)="T",$P($G(^GMPL(125.99,1,0)),U,2) W ?14,"$" S GMPLFLAG=1 | 
|---|
| 130 | W ?15,TEXT(1),?62,$J($$EXTDT^GMPLX(ONSET),8) | 
|---|
| 131 | I $P(GMPL0,U,12)="I" W ?71,$S(RESOLVED:$J($$EXTDT^GMPLX(RESOLVED),8),1:"unknown") | 
|---|
| 132 | I TEXT>1 F J=2:1:TEXT W !?15,TEXT(J) | 
|---|
| 133 | Q:'NOTES  S DATE=$P(DATE,".") | 
|---|
| 134 | F J=1:1:NOTES S X=$S(DATE'=$P(NOTES(J),U):$$EXTDT^GMPLX($P(NOTES(J),U)),1:"") W !?5,$J(X,8),?17,$P(NOTES(J),U,2) S DATE=$P(NOTES(J),U) | 
|---|
| 135 | Q | 
|---|
| 136 | NOTES(IFN) ; Place Comments in NOTES array | 
|---|
| 137 | N I,NOTE,DATE,TEXT,FAC,NIFN S (NOTES,I)=0 | 
|---|
| 138 | Q:'$D(^AUPNPROB(IFN,11)) | 
|---|
| 139 | S FAC=$O(^AUPNPROB(IFN,11,"B",+GMPVAMC,0)) Q:FAC'>0 | 
|---|
| 140 | F NIFN=0:0 S NIFN=$O(^AUPNPROB(IFN,11,FAC,11,"B",NIFN)) Q:NIFN'>0  D | 
|---|
| 141 | . S NOTE=$G(^AUPNPROB(IFN,11,FAC,11,NIFN,0)) Q:NOTE="" | 
|---|
| 142 | . S DATE=$P(NOTE,U,5),TEXT=$P(NOTE,U,3),I=I+1 | 
|---|
| 143 | . S NOTES(I)=$P(DATE,".")_U_TEXT | 
|---|
| 144 | S NOTES=I | 
|---|
| 145 | Q | 
|---|