source: FOIAVistA/trunk/r/RADIOLOGY_NUCLEAR_MEDICINE-RA/RAHLO3.m@ 847

Last change on this file since 847 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 5.1 KB
Line 
1RAHLO3 ;HIRMFO/GJC-Process data set from the bridge program ;11/18/97 12:13
2 ;;5.0;Radiology/Nuclear Medicine;**4,81,84**;Mar 16, 1998;Build 13
3 ;
4 ;Integration Agreements
5 ;-----------------------
6 ;$$GET1^DIQ(2056); $$DT^XLFDT(10103)
7 ;
8RPTSTAT ; Determine the status to set this report to.
9 K RARPTSTS S:$D(RAESIG) RARPTSTS="V" Q:$D(RARPTSTS)
10 ; $D(RAESIG)=0 now figure out report status
11 N RASTAT S RASTAT=$E($G(^TMP("RARPT-REC",$J,RASUB,"RASTAT")))
12 I RASTAT="A" S RARPTSTS="V" Q
13 I RASTAT]"",("FR"[RASTAT) D
14 . S:RASTAT="F" RARPTSTS="V" Q:$D(RARPTSTS)
15 . I $G(RATELE) S RARPTSTS="R" Q ;Always allow 'Released/Unverified' reports for teleradiology
16 . ; do we allow 'Released/Unverified' reports for this location?
17 . S RARPTSTS=$S($P($G(^RA(79.1,RAMLC,0)),"^",17)="Y":"R",1:"D")
18 . Q
19 ; if no status, & there's physician data (verifier/primary),set status
20 I '$D(RARPTSTS),($G(RAVERF)!$G(^TMP("RARPT-REC",$J,RASUB,"RASTAFF"))!$G(^("RARESIDENT"))) S RARPTSTS=$S($P($G(^RA(79.1,RAMLC,0)),"^",17)="Y":"R",1:"D")
21 ; if still no status, default to draft
22 S:'$D(RARPTSTS) RARPTSTS="D"
23 Q
24TEXT(X) ; Check if the Impression Text and the Report Text contain
25 ; valid characters.
26 ; Input : X = "I" if Impr Text is being checked, "R" if Rpt Text
27 ; Output: 0=invalid, 1=valid
28 N CNT,DATA,FLAG,I,I1,J,Y S (FLAG,I)=0
29 F S I=$O(^TMP("RARPT-REC",$J,RASUB,$S(X="I":"RAIMP",1:"RATXT"),I)) Q:I'>0 D Q:FLAG
30 . S CNT=0,DATA=$G(^TMP("RARPT-REC",$J,RASUB,$S(X="I":"RAIMP",1:"RATXT"),I)) Q:DATA']""
31 . F J=1:1:$L(DATA) D Q:FLAG
32 .. S:$E(DATA,J)?1AN CNT=CNT+1
33 .. S:$E(DATA,J)'?1AN&(CNT>0) CNT=0
34 .. S:CNT=2 FLAG=1
35 .. Q
36 . Q
37 Q FLAG
38 ;
39VERCHK ; Check if our provider can verify reports.
40 ; Examine the following four (4) conditions if $D(RAESIG)
41 ; 1) Does this person have a resident or staff classification?
42 ; 2) If a resident, does the division parameter allow resident
43 ; verification?
44 ; 3) Does this person hold the "RA VERIFY" key?
45 ; 4) Is this person an activate Rad/Nuc Med user?
46 ; 5) Can this person verify reports without staff review?
47 ; If 'No' to any of the above questions, kill RAESIG & set the variable
48 ; RAERR to the appropriate error message.
49 I '$D(^VA(200,"ARC","R",+$G(RAVERF))),('$D(^VA(200,"ARC","S",+$G(RAVERF)))),'$G(RATELE) D Q
50 . ; neither a resident or staff
51 . K RAESIG S RAERR="Provider not classified as resident or staff."
52 . Q
53 I $D(^VA(200,"ARC","R",+$G(RAVERF))),('$P(RAMDV,"^",18)),'$G(RATELE) D Q
54 . ; residents can't verify reports linked to this division
55 . K RAESIG S RAERR="Residents are not permitted to verify reports."
56 . Q
57 I '$D(^XUSEC("RA VERIFY",+$G(RAVERF))),'$G(RATELE) D Q
58 . ; verifier MUST have the RA VERIFY key.
59 . K RAESIG S RAERR="Provider does not meet security requirements to verify report."
60 . Q
61 I '$G(RATELE),$P($G(^VA(200,+$G(RAVERF),"RA")),"^",3),($P(^("RA"),"^",3)'>$$DT^XLFDT()) D
62 . ; Rad/Nuc Med user has been inactivated.
63 . K RAESIG S RAERR="Inactive Rad/Nuc Med Classification for Interpreting Physician."
64 . Q
65 I '$G(RATELE),'$S('$D(^VA(200,+$G(RAVERF),"RA")):1,$P(^("RA"),"^")'="Y":1,1:0) D
66 . K RAESIG S RAERR="Staff review required to verify report."
67 . Q
68 Q
69VFIER ; Check if the RAVERF string is a partial match to an entry in file
70 ; 200. If if is, check to see that is a partial match to only ONE
71 ; active provider entry in file 200.
72 I '$L(RAVERF) S RAERR="Missing Provider information" Q
73 N RAVCNT,RAVIEN,RAVLGTH,RAVPS
74 S RAVLGTH=$L(RAVERF) ; length of the RAVERF string
75 S RAVCNT=0,RAVS1=RAVERF,RAVIEN=""
76 F S RAVS1=$O(^VA(200,"B",RAVS1)) Q:RAVS1=""!($E(RAVS1,1,RAVLGTH)'=RAVERF) D Q:RAVCNT>1
77 . ; return subscripts that have the RAVERF string as the first
78 . ; 1 - RAVLGTH chars of RAVS1
79 . S RAVIEN=0
80 . F S RAVIEN=$O(^VA(200,"B",RAVS1,RAVIEN)) Q:RAVIEN'>0 D Q:RAVCNT>1
81 .. S RAVPS=$G(^VA(200,RAVIEN,"PS"))
82 .. S:'$P(RAVPS,"^",4)!($P(RAVPS,"^",4)>DT) RAVCNT=RAVCNT+1
83 .. I RAVCNT=1,('$D(RAVIEN(RAVCNT))#2) S RAVIEN(RAVCNT)=RAVIEN ; when
84 .. ; we find the first active provider save the provider ien off
85 .. ; in a local array.
86 .. Q
87 . Q
88 ; Added for PowerScribe
89 I RAVIEN']"" D
90 . ;S RAVIEN=$P(RAVERF,$E(HL("ECH"),4))
91 . S RAVIEN=+RAVERF
92 . S RAVPS=$G(^VA(200,RAVIEN,"PS"))
93 . S:'$P(RAVPS,"^",4)!($P(RAVPS,"^",4)>DT) RAVCNT=RAVCNT+1
94 . I RAVCNT=1,('$D(RAVIEN(RAVCNT))#2) S RAVIEN(RAVCNT)=RAVIEN
95 . Q
96 I RAVCNT=0 S RAERR="Invalid Provider Name: "_RAVERF Q ; partial match not found
97 I RAVCNT>1 S RAERR="Non-Unique Provider Name: "_RAVERF Q ; >1 partial match
98 ;S RAVERF=$G(RAVIEN(1)) S:'RAVERF RAERR="Provider Name Entry Error"
99 S:'$G(RAVIEN(1)) RAERR="Provider Name Entry Error: "_RAVERF S RAVERF=$G(RAVIEN(1))
100 Q
101ESIG ; Added for COTS E-Sig capability
102 ;
103 Q:"FA"'[^TMP(RARRR,$J,RASUB,"RASTAT")!('$D(^("RAVERF")))!($D(^("RAESIG")))
104 S RADFN=+$G(^TMP(RARRR,$J,RASUB,"RADFN"))
105 S RADTI=+$G(^TMP(RARRR,$J,RASUB,"RADTI"))
106 S RADIV=$P($G(^RADPT(RADFN,"DT",RADTI,0)),"^",3)
107 Q:RADIV="" ; exam has been deleted - will be rejected
108 ; Check division parameters for ALLOW E-SIG ON COTS REPORT in file 79
109 ; for the division that ordered this procedure.
110 I $P(^RA(79,RADIV,.1),"^",27)["Y" D
111 . S RAESIG=$$GET1^DIQ(200,RAVERF,20.2)
112 . S:RAESIG]"" ^TMP(RARRR,$J,RASUB,"RAESIG")=RAESIG
113 . Q
114 Q
Note: See TracBrowser for help on using the repository browser.