| 1 | TIUSRVA ; SLC/JER,AJB - API's for Authorization ; 03/18/04 [10/19/04 1:21pm]
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;**19,28,47,80,100,116,152,160,178,175,157,236**;Jun 20, 1997;Build 2
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;External reference to File ^AUPNVSIT supported by DBIA 3580
 | 
|---|
| 5 | REQCOS(TIUY,TIUTYP,TIUDA,TIUSER,TIUDT) ; Evaluate cosignature requirement
 | 
|---|
| 6 |  ; Initialize return value
 | 
|---|
| 7 |  N TIUDPRM
 | 
|---|
| 8 |  S TIUY=0
 | 
|---|
| 9 |  I +$G(TIUTYP)'>0,'+$G(TIUDA) Q
 | 
|---|
| 10 |  I +$G(TIUDA) S TIUTYP=+$G(^TIU(8925,+$G(TIUDA),0))
 | 
|---|
| 11 |  S:'+$G(TIUSER) TIUSER=+$G(DUZ)
 | 
|---|
| 12 |  S TIUY=+$$REQCOSIG^TIULP(TIUTYP,+$G(TIUDA),+$G(TIUSER),+$G(TIUDT))
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 | URGENCY(Y) ; -- retrieve set values from dd for discharge summary urgency
 | 
|---|
| 15 |  N TIUDD,I,X
 | 
|---|
| 16 |  D FIELD^DID(8925,.09,"","POINTER","TIUDD")
 | 
|---|
| 17 |  F I=1:1 S X=$P(TIUDD("POINTER"),";",I) Q:X=""   S Y(I)=$TR(X,":","^")
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 | CANDO(Y,TIUDA,TIUACT) ; Boolean function to evaluate privilege
 | 
|---|
| 20 |  N TIUPOP,TIUDPRM S TIUPOP=0
 | 
|---|
| 21 |  ; **152** code added to prevent editing a completed document.
 | 
|---|
| 22 |  I $P($G(^TIU(8925,TIUDA,0)),U,5)>6,(TIUACT="EDIT RECORD") S Y="0^ You may not edit a completed document" Q
 | 
