1 | VAFCTFU ;ALB/JLU-UTILITIES FOR THE TREATING FACILITY FILE 391.91 ;10/10/02 15:55
|
---|
2 | ;;5.3;Registration;**149,240,261,255,316,392,440,428,474,520,697**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | ;Reference to EXC^RGHLLOG and STOP^RGHLLOG supported by IA #2796
|
---|
5 | ;Reference to $$UPDATE^ MPIFAPI supported by IA #2706
|
---|
6 | ;
|
---|
7 | ;CHKSUB & GETSCN line tags removed, patch DG*5.3*697
|
---|
8 | ;Subscriptions are no longer used and errors are being
|
---|
9 | ;generated when attempting to add a subscription.
|
---|
10 | ;
|
---|
11 | FILETF(PAT,INST) ;programmer entry point.
|
---|
12 | ;INPUT PAT - This is the patient's ICN
|
---|
13 | ; INST - This is the IEN of the institution or Treating Facility
|
---|
14 | ;it also contains the date of treatment in FM format. It is to be
|
---|
15 | ;stored in an array structure to allow for multiple treating
|
---|
16 | ;facilities.
|
---|
17 | ; EX. X(1)=500^2960101
|
---|
18 | ; x(2)=425^2960202
|
---|
19 | ;
|
---|
20 | ;OUTPUT 0 (ZERO) If no errors
|
---|
21 | ; 1^error description if there was an error.
|
---|
22 | ;
|
---|
23 | N PDFN,LP,VAFCER,X
|
---|
24 | S VAFCER=0
|
---|
25 | I '$G(PAT)!('$D(INST)) S VAFCER="1^Parameter missing." G FILETFQ
|
---|
26 | I $D(@INST)<10 S VAFCER="1^Institution array not populated." G FILETFQ
|
---|
27 | S X="MPIF001" X ^%ZOSF("TEST") I '$T G FILETFQ
|
---|
28 | S PDFN=$$GETDFN^MPIF001(PAT)
|
---|
29 | I PDFN<0 S VAFCER="1^No patient DFN." G FILETFQ
|
---|
30 | N FSTRG
|
---|
31 | F LP=0:0 S LP=$O(@INST@(LP)) Q:'LP D FILE(PDFN,@INST@(LP))
|
---|
32 | ;
|
---|
33 | FILETFQ Q VAFCER
|
---|
34 | ;
|
---|
35 | ; both the SET & QUERYTF subroutines have been moved to VAFCTFU1 as
|
---|
36 | ; the result of DG*5.3*261 *261 gjc@120899
|
---|
37 | ;
|
---|
38 | FILE(PDFN,FSTRG,TICN,VAFCSLT,ERROR) ;this module files the individual entry
|
---|
39 | ;PDFN is the patient's DFN
|
---|
40 | ;FSTRG = institution or treating facility^Date of treatment^Event reason
|
---|
41 | ;TICN - if 1 suppress add entries to ADT HL7 PIVOT (#391.71) file
|
---|
42 | ;VAFCSLT - (optional) if 1 suppress exception logging and return error in the ERROR array
|
---|
43 | ;ERROR - (optional)
|
---|
44 | ;Ex 500^2960202^A1
|
---|
45 | ;
|
---|
46 | N X,Y
|
---|
47 | I $G(VAFCSLT)="" S VAFCSLT=0
|
---|
48 | S X="MPIF001" X ^%ZOSF("TEST") Q:'$T
|
---|
49 | S X="MPIFQ0" X ^%ZOSF("TEST") Q:'$T
|
---|
50 | N TFIEN,PDLT,FAC,EVNTR,VAFCER,CMOR,ICN,STA,ECNT
|
---|
51 | S ECNT=1
|
---|
52 | S FAC=$P(FSTRG,U,1),PDLT=$P(FSTRG,U,2),EVNTR=$P(FSTRG,U,3)
|
---|
53 | S STA=$$STA^XUAF4(FAC)
|
---|
54 | ;
|
---|
55 | I '$$FIND1^DIC(4,"","MX","`"_FAC) D Q
|
---|
56 | . I 'VAFCSLT D EXC^RGHLLOG(212,"Msg#"_$G(HL("MID"))_" unknown Institution IEN "_FAC_" passed into TF update.",PDFN) D STOP^RGHLLOG(1) Q
|
---|
57 | . I VAFCSLT S ERROR(STA)="Update of "_STA_" Failed at "_$P($$SITE^VASITE,"^",3)_" due to unknown Institution IEN "_FAC_" passed into TF update."
|
---|
58 | I PDLT'="" K %DT S %DT="T" S X=PDLT D ^%DT K %DT I Y<0 S VAFCER="1^Not a FM date." D Q
|
---|
59 | .I 'VAFCSLT D EXC^RGHLLOG(212,"TF updated in msg#"_$G(HL("MID"))_" for Institution IEN "_FAC_" but with invalid date "_PDLT_" for DFN "_PDFN,PDFN)
|
---|
60 | .I VAFCSLT S ERROR(STA)="Update of "_STA_" Failed at "_$P($$SITE^VASITE,"^",3)_" due to invalid date "_PDLT_" for DFN "_PDFN
|
---|
61 | ;removed code for adding local ICN's
|
---|
62 | S ICN=+$$MPINODE^MPIFAPI(PDFN)
|
---|
63 | S TFIEN=$O(^DGCN(391.91,"APAT",PDFN,FAC,0)) D
|
---|
64 | .;TFIEN is used in other places so quit after adding new entry
|
---|
65 | .I 'TFIEN D FILENEW(PDFN,FAC,PDLT,EVNTR,VAFCSLT,.ERROR) Q
|
---|
66 | .I TFIEN D FILEDIT(TFIEN,PDLT,PDFN,FAC,EVNTR,VAFCSLT,.ERROR)
|
---|
67 | ;look to see if CMOR is in TF list if not add
|
---|
68 | S CMOR=$$GETVCCI^MPIF001(PDFN)
|
---|
69 | S CMOR=$$LKUP^XUAF4(CMOR) ; **520 REMOVED +
|
---|
70 | ;check to see if CMOR exist if not add it
|
---|
71 | I +$G(CMOR)>0 D:'$D(^DGCN(391.91,"APAT",PDFN,CMOR)) FILENEW^VAFCTFU(PDFN,CMOR)
|
---|
72 | ;create the entry in the pivot to broadcast the MFU.
|
---|
73 | ; Note: we will not broadcast to the MFU if the TFL record
|
---|
74 | ; has an event reason. See comments in FILEDIT. *261 gjc@120199
|
---|
75 | I $G(TICN)'=1,$P($$SEND^VAFHUTL,"^",2)>0 D SETSND(PDFN)
|
---|
76 | FILEQ Q
|
---|
77 | ;
|
---|
78 | FILENEW(PDFN,FAC,PDLT,EVNTR,VAFCSLT,ERROR) ;
|
---|
79 | N DGSENFLG ;**240 added y
|
---|
80 | K DD,DO,DIC,DA,RESULT
|
---|
81 | S DGSENFLG=""
|
---|
82 | N FDA,FDAIEN,ERR S ERR=""
|
---|
83 | I $G(EVNTR)'="" D CHK^DIE(391.91,.07,"",EVNTR,.RESULT) I +RESULT>0 S EVNTR=RESULT
|
---|
84 | S FDA(1,391.91,"+1,",.01)=PDFN
|
---|
85 | S FDA(1,391.91,"+1,",.02)=FAC
|
---|
86 | S FDA(1,391.91,"+1,",.03)=$G(PDLT)
|
---|
87 | S FDA(1,391.91,"+1,",.07)=$G(EVNTR)
|
---|
88 | L +^DGCN(391.91,0):30
|
---|
89 | I '$D(^DGCN(391.91,"APAT",PDFN,FAC)) D UPDATE^DIE("","FDA(1)","FDAIEN","ERR") I $D(ERR("DIERR",1)) S ERROR(STA)="Add of "_STA_" Failed at "_$P($$SITE^VASITE,"^",3)_" due to "_$G(ERR("DIERR",1,"TEXT",1))
|
---|
90 | ;removed code to add a subscription
|
---|
91 | L -^DGCN(391.91,0)
|
---|
92 | K DIC,DD,DO,DA
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | SETSND(PDFN) ;sets the pivot file entry to send MFU
|
---|
96 | ;
|
---|
97 | N ANS,X
|
---|
98 | S X="MPIF001" X ^%ZOSF("TEST") Q:'$T
|
---|
99 | ; check if other facilities other than CMOR in TF list
|
---|
100 | N SIT,CMOR,STOP
|
---|
101 | S CMOR=$$GETVCCI^MPIF001(PDFN)
|
---|
102 | S CMOR=$$LKUP^XUAF4(CMOR) ; **520 REMOVED +
|
---|
103 | I CMOR=$P($$SITE^VASITE,"^") D
|
---|
104 | .S SIT=0
|
---|
105 | .S SIT=$O(^DGCN(391.91,"APAT",PDFN,SIT))
|
---|
106 | .I SIT=CMOR S SIT=$O(^DGCN(391.91,"APAT",PDFN,SIT)) I SIT="" S STOP=""
|
---|
107 | I $D(STOP) QUIT
|
---|
108 | S ANS=$$PIVNW^VAFHPIVT(PDFN,DT,5,PDFN_";DPT(")
|
---|
109 | I 'ANS QUIT
|
---|
110 | D XMITFLAG^VAFCDD01(0,+ANS,0)
|
---|
111 | SETSNDQ Q
|
---|
112 | ;
|
---|
113 | FILEDIT(TFIEN,PDLT,PDFN,FAC,EVNTR,VAFCSLT,ERROR) ;
|
---|
114 | N DGSENFLG,FDA,FDAIEN,ERR,RESULT S DGSENFLG="",ERR=""
|
---|
115 | I $G(PDLT)'="" D
|
---|
116 | .S TFIEN(0)=$G(^DGCN(391.91,TFIEN,0))
|
---|
117 | .I $G(EVNTR)'="" D CHK^DIE(391.91,.07,"",EVNTR,.RESULT) I +RESULT>0 S EVNTR=RESULT
|
---|
118 | .S FDA(1,391.91,+TFIEN_",",.03)=$G(PDLT)
|
---|
119 | .S FDA(1,391.91,+TFIEN_",",.07)=$G(EVNTR)
|
---|
120 | .D FILE^DIE("K","FDA(1)","ERR") I VAFCSLT I $D(ERR("DIERR",1)) S ERROR(STA)="Edit of "_STA_" Failed at "_$P($$SITE^VASITE,"^",3)_" due to "_$G(ERR("DIERR",1,"TEXT",1))
|
---|
121 | ;remove code to add a subscription
|
---|
122 | Q
|
---|
123 | ;
|
---|
124 | DELETETF(PAT,INST) ;deletion entry point
|
---|
125 | ;This entry point is used to delete a single Treating Facility from
|
---|
126 | ;the Treating Facility list.
|
---|
127 | ;INPUT PAT - the ICN of the patient.
|
---|
128 | ; INST - the IEN of the institution to be deleted.
|
---|
129 | ;
|
---|
130 | ;OUTPUT 0 (zero) - If no errors
|
---|
131 | ; 1^error description if there was a problem
|
---|
132 | ;
|
---|
133 | N VAFCER,PDFN,TFIEN,X,VAFCSCN,LINK,VAFCLLN,IEN
|
---|
134 | S VAFCER=0
|
---|
135 | I '$G(PAT)!('$G(INST)) S VAFCER="1^Parameter missing." S ERROR(INST)="212"_"^"_$G(HL("MID"))_"^"_"Delete Failed: "_$P(VAFCER,"^") G DELTFQ
|
---|
136 | S X="MPIF001" X ^%ZOSF("TEST") I '$T G FILETFQ
|
---|
137 | S PDFN=$$GETDFN^MPIF001(+PAT)
|
---|
138 | I PDFN<0 S VAFCER="1^No patient DFN." G FILETFQ
|
---|
139 | I '$$FIND1^DIC(4,"","MX","`"_INST) S VAFCER="1^Not an Institution IEN." G DELTFQ
|
---|
140 | S TFIEN=$O(^DGCN(391.91,"APAT",PDFN,INST,0))
|
---|
141 | I 'TFIEN S VAFCER="1^Could not find Treating Facility." G DELTFQ
|
---|
142 | D DELETE(TFIEN)
|
---|
143 | S TFIEN=$O(^DGCN(391.91,"APAT",PDFN,INST,0))
|
---|
144 | I TFIEN S VAFCER="1^DIK failed to delete entry" G DELTFQ
|
---|
145 | ;terminate the subscription if there is one
|
---|
146 | S VAFCSCN=+$P($$MPINODE^MPIFAPI(PDFN),"^",5) I +$G(VAFCSCN)>0 D
|
---|
147 | .;get logical link
|
---|
148 | . D LINK^HLUTIL3(INST,.LINK) S VAFCLLN=$O(LINK(0)) I +$G(VAFCLLN)>0 S VAFCLLN=LINK(VAFCLLN) D UPD^HLSUB(VAFCSCN,VAFCLLN,0,,$$NOW^XLFDT,,.HLER)
|
---|
149 | D RETPDR^VAFCEHU2(PDFN,INST) ;**474 retire pdr when deleting tf
|
---|
150 | DELTFQ Q VAFCER
|
---|
151 | ;
|
---|
152 | DELETE(TFIEN) ;the actual deletion code
|
---|
153 | ;
|
---|
154 | K DIK,DA
|
---|
155 | S DIK="^DGCN(391.91,"
|
---|
156 | S DA=TFIEN
|
---|
157 | D ^DIK K DIK,DA
|
---|
158 | Q
|
---|
159 | ;
|
---|
160 | DELALLTF(PAT) ;Entry point to delete all Treating Facilities for a single
|
---|
161 | ;patient.
|
---|
162 | ;INPUT PAT - The patient's ICN
|
---|
163 | ;OUTPUT 0 (zero) - If no errors
|
---|
164 | ; 1^error description if an error
|
---|
165 | ;
|
---|
166 | N VAFCER,PDFN,LP,TFIEN,X
|
---|
167 | S VAFCER=0
|
---|
168 | I '$G(PAT) Q "1^Parameter missing."
|
---|
169 | S X="MPIF001" X ^%ZOSF("TEST") I '$T Q 0
|
---|
170 | S PDFN=$$GETDFN^MPIF001(PAT)
|
---|
171 | I PDFN<0 Q "1^No patient DFN."
|
---|
172 | F LP=0:0 S LP=$O(^DGCN(391.91,"APAT",PDFN,LP)) Q:LP'>0 D
|
---|
173 | . S TFIEN=0
|
---|
174 | . F S TFIEN=$O(^DGCN(391.91,"APAT",PDFN,LP,TFIEN)) Q:TFIEN'>0 D DELETE(TFIEN)
|
---|
175 | ;
|
---|
176 | Q VAFCER
|
---|
177 | ;
|
---|