1 | ACKQAG05 ;DALC/PJU - UTILITY FOR TRANSMISSION ;02/09/07
|
---|
2 | ;;3.0;QUASAR AUDIOMETRIC MODULE;**3,12,13**;11/01/02;Build 24
|
---|
3 | ;;ALSO CALLED FROM ACKQAG03
|
---|
4 | ; IA# 10103 [Supported] call to FMTE^XLFDT - change date
|
---|
5 | ; IA# 10066 [Supported] call to XMZ^XMA2 - new message stub
|
---|
6 | ; IA# 2701 [Supported] call to GETICN^MPIF001 - get ICN
|
---|
7 | ; IA# 10070 [Supported] call to EN1^XMD - add message text & send
|
---|
8 | ; IA# 2732 [Supported] call to CHKLINES^XMXSEC1 - check message length
|
---|
9 | ; IA# 2240 [Supported] call to ENCRYP^XUSRB1 - encrypt SSN
|
---|
10 | ACKEXIST() ;returns 1 if 509850.9 exists, else 0
|
---|
11 | N ACKQANS
|
---|
12 | I $D(^ACK(509850.9)),$O(^ACK(509850.9,0)) S ACKQANS=1
|
---|
13 | E S ACKQANS=0
|
---|
14 | ENDA Q ACKQANS
|
---|
15 | ;
|
---|
16 | DFNIN(DFN) ;input DFN of patient
|
---|
17 | ;return last entry in 509850.9 for DFN or 0 if none
|
---|
18 | N ACKQANS,ACKQI,ACKQL
|
---|
19 | S ACKQANS=0
|
---|
20 | I $D(^ACK(509850.9,"DFN",DFN)) D
|
---|
21 | .S ACKQL="A"
|
---|
22 | .S ACKQL=$O(^ACK(509850.9,"DFN",DFN,ACKQL),-1) Q:'ACKQL ;last date
|
---|
23 | .S ACKQI=0
|
---|
24 | .S ACKQI=$O(^ACK(509850.9,"DFN",DFN,ACKQL,ACKQI)) Q:'ACKQI ;entry
|
---|
25 | .I ACKQI>0 I $G(^ACK(509850.9,ACKQI,0))'="" S ACKQANS=ACKQI
|
---|
26 | ENDD Q ACKQANS
|
---|
27 | ;
|
---|
28 | NEWMSG() ;return entry in ^XMB(3.9
|
---|
29 | ; requires DUZ, sets up XMDUZ, XMSUB
|
---|
30 | ;outputs XMZ
|
---|
31 | S XMSUB="AUDIOGRAM DATA TRANSMISSION",XMDUZ=DUZ
|
---|
32 | S XMY("S.RMROES3@DDC.VA.GOV")=""
|
---|
33 | ;S XMY("S.RMROES3@DDCTRN.VA.GOV")="" ;for testing
|
---|
34 | D XMZ^XMA2 ;returns XMZ
|
---|
35 | Q XMZ
|
---|
36 | ;
|
---|
37 | DFNCT(RESULT,DFN) ;Return number of entries in 509850.9 file
|
---|
38 | ;outputs a number based on the DFN2 xref on DFN only
|
---|
39 | ;Called by RPC ACKQAUD4
|
---|
40 | N CT,I S (RESULT,CT,I)=0
|
---|
41 | ;G:'$D(^ACK(509850.9,"DFN2",DFN)) ENDC
|
---|
42 | ;F S I=$O(^ACK(509850.9,"DFN2",DFN,I)) Q:'I S CT=CT+1
|
---|
43 | ;S RESULT=CT
|
---|
44 | S RESULT(0)=CT_U_$P($G(^DPT(DFN,0)),U,1)
|
---|
45 | F S I=$O(^ACK(509850.9,"DFN2",DFN,I)) Q:'I D
|
---|
46 | .S CT=CT+1
|
---|
47 | .S RESULT(CT)=I,$P(RESULT(0),U,1)=CT
|
---|
48 | ENDC Q RESULT
|
---|
49 | ;
|
---|
50 | ;STARTD(RESULT,DFN,IEN,RMUSER)
|
---|
51 | STARTD(RESULT,DFN,IEN,ACKQSTNU,ACKQUSNM,ACKQUSSR) ;
|
---|
52 | ;Deletion message for RPC ACKQROESD (DFN & IEN are required)
|
---|
53 | ;N ACKQER,ACKQERR,ACKQFA,ACKQHSSN,ACKQMSG,DFNNAME,SSN,ST
|
---|
54 | N ACKQER,ACKQERR,ACKQFA,ACKQHSSN,ACKQMSG,ACKQRMI,ACKQVT,SSN,ST,ICN
|
---|
55 | K ACKQARR S ACKQARR(0)="",ACKQMSG="",XMZ="",ACKQER="",XMMG=""
|
---|
56 | N XMTEXT,XMDUZ,XMRESTR,XMY,XMSUB
|
---|
57 | ;check for existance and get entry
|
---|
58 | S ACKQFA=$$ACKEXIST() ;ck if file exist
|
---|
59 | I 'ACKQFA S ACKQER=$$ERRTEXT(1) G ENDS ;file not exist
|
---|
60 | I $G(IEN),$D(^ACK(509850.9,IEN,0)) D G ENDS ;local IEN not deleted
|
---|
61 | .S ACKQER=$$ERRTEXT(10)
|
---|
62 | S ACKQRMI=IEN ;10/5/05
|
---|
63 | ;create stub and address to S.RMROES3@DDC.VA.GOV
|
---|
64 | S (ACKQMSG,XMZ)=$$NEWMSG() ;returns XMZ addressed to S.RMROES3@DDC.VA.GOV
|
---|
65 | ;get data into array ACKQARR
|
---|
66 | ;ACKQARR(1)=BGN^IEN^DFNNAME^DFNssn^err^bd^tester^Signdt^ex dt^vet^type^age^tt^cl#^retran dt^"D"
|
---|
67 | S DFNNAME=$P($G(^DPT(DFN,0)),U,1)
|
---|
68 | S SSN=$P($G(^DPT(DFN,0)),U,9)
|
---|
69 | S ACKQHSSN=$$ENCRYP^XUSRB1(SSN)
|
---|
70 | S ACKQARR(1)="BGN^"_ACKQRMI_"^"_DFNNAME_"^"_ACKQHSSN_"^^^^^^^^^^^" ;send encrypted SSN
|
---|
71 | S ACKQARR(1)=ACKQARR(1)_DT_"^"_"D" ;tran date & delete flag
|
---|
72 | S X="MPIF001" X ^%ZOSF("TEST")
|
---|
73 | I S ICN=$$GETICN^MPIF001(DFN),ICN=$E(ICN,1,10)
|
---|
74 | E S ICN=""
|
---|
75 | S ACKQARR(2)="DDCINFO"_U_$G(ACKQSTNU)_U_$G(ACKQUSNM)_U_$G(ACKQUSSR)_U
|
---|
76 | S ACKQARR(2)=ACKQARR(2)_$G(ACKQRMI)_U_$G(ACKQHSSN)_U_U_U_$G(ICN)
|
---|
77 | S XMTEXT="ACKQARR(",XMDUZ=DUZ,XQDATE=DT,XMSUB="AUIDOGRAM DATA TRANSMISSION"
|
---|
78 | D CHKLINES^XMXSEC1(XMDUZ,XMZ,.XMRESTR)
|
---|
79 | I $D(XMRESTR("NONET")) D G ENDS
|
---|
80 | .S ACKQER="Message too long for network. Limit "_XMRESTR("NONET")
|
---|
81 | D EN1^XMD ;add text and send
|
---|
82 | ;notify user
|
---|
83 | S XMSUB="AUDIOGRAM DELETION SENT"
|
---|
84 | S XMY(DUZ)="",XMDUZ="AUDIOGRAM PKG"
|
---|
85 | D XMZ^XMA2 ;returns XMZ
|
---|
86 | K ACKQARR
|
---|
87 | S ACKQARR(1)="Deletion Message to DALC for "_DFNNAME_" is MSG number:"_ACKQMSG
|
---|
88 | S ACKQARR(2)="Sent on: "_$$FMTE^XLFDT(DT)
|
---|
89 | S ACKQARR(3)="AUDIOMETRIC EXAM file entry number: "_ACKQRMI
|
---|
90 | S XMTEXT="ACKQARR(",XMSUB="AUDIOGRAM DELETION"
|
---|
91 | D EN1^XMD ;add text and send
|
---|
92 | ENDS D:$L($G(ACKQER)) WRITEER K ACKQARR,I
|
---|
93 | ;XMMG is the failure msg if there is one
|
---|
94 | S RESULT=$G(XMZ)_U_$G(ACKQMSG)_U_$G(ACKQER)_U_$G(XMMG)
|
---|
95 | Q
|
---|
96 | ;
|
---|
97 | ERRTEXT(ACKQERR) ;error msg's, input error #
|
---|
98 | N ACKQER1 ;ERROR TEXT
|
---|
99 | S ACKQER1=$P($T(@(ACKQERR_"^ACKQAG05")),";",3) G ENDE
|
---|
100 | 1 ;;THE AUDIOMETRIC DATA FILE CANNOT BE ACCESSED
|
---|
101 | 2 ;;THERE IS NOT A VALID ENTRY FOR THIS PATIENT
|
---|
102 | 3 ;;THE MESSAGE COULD NOT BE SET UP
|
---|
103 | 4 ;;THE ADDRESS COULD NOT BE SET UP
|
---|
104 | 5 ;;THERE HAS BEEN AN ERROR IN COLLECTING THE AUDIOMETRIC DATA
|
---|
105 | 6 ;;ONE OF THE MESSAGE LINES WAS TOO LONG
|
---|
106 | 7 ;;AN ERROR OCCURRED WHILE PLACING THE DATA INTO THE TRANSMISSION
|
---|
107 | 8 ;;THE ENTRY FOUND IS NOT THE SAME ENTRY THAT IS BEING EDITED
|
---|
108 | 9 ;;THERE IS A CONFLICT BETWEEN THE PATIENT AND THE FILE ENTRY
|
---|
109 | 10 ;;THE RECORD SELECTED HAS NOT BEEN LOCALLY DELETED
|
---|
110 | ENDE Q ACKQER1
|
---|
111 | ;
|
---|
112 | WRITEER ;W !!,"*****",ACKQER,"*****" ;for testing
|
---|
113 | ;S:$L($G(XMMG)) ACKQER="MSG FAILURE"
|
---|
114 | S ACKQER="*****"_ACKQER_"*****"
|
---|
115 | Q
|
---|