|---|
| 23 |  I $S(TIUACT["SIGN":1,TIUACT="EDIT RECORD":1,TIUACT="DELETE RECORD":1,1:0) D  Q:+TIUPOP=1
 | 
|---|
| 24 |  . L +^TIU(8925,+TIUDA):1
 | 
|---|
| 25 |  . E  S Y="0^ Another session is editing this entry.",TIUPOP=1
 | 
|---|
| 26 |  . L -^TIU(8925,+TIUDA)
 | 
|---|
| 27 |  I TIUACT["SIGN",+$$NEEDCS(TIUDA) S Y="0^ You must name a cosigner before signing this document." Q
 | 
|---|
| 28 |  S Y=$$CANDO^TIULP(TIUDA,TIUACT)
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 | NEEDCS(TIUDA) ; Does user need a cosigner?
 | 
|---|
| 31 |  N TIUD0,TIUD12,TIUY,SIGNER,COSIGNER,XTRASGNR
 | 
|---|
| 32 |  S TIUD0=$G(^TIU(8925,TIUDA,0)),TIUD12=$G(^(12))
 | 
|---|
| 33 |  S SIGNER=$P(TIUD12,U,4),COSIGNER=$P(TIUD12,U,8),XTRASGNR=0
 | 
|---|
| 34 |  I (DUZ'=SIGNER),(DUZ'=COSIGNER) S XTRASGNR=+$O(^TIU(8925.7,"AE",+TIUDA,+DUZ,0))
 | 
|---|
| 35 |  I +XTRASGNR S TIUY=0
 | 
|---|
| 36 |  E  I +$$REQCOSIG^TIULP(+TIUD0,TIUDA,DUZ),(+$P(TIUD12,U,8)'>0) S TIUY=1
 | 
|---|
| 37 |  Q +$G(TIUY)
 | 
|---|
| 38 | USRINACT(TIUY,TIUDA) ; Is user inactive?
 | 
|---|
| 39 |  S TIUY=+$$GET1^DIQ(200,TIUDA_",",7,"I")
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 | AUTHSIGN(TIUY,TIUDA,TIUUSR) ; Has Author signed?
 | 
|---|
| 42 |  ; if TIUY = 
 | 
|---|
| 43 |  ; 0 = Author has NOT signed & TIUUSR = Expected Cosigner
 | 
|---|
| 44 |  ; 1 = Author HAS signed or TIUUSR '= Expected Cosigner
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  N TIUD12,TIUD15
 | 
|---|
| 47 |  S TIUD12=$G(^TIU(8925,TIUDA,12)),TIUD15=$G(^(15))
 | 
|---|
| 48 |  S TIUY=1
 | 
|---|
| 49 |  D:$P(TIUD12,U,8)=TIUUSR  Q
 | 
|---|
| 50 |  . S:$P(TIUD12,U,2)'=$P(TIUD15,U,2) TIUY=0
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 | TIUVISIT(TIUY,DOCTYP,DFN,VISIT) ;  Check for a 1 time only doc
 | 
|---|
| 53 |  ;  TIUY    =    return value
 | 
|---|
| 54 |  ;          = 0 if can add more than one or none already exist
 | 
|---|
| 55 |  ;          = 1 if cannot add more than one and one already exists
 | 
|---|
| 56 |  ;  DOCTYP  =    Pointer to ^TUI(8925.1,   TIU DOCUMENT DEFINITION
 | 
|---|
| 57 |  ;  DFN     =    Patient IEN
 | 
|---|
| 58 |  ;  VISIT   =    Visit String "LOC;VDATE;VTYP"
 | 
|---|
| 59 |  I $$PATCH^XPDUTL("OR*3.0*195") D
 | 
|---|
| 60 |  . Q:($G(DOCTYP)="")!($G(DFN)="")!($G(VISIT)="")
 | 
|---|
| 61 |  . N TIUDPRM,TIUTEST
 | 
|---|
| 62 |  . D DOCPRM^TIULC1(DOCTYP,.TIUDPRM)
 | 
|---|
| 63 |  . S TIUY=$S($P(TIUDPRM(0),U,10)="":1,1:$P(TIUDPRM(0),U,10))
 | 
|---|
| 64 |  . I TIUY=1 S TIUY=0 Q
 | 
|---|
| 65 |  . I $L(VISIT,";")=3 D
 | 
|---|
| 66 |  . . S TIUTEST=$$EXIST^TIUEDI3(DFN,DOCTYP,VISIT)
 | 
|---|
| 67 |  . . I TIUTEST S TIUY=1
 | 
|---|
| 68 |  . . I 'TIUTEST S TIUY=0
 | 
|---|
| 69 |  I '$$PATCH^XPDUTL("OR*3.0*195") D
 | 
|---|
| 70 |  . Q:($G(DOCTYP)="")!($G(DFN)="")!($G(VISIT)="")
 | 
|---|
| 71 |  . N X3
 | 
|---|
| 72 |  . S X3=+$O(^TIU(8925.95,"B",DOCTYP,""))
 | 
|---|
| 73 |  . S TIUY=$P($G(^TIU(8925.95,X3,0)),U,10) S TIUY=$S(TIUY=0:1,1:0)
 | 
|---|
| 74 |  . Q:'TIUY
 | 
|---|
| 75 |  . S VISIT=((9999999-$P(VISIT,"."))_"."_$P(VISIT,".",2))
 | 
|---|
| 76 |  . S VISIT=+$O(^AUPNVSIT("AA",DFN,VISIT,""))
 | 
|---|
| 77 |  . S TIUY=$S($D(^TIU(8925,"AV",DFN,DOCTYP,VISIT)):0,1:1)
 | 
|---|
| 78 |  . S TIUY=$S(TIUY=0:1,1:0)
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 | WHATACT(Y,TIUDA) ; Evaluate/return whether signature or cosignature
 | 
|---|
| 81 |  N TIUD0,TIUD12,TIUSTAT,SIGNER,COSIGNER,XTRASGNR
 | 
|---|
| 82 |  S TIUD0=$G(^TIU(8925,+TIUDA,0)),TIUD12=$G(^TIU(8925,+TIUDA,12))
 | 
|---|
| 83 |  S SIGNER=$P(TIUD12,U,4),COSIGNER=$P(TIUD12,U,8)
 | 
|---|
| 84 |  I (DUZ'=SIGNER),(DUZ'=COSIGNER) S XTRASGNR=+$O(^TIU(8925.7,"AE",+TIUDA,+DUZ,0))
 | 
|---|
| 85 |  I '$G(XTRASGNR) S XTRASGNR=$$ASURG^TIUADSIG(TIUDA)
 | 
|---|
| 86 |  S TIUSTAT=+$P(TIUD0,U,5)
 | 
|---|
| 87 |  S Y=$S(TIUSTAT'>5:"SIGNATURE",+$G(XTRASGNR):"SIGNATURE",1:"COSIGNATURE")
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 | CANCHCOS(Y,TIUDA) ; Evaluate/return whether user can change cosigner
 | 
|---|
| 90 |  S Y=$$MAYCHNG^TIURA1(TIUDA)
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 | NEEDJUST(Y,TIUDA) ; Is justification required for deletion?
 | 
|---|
| 93 |  N TIUD0 S TIUD0=$G(^TIU(8925,+TIUDA,0)),Y=0
 | 
|---|
| 94 |  I +$P(TIUD0,U,5)'<6 S Y=1
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 | GETTITLE(Y,TIUDA) ; Get the title from a TIU Document Record
 | 
|---|
| 97 |  S Y=+$G(^TIU(8925,+TIUDA,0))
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 | CANATTCH(Y,TIUDA) ; Can this document be attached as an ID Child
 | 
|---|
| 100 |  N TITLEDA,PARENTDA
 | 
|---|
| 101 |  S TITLEDA=+$G(^TIU(8925,TIUDA,0))
 | 
|---|
| 102 |  I TITLEDA'>0 S Y="0^Document #"_TIUDA_" does not exist." Q
 | 
|---|
| 103 |  S PARENTDA=+$G(^TIU(8925,TIUDA,21))
 | 
|---|
| 104 |  S Y=$$POSSPRNT^TIULP(TITLEDA)
 | 
|---|
| 105 |  I +Y S Y="-1"_U_$P(Y,U,2) Q
 | 
|---|
| 106 |  I +$$ISCWAD^TIULX(TITLEDA) D  Q
 | 
|---|
| 107 |  . S Y="0^ CWAD Documents may not be Attached as Interdisciplinary Entries."
 | 
|---|
| 108 |  I +$$ISA^TIULX(TITLEDA,+$$CLASS^TIUCNSLT) D  Q
 | 
|---|
| 109 |  . S Y="0^ Consult Results may not be Attached as Interdisciplinary Entries."
 | 
|---|
| 110 |  S Y=$$CANDO^TIULP(TIUDA,"ATTACH TO ID NOTE")
 | 
|---|
| 111 |  I PARENTDA D  ; action must be "detach"
 | 
|---|
| 112 |  . I 'Y S Y="0^ You may not detach this note from an interdisciplinary note." Q
 | 
|---|
| 113 |  . S Y=$$CANDO^TIULP(PARENTDA,"ATTACH ID ENTRY")
 | 
|---|
| 114 |  . I 'Y S Y="0^ You may not detach this note from its interdisciplinary note."
 | 
|---|
| 115 |  Q
 | 
|---|
| 116 | CANRCV(Y,TIUDA) ; Can this document receive an ID Child?
 | 
|---|
| 117 |  S Y=$$CANDO^TIULP(TIUDA,"ATTACH ID ENTRY")
 | 
|---|
| 118 |  Q
 | 
|---|