| 1 | ORRHCQ1 ; SLC/SRM - CPRS Query Tools - Utilities ;6/10/03  15:11
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**174,248**;Dec 17, 1997;Build 1
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | QRYSITR(VAL,ORRITR)       ; Do query for the standard Iterator, saving off the sensitive patients
 | 
|---|
| 5 |  ; VAL=PtSearched^RecordsFound^Iterator
 | 
|---|
| 6 |  S VAL=$$SSCREEN($P(ORRITR,";",2))
 | 
|---|
| 7 |  I VAL S VAL=$$PTSCRN^ORRHCQ($P(ORRITR,";",2))
 | 
|---|
| 8 |  I VAL S $P(VAL,U,2)=$$QRYPT^ORRHCQ($P(ORRITR,";",2))
 | 
|---|
| 9 |  S $P(VAL,U,3)=$$NXTITER^ORRHCQ(ORRITR)
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | QSITR(VAL,SITR) ;       Do query for the current sensitive patient iterator
 | 
|---|
| 13 |  ; VAL=PtSearched^RecordsFound^Iterator
 | 
|---|
| 14 |  N LEVEL,RET
 | 
|---|
| 15 |  I $G(SITR)="" S SITR=0
 | 
|---|
| 16 |  S SITR=$O(^TMP("ORRHCQ",$J,"DFN","S",SITR))
 | 
|---|
| 17 |  I +SITR<1 S VAL=0_U_0_U Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ; Sensitive notifications, exclusions
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  S LEVEL=+$G(^TMP("ORRHCQ",$J,"DFN","S",SITR))
 | 
|---|
| 22 |  I LEVEL=2 D 
 | 
|---|
| 23 |  .D NOTICE^DGSEC4(.RET,SITR,"ORRCMP QUERY TOOL^ORRCM CLIENT",1)
 | 
|---|
| 24 |  .I +$G(RET)=0 D ERROR("Error logging sensitive patient use.") S VAL=0_U_0_U Q
 | 
|---|
| 25 |  S VAL=0
 | 
|---|
| 26 |  I LEVEL<3 D
 | 
|---|
| 27 |  .S VAL=$$PTSCRN^ORRHCQ(SITR)
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  I +VAL S $P(VAL,U,2)=$$QRYPT^ORRHCQ(SITR)
 | 
|---|
| 30 |  S $P(VAL,U,3)=SITR
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 | GETSPT(RES,START,LEN)   ;Returns a list of DFN^Patient Name^Level given a start position and a length.  The START 
 | 
|---|
| 34 |                  ;parameter should be in the form "NAME!DFN" (a 'bang' between name and DFN.)
 | 
|---|
| 35 |  N I,X S I=START,X=1
 | 
|---|
| 36 |  I +$G(LEN)<1 Q
 | 
|---|
| 37 |  F  S I=$O(^TMP("ORRHCQ",$J,"DFN","S","B",I)) Q:X>+$G(LEN)!(I="")  D
 | 
|---|
| 38 |  .S RES(X)=$P(I,"!",2)_U_$P(I,"!",1)_U_$G(^TMP("ORRHCQ",$J,"DFN","S","B",I)),X=X+1
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | GETSLN(RES,DFN) ;Returns the sensitive patient message text lines for the given patient.
 | 
|---|
| 42 |  N I,CODE S RES="",I=0
 | 
|---|
| 43 |  I $D(^TMP("ORRHCQ",$J,"DFN","S",DFN)) D
 | 
|---|
| 44 |  .S CODE=^TMP("ORRHCQ",$J,"DFN","S",DFN)
 | 
|---|
| 45 |  .M RES=^TMP("ORRHCQ",$J,"DFN","S","MESSAGE",CODE)
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | DELSEN(RES,DFN) ;Removes Sensitive Patient from list
 | 
|---|
| 49 |  S RES=0
 | 
|---|
| 50 |  I $D(^TMP("ORRHCQ",$J,"DFN","S",DFN)) D
 | 
|---|
| 51 |  .S RES=1 K ^TMP("ORRHCQ",$J,"DFN","S",DFN),^TMP("ORRHCQ",$J,"DFN","S","B",$$PTNAME(DFN)_"!"_DFN)
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | GETCNT(LEN)     ; Returns the count of sensitive patients
 | 
|---|
| 55 |  S LEN=0
 | 
|---|
| 56 |  I $D(^TMP("ORRHCQ",$J,"DFN","S")) D
 | 
|---|
| 57 |  .N I S I=0
 | 
|---|
| 58 |  .F  S I=$O(^TMP("ORRHCQ",$J,"DFN","S",I)) Q:I'>0  S LEN=LEN+1
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 | SSCREEN(PATID)  ; Screen sensitive patients - returns 1 if not a sensitive patient; returns 0 if is a sensitive patient or has error
 | 
|---|
| 62 |  ; check for sensitive pt level here and store in "DFN","S",DFN)=LEVEL??
 | 
|---|
| 63 |  N RESULT,CODE
 | 
|---|
| 64 |  D PTSEC^DGSEC4(.RESULT,PATID,0,"ORRCMP QUERY TOOL^ORRCM CLIENT")
 | 
|---|
| 65 |  I $D(RESULT)<1 D ERROR("PTSEC^DGSEC4 did not return expected values.") Q 0
 | 
|---|
| 66 |  I $G(RESULT(1))<0 D ERROR("PTSEC^DGSEC4 returned an error code of:"_RESULT(1)) Q 0
 | 
|---|
| 67 |  I $G(RESULT(1))>0 D  Q 0
 | 
|---|
| 68 |  .S ^TMP("ORRHCQ",$J,"DFN","S",PATID)=RESULT(1),^TMP("ORRHCQ",$J,"DFN","S","B",$$PTNAME(PATID)_"!"_PATID)=RESULT(1)
 | 
|---|
| 69 |  .S CODE=RESULT(1) K RESULT(1)
 | 
|---|
| 70 |  .M ^TMP("ORRHCQ",$J,"DFN","S","MESSAGE",CODE)=RESULT
 | 
|---|
| 71 |  Q 1
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 | ERROR(MESSAGE)  ;Log an error searching for sensitive patient information
 | 
|---|
| 74 |  Q
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 | PTNAME(DFN) ; Returns patient name
 | 
|---|
| 77 |  N VADM,VA,VAERR
 | 
|---|
| 78 |  D DEM^VADPT
 | 
|---|
| 79 |  Q VADM(1)
 | 
|---|
| 80 |  ;
 | 
|---|