| 1 | TIUPRF2 ; SLC/JMH - RPCs for Patient Record Flags ; 11/3/05
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;**184**;Jun 20, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; $$GETACT^DGPFAPI: IA# 3860
 | 
|---|
| 5 |  ; $$GETHTIU^DGPFAPI1: IA# 4383
 | 
|---|
| 6 |  ; $$STOTIU^DGPFAPI2: IA# 4384
 | 
|---|
| 7 |  ; 
 | 
|---|
| 8 | GETTITLE(TIUY,PTDFN,FLAGID) ; RPC Gets Note Title associated with FLAGID for PTDFN
 | 
|---|
| 9 |  ;Receives TIUY by ref; passes back
 | 
|---|
| 10 |  ; TIUY = TitleIEN^Title
 | 
|---|
| 11 |  ;        0 if no title is associated or flg assignmt is not active
 | 
|---|
| 12 |  ;Requires PTDFN
 | 
|---|
| 13 |  ;Requires FLAGID - identifier for particular flag assignment
 | 
|---|
| 14 |  ;   for patient PTDFN. Set as subscript in GETACT^DGPFAPI.
 | 
|---|
| 15 |  ; See GETFLG^ORPRF.
 | 
|---|
| 16 |  N PRFARR K TIUY S TIUY=0
 | 
|---|
| 17 |  Q:'$G(PTDFN)  Q:'$G(FLAGID)
 | 
|---|
| 18 |  S TIUY=$$GETACT^DGPFAPI(PTDFN,"PRFARR") ;Get ACTive flag info
 | 
|---|
| 19 |  Q:'TIUY
 | 
|---|
| 20 |  S TIUY=$G(PRFARR(FLAGID,"TIUTITLE"))
 | 
|---|
| 21 |  I TIUY'>0 S TIUY=0
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 | GETNOTES(TIUY,PTDFN,TIUTTL,REVERSE) ; RPC gets SIGNED, LINKED PRF
 | 
|---|
| 25 |  ;notes titled TIUTTL for patient PTDFN
 | 
|---|
| 26 |  ; Excludes Notes linked to Entered in Error (EIE) actions and
 | 
|---|
| 27 |  ;notes linked to Erroneous actions (actions taken prior to
 | 
|---|
| 28 |  ;EIE actions).
 | 
|---|
| 29 |  ; Receives TIUY by ref; passes back
 | 
|---|
| 30 |  ;  TIUY = # of notes
 | 
|---|
| 31 |  ;  TIUY([Reverse][Incremented]InternalNoteDate) =
 | 
|---|
| 32 |  ;      NoteIEN^ActionName^ExternalNoteDate^AuthorName
 | 
|---|
| 33 |  ; Requires PTDFN,TIUTTL
 | 
|---|
| 34 |  ; Includes status Uncosigned, Completed, & Amended only.
 | 
|---|
| 35 |  ; Optional REVERSE - Boolean Flag:
 | 
|---|
| 36 |  ;     1 - Sort notes by reverse chronological order
 | 
|---|
| 37 |  ;     0 (default) - Sort notes by chronological order
 | 
|---|
| 38 |  N TIUDG,ACTID,TIUIDATE,TIUEDATE,TIUIEN,TIUACT,STATUS
 | 
|---|
| 39 |  N TIUAUTH,DTARRAY,HASERR,ARRAYNM
 | 
|---|
| 40 |  K TIUY ; Initialize array in case caller hasn't done so.
 | 
|---|
| 41 |  S (TIUY,ACTID)=0
 | 
