1 | TIUPRFL ; SLC/JMH - Library Functions for Patient Record Flags ;1/26/06
|
---|
2 | ;;1.0;TEXT INTEGRATION UTILITIES;**184**;Jun 20, 1997
|
---|
3 | ;
|
---|
4 | ;External References
|
---|
5 | ;IA #4383
|
---|
6 | ;$$FNDTITLE^DGPFAPI1
|
---|
7 | ;$$GETHTIU^DGPFAPI1
|
---|
8 | ;$$GETLINK^DGPFAPI1
|
---|
9 | AVAILACT(ARRAYNM,LINKBL,UNLINKBL,ONEIEN) ;Returns the # of unlinked,
|
---|
10 | ;linkable actions.
|
---|
11 | ; Note: Entered in Error (EIE) actions are not linkable,
|
---|
12 | ;nor actions taken BEFORE an EIE action.
|
---|
13 | ; ARRAYNM - Requires that $$GETHTIU^DGPFAPI1(DFN,TIUTTL,ARRAYNM)
|
---|
14 | ; has just been called for given flag title
|
---|
15 | ; and given patient.
|
---|
16 | ; LINKBL - optional, passed by ref, returns
|
---|
17 | ; # of linkable actions in array ARRAYNM
|
---|
18 | ; UNLINKBL - optional array, passed by ref, returns
|
---|
19 | ; UNLINKBL - # of unlinkable actions in ARRAYNM
|
---|
20 | ; UNLINKBL(ActID)=1, for each unlinkable action,
|
---|
21 | ; where ActID is action subscript in ARRAYNM
|
---|
22 | ; ONEIEN - optional, passed by ref, returns
|
---|
23 | ; the action IEN (NOT subscript) if there is
|
---|
24 | ; exactly one available action
|
---|
25 | ; AVAIL - Return value of function, returns
|
---|
26 | ; # of unlinked, linkable actions in ARRAYNM
|
---|
27 | N ACTID,AVAIL,HASERR,ACTIEN
|
---|
28 | S (ACTID,AVAIL,ONEIEN,LINKBL,UNLINKBL)=0
|
---|
29 | S HASERR=$$HASERR(ARRAYNM)
|
---|
30 | F S ACTID=$O(@ARRAYNM@("HISTORY",ACTID)) Q:'ACTID D
|
---|
31 | . ; -- Set UNLINKBL whether linked or not:
|
---|
32 | . I ACTID=+HASERR S UNLINKBL(ACTID)=1,UNLINKBL=UNLINKBL+1 Q
|
---|
33 | . I $G(HASERR),$$ISERR(ARRAYNM,ACTID,$P(HASERR,U,2)) S UNLINKBL(ACTID)=1,UNLINKBL=UNLINKBL+1 Q
|
---|
34 | . ; -- If not unlinkable, set LINKBL & check if already linked:
|
---|
35 | . S LINKBL=LINKBL+1
|
---|
36 | . I $G(@ARRAYNM@("HISTORY",ACTID,"TIUIEN")) Q
|
---|
37 | . S AVAIL=AVAIL+1
|
---|
38 | . S ACTIEN=+$G(@ARRAYNM@("HISTORY",ACTID,"HISTIEN"))
|
---|
39 | I AVAIL=1,$G(ACTIEN)>0 S ONEIEN=ACTIEN
|
---|
40 | Q AVAIL
|
---|
41 | ;
|
---|
42 | ISPFTTL(TITLEDA) ; FUNCTION returns 1 if TITLEDA
|
---|
43 | ;is PRF Title, otherwise returns 0
|
---|
44 | ;Note ISPFTTL is spelled with PF, NOT PRF
|
---|
45 | ; Cf RPC ISPRFTTL^TIUPRF2 - spelled with PRF
|
---|
46 | N TIUCAT1,TIUCAT2,TIUDADDA
|
---|
47 | S TIUDADDA=""
|
---|
48 | S TIUCAT1=+$$DDEFIEN^TIUFLF7("PATIENT RECORD FLAG CAT I","DC")
|
---|
49 | S TIUCAT2=+$$DDEFIEN^TIUFLF7("PATIENT RECORD FLAG CAT II","DC")
|
---|
50 | S TIUDADDA=$O(^TIU(8925.1,"AD",TITLEDA,TIUDADDA))
|
---|
51 | I TIUDADDA=TIUCAT1!(TIUDADDA=TIUCAT2) Q 1
|
---|
52 | Q 0
|
---|
53 | ;
|
---|
54 | ISPFDC(DCLASSDA) ; FUNCTION returns 1 if DCLASSDA
|
---|
55 | ;is PRF Document Class, otherwise returns 0
|
---|
56 | ; Requires valid IEN in 8925.1
|
---|
57 | N TIUCAT1,TIUCAT2
|
---|
58 | S TIUCAT1=+$$DDEFIEN^TIUFLF7("PATIENT RECORD FLAG CAT I","DC")
|
---|
59 | S TIUCAT2=+$$DDEFIEN^TIUFLF7("PATIENT RECORD FLAG CAT II","DC")
|
---|
60 | I (DCLASSDA=TIUCAT1)!(DCLASSDA=TIUCAT2) Q 1
|
---|
61 | Q 0
|
---|
62 | ;
|
---|
63 | FNDACTIF(TIUDA) ;Find Action Info for Note TIUDA
|
---|
64 | ;Returns AssignIEN^ActionIEN^ActionNumber or
|
---|
65 | ;0^"error message" if not linked, where
|
---|
66 | ; Action IEN is Assignment History IEN and
|
---|
67 | ; Action ID is node from GETHTIU^DGPFAPI1 array
|
---|
68 | ; Note: for Action IEN ONLY, use $$GETLINK^DGPFAPI1(TIUDA)
|
---|
69 | N ACTID,TIUTTL,TIURET,DFN
|
---|
70 | S ACTID=0,TIURET=0
|
---|
71 | S DFN=$P($G(^TIU(8925,TIUDA,0)),U,2)
|
---|
72 | S TIUTTL=+$G(^TIU(8925,TIUDA,0))
|
---|
73 | S TIURET=$$GETHTIU^DGPFAPI1(DFN,TIUTTL,"^TMP(""TIUPRF"",$J)")
|
---|
74 | I '+TIURET Q TIURET
|
---|
75 | F S ACTID=$O(^TMP("TIUPRF",$J,"HISTORY",ACTID)) Q:'ACTID D
|
---|
76 | . I +$G(^TMP("TIUPRF",$J,"HISTORY",ACTID,"TIUIEN"))=TIUDA D
|
---|
77 | . . S TIURET=+^TMP("TIUPRF",$J,"ASSIGNIEN")_U_+^TMP("TIUPRF",$J,"HISTORY",ACTID,"HISTIEN")_U_ACTID
|
---|
78 | K ^TMP("TIUPRF",$J)
|
---|
79 | Q TIURET
|
---|
80 | ;
|
---|
81 | FNDFLAG(TIUTITLE) ; Find Associated Flag IEN for Title
|
---|
82 | ;Function returns VarPTRFlagIEN^FlagName or
|
---|
83 | ;0^msg
|
---|
84 | ;from Flag file 26.15 (National) or 26.11 (Local)
|
---|
85 | ;Example: 1;DGPF(26.15,^BEHAVIORAL]
|
---|
86 | I '$L($T(FNDTITLE^DGPFAPI1)) Q "?"
|
---|
87 | Q $$FNDTITLE^DGPFAPI1(TIUTITLE)
|
---|
88 | ;
|
---|
89 | CFLDFLAG(TIUTITLE) ; Code for computed field PRFFLAG in file 8925.1
|
---|
90 | ; Returns FlagName from file 26.11 or 26.15 for flag associated
|
---|
91 | ;with TIUTITLE
|
---|
92 | ; Returns ? if no flag is assoc w/ title or flag cannot be found
|
---|
93 | ; Returns NA if TIUTITLE is not a PRF title
|
---|
94 | ; Requires TITTITLE = 8925.1 IEN
|
---|
95 | N FLAGINFO
|
---|
96 | I '$$ISPFTTL(TIUTITLE) Q "NA"
|
---|
97 | S FLAGINFO=$$FNDFLAG(TIUTITLE)
|
---|
98 | I 'FLAGINFO Q "?"
|
---|
99 | Q $P(FLAGINFO,U,2)
|
---|
100 | ;
|
---|
101 | CFLDACT(NOTEDA) ; Code for computed field PRF FLAG ACTION in file 8925
|
---|
102 | ; Returns: Date of Linked Action[space]Name of Action
|
---|
103 | ;for action NOTEDA is linked to.
|
---|
104 | N TIUTTL,LINE,TIULINK,DFN,ACTINFO,TIUDG,ACTID,ACTDATE,ACTNAME,TIUNODE0
|
---|
105 | S TIUNODE0=^TIU(8925,NOTEDA,0),TIUTTL=$P(TIUNODE0,U)
|
---|
106 | S TIULINK=$$GETLINK^DGPFAPI1(NOTEDA)
|
---|
107 | I 'TIULINK,'$$ISPFTTL(TIUTTL) Q "NA"
|
---|
108 | I 'TIULINK Q "?"
|
---|
109 | S DFN=$P(TIUNODE0,U,2)
|
---|
110 | S ACTINFO=$$FNDACTIF^TIUPRFL(NOTEDA)
|
---|
111 | S ACTID=+$P(ACTINFO,U,3)
|
---|
112 | ; -- If not PRF note but has link by mistake, return ? instead of NA:
|
---|
113 | I 'ACTID Q "?" ; Title not linked to flag
|
---|
114 | S TIUDG=$$GETHTIU^DGPFAPI1(DFN,TIUTTL,"^TMP(""TIUPRF"",$J)")
|
---|
115 | S ACTDATE=$P(^TMP("TIUPRF",$J,"HISTORY",ACTID,"DATETIME"),U)
|
---|
116 | S ACTDATE=$$FMTE^XLFDT(ACTDATE,"2D")
|
---|
117 | S ACTNAME=$P(^TMP("TIUPRF",$J,"HISTORY",ACTID,"ACTION"),U,2)
|
---|
118 | S LINE=ACTDATE_" "_ACTNAME
|
---|
119 | K ^TMP("TIUPRF",$J)
|
---|
120 | Q LINE
|
---|
121 | ;
|
---|
122 | ISERR(ARRAYNM,ACTID,REACTDTM) ; Is Flag Action erroneous?
|
---|
123 | ; Actions that take place BEFORE an EIE action are ERRONEOUS
|
---|
124 | ;An EIE action itself is NOT erroneous
|
---|
125 | ; Should be called AFTER HASERR, & only if HASERR>0
|
---|
126 | ; Returns: 1 if Action date/time of ACTID is strictly BEFORE
|
---|
127 | ; the Entered in Error date/time
|
---|
128 | ; 0 if = or AFTER the Entered in Error date/time
|
---|
129 | ; -1^msg if error
|
---|
130 | ; Requires that $$GETHTIU^DGPFAPI1(DFN,TIUTTL,ARRAYNM) has just been
|
---|
131 | ;called, and array named ARRAYNM currently exists for title
|
---|
132 | ;assoc w/ flag and for given patient.
|
---|
133 | ;Requires ARRAYNM
|
---|
134 | ;Requires ACTID - subscript preceding "ACTION" in above array
|
---|
135 | ;Requires REACTDTM as set in HASERR.
|
---|
136 | N ISERR,ACTDTM S ISERR=0
|
---|
137 | S ACTDTM=$P($G(@ARRAYNM@("HISTORY",ACTID,"DATETIME")),U)
|
---|
138 | I ACTDTM'>0 S ISERR="-1^Can't tell whether action is erroneous" G ISERRX
|
---|
139 | I $G(REACTDTM)'>0 S ISERR="-1^Can't tell whether action is erroneous" G ISERRX
|
---|
140 | I ACTDTM<REACTDTM S ISERR=1
|
---|
141 | ISERRX Q ISERR
|
---|
142 | ;
|
---|
143 | HASERR(ARRAYNM) ; Function indicates that given flag assignmt
|
---|
144 | ;for given patient has ERRONEOUS actions.
|
---|
145 | ; ERRONEOUS ACTIONS: all actions taken BEFORE
|
---|
146 | ;an ENTERED IN ERROR (EIE) action
|
---|
147 | ; Note: HASERR is equivalent to Has an EIE Action (HASEIE):
|
---|
148 | ;(HASERR implies HASEIE. and HASEIE implies HASERR since
|
---|
149 | ;EIE action always has actions taken previously.)
|
---|
150 | ; Returns: EIEActionID^EIEDateTime if flag assignmt has been
|
---|
151 | ; marked Entered in Error (EIE). If there are multiple
|
---|
152 | ; EIE actions, returns the most RECENT.
|
---|
153 | ; 0 if assignmt not marked EIE
|
---|
154 | ; -1^msg if error
|
---|
155 | ; Actions and notes for Erroneous actions or EIE actions
|
---|
156 | ;should not be displayed in OR/TIU flag-related displays.
|
---|
157 | ; Requires that $$GETHTIU^DGPFAPI1(DFN,TIUTTL,ARRAYNM) has just been
|
---|
158 | ;called, and array named ARRAYNM currently exists for title
|
---|
159 | ;assoc w/ flag and for given patient.
|
---|
160 | N ACTID,HASERR
|
---|
161 | I '$D(@ARRAYNM@("HISTORY")) S HASERR="-1^Can't tell whether flag assignment has erroneous actions" G HASERRX
|
---|
162 | S ACTID=1000000,HASERR=0
|
---|
163 | F S ACTID=$O(@ARRAYNM@("HISTORY",ACTID),-1) G:'+ACTID HASERRX D G:HASERR HASERRX
|
---|
164 | . I $P(@ARRAYNM@("HISTORY",ACTID,"ACTION"),U,2)="ENTERED IN ERROR" D
|
---|
165 | . . S HASERR=ACTID_U_$P(@ARRAYNM@("HISTORY",ACTID,"DATETIME"),U)
|
---|
166 | HASERRX Q HASERR
|
---|