| 1 | NURCEVE1 ;HIRMFO/RTK,RM-Nursing Care Plans Edit Report ;8/29/96
 | 
|---|
| 2 |  ;;4.0;NURSING SERVICE;;Apr 25, 1997
 | 
|---|
| 3 | GETPROB(NURENT,DATE) ; GIVEN ENTRY IN 216.8 (NURENT), FUNCTION WILL
 | 
|---|
| 4 |  ; RETURN NUMBER OF ACTIVE PROBLEMS FOUND.  IF
 | 
|---|
| 5 |  ; COUNT>0, PROBLEMS WILL BE IN ^TMP("NURCHC",$J,X) ARRAY
 | 
|---|
| 6 |  ; WHERE 1 <= X <=COUNT
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ; DATE (optional) CAN BE SET TO SCREEN OUT ONLY THOSE PROBLEMS
 | 
|---|
| 9 |  ; THAT NEED TO BE EVALUATED AS OF THIS DATE
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  I $G(DATE)="" S DATE=""
 | 
|---|
| 12 |  K ^TMP("NURPRB",$J),^TMP("NURCHC",$J)
 | 
|---|
| 13 |  N NURACM
 | 
|---|
| 14 |  S NURACM=$$SRTPROB($$GETPRB(NURENT,DATE))
 | 
|---|
| 15 |  K ^TMP("NURPRB",$J)
 | 
|---|
| 16 |  Q NURACM
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | GETPRB(NURENT,DATE) ; GIVEN ENTRY IN 216.8 (NURENT), FUNCTION WILL
 | 
|---|
| 19 |  ; RETURN 1 IF THERE ARE ACTIVE PROBLEMS, ELSE 0.
 | 
|---|
| 20 |  ; IF FUNCTION RETURNS 1, THEN PROBLEMS WILL BE IN:
 | 
|---|
| 21 |  ;      ^TMP("NURPRB",$J,PROBNAME,PROBIEN,GMRGPDA) ARRAY
 | 
|---|
| 22 |  ; WHERE PROBNAME=FREE TEXT, PROBIEN=PTR 124.2, GMRGPDA=PTR 124.3
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ; AN OPTIONAL VARIABLE DATE CAN BE SET TO SCREEN OUT ONLY THOSE PROBLEMS
 | 
|---|
| 25 |  ; THAT NEED TO BE EVALUATED AS OF THIS DATE
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  I $G(DATE)="" S DATE=""
 | 
|---|
| 28 |  N IEN,NURDATE,NURMUL,NURPRB,NURSTAT,PROBNAME,REVDT,X,Y
 | 
|---|
| 29 |  S NURCPRB=$O(^GMRD(124.25,"AA","NURSC","NURSING PROBLEM",0))
 | 
|---|
| 30 |  F NURMUL=0:0 S NURMUL=$O(^NURSC(216.8,NURENT,"PROB",NURMUL)) Q:NURMUL'>0  D
 | 
|---|
| 31 |  .   S NURPRB=+$G(^NURSC(216.8,NURENT,"PROB",NURMUL,0)) Q:NURPRB'>0
 | 
|---|
| 32 |  .   S X=$G(^GMRD(124.2,NURPRB,0)),PROBNAME=$P(X,U) Q:PROBNAME=""
 | 
|---|
| 33 |  .   I $P(X,U,4)'=NURCPRB!'$$ACTIVE^NURCEVE2(GMRGPDA,NURPRB) Q
 | 
|---|
| 34 |  .   S (NURSTAT,NURDATE)=""
 | 
|---|
| 35 |  .   F REVDT=0:0 S REVDT=$O(^NURSC(216.8,NURENT,"EVAL","AA",NURPRB,REVDT)) Q:REVDT'>0  S IEN=$O(^NURSC(216.8,NURENT,"EVAL","AA",NURPRB,REVDT,0)) I IEN>0 D  Q
 | 
|---|
| 36 |  .   .   S X=$G(^NURSC(216.8,NURENT,"EVAL",IEN,0))
 | 
|---|
| 37 |  .   .   S NURSTAT=$P(X,U,4)
 | 
