1 | TIUPNAPI ; SLC/JER - API to Replace GMRPAPI ; 8/8/05
|
---|
2 | ;;1.0;TEXT INTEGRATION UTILITIES;**57,140,175,180,184**;Jun 20, 1997
|
---|
3 | ;
|
---|
4 | ; ^DPT( IA #3101
|
---|
5 | NEW(TIUIFN,DFN,TIUAUTH,TIURDT,TIUTITLE,TIULOC,TIUES,TIUPRT,TIUESBY,TIUASKVS,TIUADEL) ;
|
---|
6 | ; -- Create new note
|
---|
7 | ;****************
|
---|
8 | ; Return variable (must pass by reference):
|
---|
9 | ; TIUIFN (pass by ref) = New note IFN in file 8925, -1 if error,
|
---|
10 | ; = IFN^-1 if note filed, w/o signature when
|
---|
11 | ; TIUES=1 (It has been IFN^-1 as far back
|
---|
12 | ; as patch 140. Noted on 8/4/05)
|
---|
13 | ; = -1 if user fails to enter valid cosig
|
---|
14 | ; = IFN^-1 if TIUESBY>0 & signature fails,
|
---|
15 | ; if TIUADEL not present
|
---|
16 | ; = -1^-1 if TIUESBY>0 & signature fails,
|
---|
17 | ; if TIUADEL is present
|
---|
18 | ; = -1^-1 if TIUES=1 and user deletes note
|
---|
19 | ; Required Input parameters:
|
---|
20 | ; DFN = Patient IFN in file #2
|
---|
21 | ; TIUAUTH = Author IFN in file #200
|
---|
22 | ; TIURDT = Date/time of note in FM format
|
---|
23 | ; TIUTITLE = Title IFN in file 8925.1
|
---|
24 | ; Required global variable:
|
---|
25 | ; ^TMP("TIUP",$J) = Array root for text in format compatible
|
---|
26 | ; w/FM Word-processing fields. e.g.,
|
---|
27 | ; ^TMP("TIUP",$J,0)=^^1^1^2961216^
|
---|
28 | ; ^TMP("TIUP",$J,1,0)=Testing the TIUPNAPI.
|
---|
29 | ;
|
---|
30 | ; NOTE: you no longer need to use the
|
---|
31 | ; additional subscript to designate where
|
---|
32 | ; the text should go (e.g., 10 for Admission
|
---|
33 | ; Note).
|
---|
34 | ; Optional Input variables:
|
---|
35 | ; TIULOC = Patient Location IFN in file #44
|
---|
36 | ; TIUES = 1 if TIU should prompt/process E-SIG
|
---|
37 | ; TIUPRT = 1 if TIU should prompt user to print note
|
---|
38 | ; TIUESBY = Signer IFN in file #200: Calling App is
|
---|
39 | ; resonsible for Electronic Signature
|
---|
40 | ; TIUASKVS = BOOLEAN flag indicating whether to ask for visit
|
---|
41 | ; NOTE: If TIUESBY is passed, the document will be marked as
|
---|
42 | ; signed at the time the encrypted signature block name
|
---|
43 | ; and title are filed
|
---|
44 | ; TIUADEL = BOOLEAN flag for automatic delete if TIUESBY>0 and
|
---|
45 | ; signature fails instead of leaving UNSIGNED doc.
|
---|
46 | ;****************
|
---|
47 | ;
|
---|
48 | N TIUX,TIUCHNG,TIUHIT,TIUPRM0,TIUPRM1,TIUTYP,TIUOUT,TIUDPRM,TIUVSTR
|
---|
49 | N COSPROB,AUTHSIGN
|
---|
50 | S TIUIFN=-1,COSPROB=0
|
---|
51 | I $D(^TMP("TIUP",$J))'>9 Q ; If no text, quit
|
---|
52 | I '$D(^DPT(+$G(DFN),0)) G EXIT ; if not valid patient, clean-up & quit
|
---|
53 | I $L($$GET1^DIQ(200,+$G(TIUAUTH),.01))'>0 G EXIT ; if not valid author, clean-up & quit
|
---|
54 | I '$D(^TIU(8925.1,+$G(TIUTITLE),0)) G EXIT ; if not valid title, clean-up & quit
|
---|
55 | I $S(+$G(TIURDT)'>0:1,+$G(TIURDT)>+$$NOW^XLFDT:1,+$$FMTH^XLFDT(TIURDT)'>0:1,1:0) G EXIT
|
---|
56 | I $S('($D(DUZ)#2):1,$L($$GET1^DIQ(200,DUZ,.01))'>0:1,1:0) G EXIT
|
---|
57 | S TIUASKVS=+$G(TIUASKVS)
|
---|
58 | ; -- Okay, create new note
|
---|
59 | S TIUX(1202)=TIUAUTH,TIUX(1301)=TIURDT
|
---|
60 | ; get doc parameters
|
---|
61 | D DOCPRM^TIULC1(TIUTITLE,.TIUDPRM)
|
---|
62 | I +TIUASKVS D G:+$G(TIUOUT) EXIT
|
---|
63 | . N TIUBY,TIU,TIUY
|
---|
64 | . D ENPN^TIUVSIT(.TIU,DFN,1)
|
---|
65 | . I '$D(TIU) S TIUOUT=1,TIUIFN=-1 Q
|
---|
66 | . S TIUY=$$CHEKPN^TIULD(.TIU,.TIUBY)
|
---|
67 | . I '+TIUY S TIUOUT=1,TIUIFN=-1 Q
|
---|
68 | . I '$L($G(TIU("VSTR"))) S TIUOUT=1,TIUIFN=-1 Q
|
---|
69 | . S TIUVSTR=$G(TIU("VSTR")),TIULOC=+$G(TIU("LOC"))
|
---|
70 | . I +$G(TIU("STOP")),(+$P(TIUDPRM(0),U,14)'=1) S TIUX(.11)=1
|
---|
71 | M TIUX("TEXT")=^TMP("TIUP",$J)
|
---|
72 | D MAKE^TIUSRVP(.TIUIFN,DFN,TIUTITLE,TIURDT,$G(TIULOC),"",.TIUX,$G(TIUVSTR))
|
---|
73 | I +TIUIFN'>0 S TIUIFN=-1 G EXIT
|
---|
74 | ; -- If author requires cosig, then
|
---|
75 | ; If we're not interactive we can't get Exp Cos so we have
|
---|
76 | ; a cosig problem:
|
---|
77 | S AUTHSIGN=$S($G(TIUESBY):TIUESBY,1:TIUAUTH)
|
---|
78 | I +$$REQCOSIG^TIULP(TIUTITLE,"",AUTHSIGN) D G:+$G(TIUOUT) EXIT
|
---|
79 | . I $D(ZTQUEUED) S COSPROB=1 Q ; called from a task
|
---|
80 | . I $D(XWBOS) S COSPROB=1 Q ; called from RPCBroker app
|
---|
81 | . ; -- If we are interactive, get Exp Cos. Get it after note
|
---|
82 | . ; is created since screen needs IFN:
|
---|
83 | . N DIE,DA,DR,X,Y,COSNEED,EXPCOS
|
---|
84 | . S COSNEED=1
|
---|
85 | . S EXPCOS=$$GETCOSNR(+TIUIFN)
|
---|
86 | . I EXPCOS'>0 D DELETE^TIUSRVP("",+TIUIFN,"",1) S TIUIFN=-1,TIUOUT=1 Q
|
---|
87 | . S DIE=8925,DR="1208////^S X=EXPCOS;1506////^S X=COSNEED",DA=+TIUIFN D ^DIE
|
---|
88 | I '+$G(TIUESBY),(+$G(TIUES)>0) D I +$G(TIUOUT) G EXIT
|
---|
89 | . N VALMBCK
|
---|
90 | . ; -- Present Browse Screen so user can sign:
|
---|
91 | . D EXSTNOTE^TIUBR1(DFN,TIUIFN) I '$D(^TIU(8925,+TIUIFN,0)) S TIUIFN="-1^-1",TIUOUT=1 Q
|
---|
92 | . I +$P(^TIU(8925,+TIUIFN,0),U,5)<6 S TIUIFN=TIUIFN_"^-1"
|
---|
93 | ; -- If esig done by calling app:
|
---|
94 | ; but there IS a cosig problem and caller doesn't want unsigned
|
---|
95 | ; docmts left around, delete docmt:
|
---|
96 | I +$G(TIUESBY),COSPROB,$G(TIUADEL) D DELETE^TIUSRVP("",+TIUIFN,"",1) S TIUIFN="-1^-1" G EXIT
|
---|
97 | ; but if unsigned is OK, leave it unsigned:
|
---|
98 | I +$G(TIUESBY),COSPROB S TIUIFN=TIUIFN_"^-1"
|
---|
99 | ; -- If esig done by calling app and no cosig problem,
|
---|
100 | ; mark it signed. If sig fails and caller doesn't
|
---|
101 | ; want unsigned docmts left around, delete docmt:
|
---|
102 | I +$G(TIUESBY),'COSPROB D MARKSIGN(.TIUIFN,+$G(TIUESBY)) I +$G(TIUADEL),+$P(^TIU(8925,+TIUIFN,0),U,5)<6 D DELETE^TIUSRVP("",+TIUIFN,"",1) S TIUIFN="-1^-1" G EXIT
|
---|
103 | D SEND^TIUALRT(+TIUIFN)
|
---|
104 | EXIT K ^TMP("TIUP",$J)
|
---|
105 | Q
|
---|
106 | WHATITLE(X) ; -- Given a freetext title, return pointer to file 8925.1
|
---|
107 | Q $$WHATITLE^TIUPUTU(X)
|
---|
108 | ;
|
---|
109 | GETCOSNR(TIUIEN) ; Function Asks Expected Cosigner
|
---|
110 | N TIUY,HELP
|
---|
111 | S HELP="You may not select self, author, or others who require cosignature."
|
---|
112 | S TIUY=$$READ^TIUU("P^200:AEMQ","EXPECTED COSIGNER","",HELP,"I $$SCRCSNR^TIULA3(TIUIEN,+Y)")
|
---|
113 | Q +$G(TIUY)
|
---|
114 | ;
|
---|
115 | MARKSIGN(TIUDA,TIUESBY) ; Mark note as electronically signed
|
---|
116 | N ESNAME,ESTITLE,ESBLOCK
|
---|
117 | I $S(+$G(TIUESBY)'>0:1,$L($$GET1^DIQ(200,+$G(TIUESBY),.01))'>0:1,+$$CANDO^TIULP(TIUDA,"SIGNATURE",$G(TIUESBY))'>0:1,1:0) S TIUDA=TIUDA_U_-1 Q
|
---|
118 | S ESNAME=$$GET1^DIQ(200,+TIUESBY,20.2),ESTITLE=$$GET1^DIQ(200,+TIUESBY,20.3)
|
---|
119 | S ESBLOCK="1^"_ESNAME_U_ESTITLE
|
---|
120 | D ES^TIURS(TIUDA,ESBLOCK)
|
---|
121 | I +$P(^TIU(8925,+TIUIFN,0),U,5)<6 S TIUDA=TIUDA_"^-1"
|
---|
122 | Q
|
---|
123 | TEST ; Interactive Test
|
---|
124 | N DUOUT,DFN,TITLE,TIUTYP,TIURDT,TIUDA,DIC K ^TMP("TIUP",$J)
|
---|
125 | W !,"First, collect the data to pass to the API...",!
|
---|
126 | S DFN=+$$PATIENT^TIULA Q:+DFN'>0
|
---|
127 | D DOCSPICK^TIULA2(.TIUTYP,3,"1A","","","+$$CANPICK^TIULP(+Y),+$$CANENTR^TIULP(+Y)")
|
---|
128 | S TITLE=$P($G(TIUTYP(1)),U,2) Q:+TITLE'>0
|
---|
129 | S TIURDT=+$$NOW^XLFDT
|
---|
130 | S DIC="^TMP(""TIUP"",$J," D EN^DIWE
|
---|
131 | W !,"NOW, call the API!",!
|
---|
132 | D NEW(.TIUDA,DFN,DUZ,TIURDT,TITLE,"",1,1,"",1)
|
---|
133 | Q
|
---|