|---|
| 42 |  ; -- Get Assgn Hist info (GETHTIU initializes array
 | 
|---|
| 43 |  ;    so we don't need to):
 | 
|---|
| 44 |  S ARRAYNM="^TMP(""TIUPRFH"",$J)"
 | 
|---|
| 45 |  S TIUDG=$$GETHTIU^DGPFAPI1(PTDFN,TIUTTL,ARRAYNM)
 | 
|---|
| 46 |  G:'TIUDG GETNOTEX
 | 
|---|
| 47 |  S HASERR=$$HASERR^TIUPRFL(ARRAYNM)
 | 
|---|
| 48 |  F  S ACTID=$O(@ARRAYNM@("HISTORY",ACTID)) Q:'ACTID  D
 | 
|---|
| 49 |  . I ACTID=+HASERR Q  ;Entered in Error
 | 
|---|
| 50 |  . I HASERR>0,$$ISERR^TIUPRFL(ARRAYNM,ACTID,$P(HASERR,U,2)) Q  ;erroneous
 | 
|---|
| 51 |  . S TIUIEN=+@ARRAYNM@("HISTORY",ACTID,"TIUIEN")
 | 
|---|
| 52 |  . Q:TIUIEN'>0  ;TMP node may be just ^
 | 
|---|
| 53 |  . ; -- Include only complete or amended or uncosigned notes:
 | 
|---|
| 54 |  . S STATUS=$P($G(^TIU(8925,TIUIEN,0)),U,5) I '((STATUS=6)!(STATUS=7)!(STATUS=8)) Q
 | 
|---|
| 55 |  . S TIUACT=$P(@ARRAYNM@("HISTORY",ACTID,"ACTION"),U,2)
 | 
|---|
| 56 |  . N TIUFLDS,TIUERR D GETS^DIQ(8925,TIUIEN_",","1202;1301","IE","TIUFLDS","TIUERR")
 | 
|---|
| 57 |  . S TIUIDATE=TIUFLDS(8925,TIUIEN_",",1301,"I")
 | 
|---|
| 58 |  . ; -- Increment date if there are multiple notes w/ same exact date:
 | 
|---|
| 59 |  . F  S:$D(DTARRAY(TIUIDATE)) TIUIDATE=TIUIDATE+.0000001 I '$D(DTARRAY(TIUIDATE)) S DTARRAY(TIUIDATE)="" Q
 | 
|---|
| 60 |  . I $G(REVERSE) S TIUIDATE=9999999-TIUIDATE
 | 
|---|
| 61 |  . S TIUEDATE=$E(TIUFLDS(8925,TIUIEN_",",1301,"E"),1,18)
 | 
|---|
| 62 |  . I TIUEDATE="" S TIUEDATE="No Ref Date"
 | 
|---|
| 63 |  . S TIUAUTH=TIUFLDS(8925,TIUIEN_",",1202,"E")
 | 
|---|
| 64 |  . I TIUAUTH="" S TIUAUTH="No Author"
 | 
|---|
| 65 |  . S TIUY=TIUY+1
 | 
|---|
| 66 |  . S TIUY(TIUIDATE)=TIUIEN_U_TIUACT_U_TIUEDATE_U_TIUAUTH
 | 
|---|
| 67 | GETNOTEX ;
 | 
|---|
| 68 |  K ^TMP("TIUPRFH",$J)
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | GETACTS(TIUY,TIUTTL,DFN) ;RPC Gets PRF Action info
 | 
|---|
| 72 |  ;"Action" is shorthand for Assignment History entry
 | 
|---|
| 73 |  ;Returns data in the following format for each Action:
 | 
|---|
| 74 |  ;TIUY(ACTID) =
 | 
|---|
| 75 |  ; FLAGNAME^ASSGNIEN^ACTIONNAME^ACTIONIEN^ACTIONDATEI^ACTIONDATEE^TIUIEN
 | 
|---|
| 76 |  ;  where Integer ACTID = subscript after "HISTORY" in array returned
 | 
|---|
| 77 |  ;   by GETHTIU^DGPFAPI1
 | 
|---|
| 78 |  ;Returns linkable actions (whether linked or not) for Patient DFN
 | 
|---|
| 79 |  ; and flag assoc w/ TIUTTL.
 | 
|---|
| 80 |  ;Excludes UNLINKABLE actions = Entered in Error actions (EIE) or
 | 
|---|
| 81 |  ; actions taken prior to an EIE action.
 | 
|---|
| 82 |  ;Erroneous and EIE actions may be for the wrong patient, etc.
 | 
|---|
| 83 |  N TIUDG,ACTID,TIUFLAG,UNLINKBL,ARRAYNM
 | 
|---|
| 84 |  S TIUY=1,ARRAYNM="^TMP(""TIUPRFH"",$J)"
 | 
|---|
| 85 |  S TIUDG=$$GETHTIU^DGPFAPI1(DFN,TIUTTL,ARRAYNM)
 | 
|---|
| 86 |  I 'TIUDG S TIUY="0^"_$P(TIUDG,U,2) G GETACTX
 | 
|---|
| 87 |  ; -- If no unlinked, linkable actions exist, say so but go on:
 | 
|---|
| 88 |  I '$$AVAILACT^TIUPRFL("^TMP(""TIUPRFH"",$J)",,.UNLINKBL) S TIUY="0^All linkable Flag actions are already linked"
 | 
|---|
| 89 |  ; -- Return ALL linkable actions (linked or not):
 | 
|---|
| 90 |  S TIUFLAG=$P(^TMP("TIUPRFH",$J,"FLAG"),U,2)_U_$P(^TMP("TIUPRFH",$J,"ASSIGNIEN"),U)
 | 
|---|
| 91 |  S ACTID=0
 | 
|---|
| 92 |  F  S ACTID=$O(^TMP("TIUPRFH",$J,"HISTORY",ACTID)) Q:'+ACTID  D
 | 
|---|
| 93 |  . Q:$G(UNLINKBL(ACTID))
 | 
|---|
| 94 |  . S TIUY(ACTID)=TIUFLAG
 | 
|---|
| 95 |  . S TIUY(ACTID)=TIUY(ACTID)_U_$P(^TMP("TIUPRFH",$J,"HISTORY",ACTID,"ACTION"),U,2)
 | 
|---|
| 96 |  . S TIUY(ACTID)=TIUY(ACTID)_U_$P(^TMP("TIUPRFH",$J,"HISTORY",ACTID,"HISTIEN"),U,1)
 | 
|---|
| 97 |  . S TIUY(ACTID)=TIUY(ACTID)_U_$P(^TMP("TIUPRFH",$J,"HISTORY",ACTID,"DATETIME"),U,1)
 | 
|---|
| 98 |  . S TIUY(ACTID)=TIUY(ACTID)_U_$P(^TMP("TIUPRFH",$J,"HISTORY",ACTID,"DATETIME"),U,2)
 | 
|---|
| 99 |  . S TIUY(ACTID)=TIUY(ACTID)_U_$P(^TMP("TIUPRFH",$J,"HISTORY",ACTID,"TIUIEN"),U,1)
 | 
|---|
| 100 | GETACTX ;
 | 
|---|
| 101 |  K ^TMP("TIUPRFH",$J)
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | LINK(TIUY,TIUIEN,ASSGNDA,ACTIEN,DFN) ;RPC Link TIU Doc TIUIEN to
 | 
|---|
| 105 |  ; the PRF action
 | 
|---|
| 106 |  N TIUTTL
 | 
|---|
| 107 |  S TIUTTL=+$G(^TIU(8925,TIUIEN,0))
 | 
|---|
| 108 |  I 'TIUTTL S TIUY="0^Document does not exist" Q
 | 
|---|
| 109 |  ; Remove any links before making new link
 | 
|---|
| 110 |  D UNLINK^TIUPRF1(TIUIEN)
 | 
|---|
| 111 |  S TIUY=$$STOTIU^DGPFAPI2(DFN,ASSGNDA,ACTIEN,TIUIEN)
 | 
|---|
| 112 |  Q
 | 
|---|
| 113 | GETSTAT(TIUY,TIUIEN) ;RPC Gets the status of TIU Doc TIUIEN
 | 
|---|
| 114 |  ;Returns STATIEN^STATNAME
 | 
|---|
| 115 |  N TIUTTL
 | 
|---|
| 116 |  S TIUTTL=+$G(^TIU(8925,TIUIEN,0))
 | 
|---|
| 117 |  I 'TIUTTL S TIUY="0^Document does not exist" Q
 | 
|---|
| 118 |  S TIUY=$P(^TIU(8925,TIUIEN,0),U,5)
 | 
|---|
| 119 |  S TIUY=TIUY_U_$P($G(^TIU(8925.6,TIUY,0)),U,1)
 | 
|---|
| 120 |  Q
 | 
|---|
| 121 | ISPRFTTL(TIUY,TIUDA) ;RPC Takes as input 8925.1 IEN
 | 
|---|
| 122 |  ; and checks if it is a PRF title
 | 
|---|
| 123 |  ; Cf ISPFTTL^TIUPRFL. which is a FUNCTION
 | 
|---|
| 124 |  N TIUCAT1,TIUCAT2,TIUD1
 | 
|---|
| 125 |  S TIUY=0,TIUD1=""
 | 
|---|
| 126 |  S TIUCAT1=+$$DDEFIEN^TIUFLF7("PATIENT RECORD FLAG CAT I","DC")
 | 
|---|
| 127 |  S TIUCAT2=+$$DDEFIEN^TIUFLF7("PATIENT RECORD FLAG CAT II","DC")
 | 
|---|
| 128 |  S TIUD1=$O(^TIU(8925.1,"AD",TIUDA,TIUD1))
 | 
|---|
| 129 |  I TIUD1=TIUCAT1!(TIUD1=TIUCAT2) S TIUY=1
 | 
|---|
| 130 |  Q
 | 
|---|