|---|
| 38 |  .   .   S Y=$P(X,U,5) D DD^%DT S NURDATE=$P(X,U,5)_U_Y
 | 
|---|
| 39 |  .   .   Q
 | 
|---|
| 40 |  .   I "^1^2^3^"'[NURSTAT&(DATE=""!(DATE'<$P(NURDATE,U))) S ^TMP("NURPRB",$J,$P(NURCPDT(GMRGPDA),U),NURPRB,GMRGPDA)=PROBNAME_U_$P(NURDATE,U,2)
 | 
|---|
| 41 |  .   Q
 | 
|---|
| 42 |  K NURCPRB
 | 
|---|
| 43 |  Q $O(^TMP("NURPRB",$J,""))'=""
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 | SRTPROB(NURACM) ; GIVEN FLAG (NURACM) AS $S(0:NO ARRAY,1:ARRAY EXISTS)
 | 
|---|
| 46 |  ; WHERE ARRAY IS ^TMP("NURPRB",$J,PROBNAME,NURPRB,GMRGPDA), THIS
 | 
|---|
| 47 |  ; FUNCTION WILL RETURN NUMBER OF ARRAY ELEMENTS (COUNT) AND IF
 | 
|---|
| 48 |  ; COUNT>0 THIS FUNCTION WILL RETURN ^TMP("NURCHC",$J,X) ARRAY
 | 
|---|
| 49 |  ; WHERE X IS 1 <= X <= COUNT.
 | 
|---|
| 50 |  N GMRGPDA,NURPRB,PROBNAME
 | 
|---|
| 51 |  I NURACM=1 D
 | 
|---|
| 52 |  .   S NURACM=0,PROBNAME=""
 | 
|---|
| 53 |  .   F  S PROBNAME=$O(^TMP("NURPRB",$J,PROBNAME)) Q:PROBNAME=""  F NURPRB=0:0 S NURPRB=$O(^TMP("NURPRB",$J,PROBNAME,NURPRB)) Q:NURPRB'>0  F GMRGPDA=0:0 S GMRGPDA=$O(^TMP("NURPRB",$J,PROBNAME,NURPRB,GMRGPDA)) Q:GMRGPDA'>0  D
 | 
|---|
| 54 |  .   .   S NURACM=NURACM+1
 | 
|---|
| 55 |  .   .   S ^TMP("NURCHC",$J,NURACM)=NURPRB_U_$G(^TMP("NURPRB",$J,PROBNAME,NURPRB,GMRGPDA))_U_GMRGPDA
 | 
|---|
| 56 |  .   .   Q
 | 
|---|
| 57 |  .   Q
 | 
|---|
| 58 |  Q NURACM
 | 
|---|
| 59 | PCKPROB(NURACM) ; GIVEN NUMBER OF SELECTIONS TO PRINT (NURACM)
 | 
|---|
| 60 |  ; FUNCTION WILL RETURN 1 IF USER HAS SELECTIONS TO PROCESS, 0 IF USER
 | 
|---|
| 61 |  ; SELECTED NO PROBLEMS, AND -1 IF USER ABNORMALLY EXITED, IF
 | 
|---|
| 62 |  ; FUNCTION RETURNS 1, THE LIST OF PROBLEMS USER WISHES TO PROCESS
 | 
|---|
| 63 |  ; WILL BE IN ^TMP("NURUSL",$J)
 | 
|---|
| 64 |  N NURUSL S NURUSL=0 K ^TMP("NURUSL",$J)
 | 
|---|
| 65 |  I NURACM'>0 W !,"THERE ARE NO PROBLEMS FOR THIS PATIENT."
 | 
|---|
| 66 |  E  D
 | 
|---|
| 67 |  .   S NURCNT=0 D HDR
 | 
|---|
| 68 |  .   F NURCNT=1:1:NURACM D  Q:NUROUT
 | 
|---|
| 69 |  .   .   S X=$G(^TMP("NURCHC",$J,NURCNT)),GMRGXPRT=$P(X,U,2),GMRGPDA=$P(X,U,4),GMRGXPRT(0)=$$SELDAT^NURCEVE2(+X,GMRGPDA),GMRGXPRT(1)="^^1^^1" D EN1^GMRGRUT2
 | 
|---|
| 70 |  .   .   W !,NURCNT,?3,$E(GMRGXPRT,1,43),?48,$P($G(NURCPDT($P(X,U,4))),U,2),?68,$P(X,U,3)
 | 
|---|
| 71 |  .   .   D:IOSL-4<$Y!(NURCNT=NURACM) HDR
 | 
|---|
| 72 |  .   .   Q
 | 
|---|
| 73 |  .   S NURUSL=$S(NUROUT:-1,1:''$O(^TMP("NURUSL",$J,"")))
 | 
|---|
| 74 |  .   Q
 | 
|---|
| 75 |  K DIR,NURCNT
 | 
|---|
| 76 |  Q NURUSL
 | 
|---|
| 77 | HDR ; HEADER FOR PROBLEM LISTING
 | 
|---|
| 78 |  I NURCNT>0 D  Q:NUROUT
 | 
|---|
| 79 |  .   W ! K DIR,NURRD S DIR("A")="ENTER THE PROBLEM(S) (BY NUMBER) TO BE EDITED (1"_$S(NURCNT>1:"-"_NURCNT,1:"")_"): ",DIR("?",1)="This response must be a list or range, e.g., 1,3,5 OR 2-4,8."
 | 
|---|
| 80 |  .   S DIR("?",2)="Enter RD to redisplay this list of selections"_$S(NURCNT'=NURACM:", or <RET> to see more selections",1:"")_".",DIR("?",3)=""
 | 
|---|
| 81 |  .   S DIR("?")="Response should be no less than 1 and no greater than "_NURCNT_".",DIR(0)="FOA^1:60^D VALIDATE^NURCEVE1(.X)" D ^DIR
 | 
|---|
| 82 |  .   I "^^"[Y S:Y=U!(Y="^^")!$D(DTOUT) NUROUT=1 Q
 | 
|---|
| 83 |  .   I $G(NURRD)>0 S NURCNT=0 Q
 | 
|---|
| 84 |  .   F NURY=1:1:$L(Y,",") S NURX=$P(Y,",",NURY),NURZ=$S(NURX'["-":+NURX,1:$P(NURX,"-",2)) F NURX=+NURX:1:NURZ S ^TMP("NURUSL",$J,NURX)=""
 | 
|---|
| 85 |  .   Q
 | 
|---|
| 86 |  I NURCNT'=NURACM W #,!!,?48,"DATE/TIME",?68,"EVALUATION",!?3,"PROBLEM",?48,"DEVELOPED",?68,"DATE"
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 | VALIDATE(X,GMR) ; GIVEN X AS INPUT TO READ FOR CHOOSING SELECTIONS
 | 
|---|
| 89 |  ; ENTRY WILL KILL X IF INVALID, ELSE WILL RETURN A TRANSFORMED
 | 
|---|
| 90 |  ; VERSION OF X
 | 
|---|
| 91 |  S:$G(GMR)="" GMR=0
 | 
|---|
| 92 |  N NURX,NURY
 | 
|---|
| 93 |  I X?1.2A S X=$$UP^XLFSTR(X) S:X="R"!(X="RD") X="RD" K:X'="RD"&('GMR!(X'="A"&GMR)) X S:$D(X)#2 NURRD=1+(X="A") Q
 | 
|---|
| 94 |  F NURY=1:1:$L(X,",") S NURX=$P(X,",",NURY) D  Q:'$D(X)
 | 
|---|
| 95 |  .   I NURX'?1N.N,NURX'?1N.N1"-"1N.N K X
 | 
|---|
| 96 |  .   E  I NURX?1N.N K:NURX<1!(NURX>NURCNT) X
 | 
|---|
| 97 |  .   E  K:$P(NURX,"-")<1!($P(NURX,"-",2)>NURCNT)!($P(NURX,"-")>$P(NURX,"-",2)) X
 | 
|---|
| 98 |  .   Q
 | 
|---|
| 99 |  Q
 | 
|---|