| 1 | EASUER ;ALB/CKN - GEOGRAPHIC MEANS TEST PHASE II ; 03-MAR-2003 | 
|---|
| 2 | ;;1.0;ENROLLMENT APPLICATION SYSTEM;**25,37,50,55**;Mar 15, 2001 | 
|---|
| 3 | ;This routine contains several APIs that will be called from | 
|---|
| 4 | ;different packages like Scheduling, PCE and Fee basis to notify | 
|---|
| 5 | ;Enrollment package whenever any inpatient/outpatient encounter occurs, | 
|---|
| 6 | ;or any appointment made or any changes made to fee basis authorization. | 
|---|
| 7 | Q | 
|---|
| 8 | SCHED ;This API will be called from SDAM APPOINTMENT EVENTS via EAS UE SCHED | 
|---|
| 9 | ;EVENT protocol whenever any changes made to veteran's appointment. | 
|---|
| 10 | ;Input variables used in this api: | 
|---|
| 11 | ;             SDATA     -  piece 1 - ien of multiple entry of the | 
|---|
| 12 | ;                                    APPOINTMENTS multiple of the | 
|---|
| 13 | ;                                    HOSPITAL LOCATION file. | 
|---|
| 14 | ;                          piece 2 - ien of PATIENT file (DFN) | 
|---|
| 15 | ;                          piece 3 - internal Date/time of appt. | 
|---|
| 16 | ;                          piece 4 - ien of clinic in the HOSPITAL | 
|---|
| 17 | ;                                    LOCATION file. | 
|---|
| 18 | ;             SDAMEVT   -  ien pointing to an entry in the APPOINTMENT | 
|---|
| 19 | ;                          TRANSACTION file (#409.66). | 
|---|
| 20 | ; | 
|---|
| 21 | N DFN,APT,APTDT | 
|---|
| 22 | S DFN=$P($G(SDATA),"^",2) Q:DFN=""  ;Veteran's IEN | 
|---|
| 23 | I $G(SDAMEVT)=1 D  ;if new appointment is made | 
|---|
| 24 | . S APTDT=$P($G(SDATA),"^",3),APTDT=$$FY(APTDT) | 
|---|
| 25 | . ;check current User Enrollee data and update it if necessary. | 
|---|
| 26 | . I $$UPDCHK(DFN,APTDT) D FILE(DFN,APTDT) | 
|---|
| 27 | Q | 
|---|
| 28 | ENC ;This API will be called from PXK VISIT DATA EVENT via EAS UE PCE EVENT | 
|---|
| 29 | ;whenever any inpatient/outpatient encounter occurs. | 
|---|
| 30 | ;Input: | 
|---|
| 31 | ;^TMP("PXKCO",$J,VISIT,"V FILE STRING",V FILE RECORD,DDSUBSCRIPT,"AFTER/BEFORE")=DATA | 
|---|
| 32 | ;where: subscript piece 1 - string notation representing package "PXKCO" | 
|---|
| 33 | ;       subscript piece 2 - Job number ($J) | 
|---|
| 34 | ;       subscript piece 3 - ien of VISIT file | 
|---|
| 35 | ;       subscript piece 4 - string representing the VISIT or V file | 
|---|
| 36 | ;                           data category | 
|---|
| 37 | ;       subscript piece 5 - ien of the entry in the file represented in | 
|---|
| 38 | ;                           subscript #4 | 
|---|
| 39 | ;       subscript piece 6 - subscript or DD node on which the data is stored. | 
|---|
| 40 | ;       subscript piece 7 - string designating whether or not the data | 
|---|
| 41 | ;                           is an "after" or "before" reflection of data. | 
|---|
| 42 | ; | 
|---|
| 43 | N VSIT,NODE,DFN,VDT | 
|---|
| 44 | I '$D(^TMP("PXKCO",$J)) Q | 
|---|
| 45 | S VSIT=$O(^TMP("PXKCO",$J,"")) Q:VSIT=""  ;ien of VISIT file | 
|---|
| 46 | S NODE=$G(^AUPNVSIT(VSIT,0)) | 
|---|
| 47 | ;get Veteran's IEN and encounter date | 
|---|
| 48 | S DFN=$P($G(NODE),"^",5),VDT=$P($G(NODE),"^",1) | 
|---|
| 49 | S VDT=$$FY(VDT) | 
|---|
| 50 | ;check current User Enrollee data and update if necessary | 
|---|
| 51 | I $$UPDCHK(DFN,VDT) D FILE(DFN,VDT) | 
|---|
| 52 | Q | 
|---|
| 53 | FBAUTH(FBDFN,FBTODT) ;This Enrollment api will be called from Fee basis | 
|---|
| 54 | ;applications at the time of any fee basis authorization changes. | 
|---|
| 55 | ;Input:         FBDFN  -  Veteran's ien | 
|---|
| 56 | ;              FBTODT  -  Latest date of authorization. | 
|---|
| 57 | ; | 
|---|
| 58 | N XDT | 
|---|
| 59 | S XDT=$$FY(FBTODT) | 
|---|
| 60 | I $$UPDCHK(FBDFN,XDT) D FILE(FBDFN,XDT) | 
|---|
| 61 | Q | 
|---|
| 62 | INP ;This Enrollment api will be called from DGPM MOVEMENT EVENT via | 
|---|
| 63 | ;EAS UE INP EVENT protocol whenever inpatient veteran is admitted, | 
|---|
| 64 | ;transfered,discharged or any movement. | 
|---|
| 65 | ;supported variables of this event: | 
|---|
| 66 | ;       DFN  - Pointer to patient in PATIENT file (#2) | 
|---|
| 67 | ;    DGPMDA  - Pointer to primary movement in PATIENT MOVEMENT file. | 
|---|
| 68 | ;     DGPMP  - Zero node of primary movement prior to add/edit/del | 
|---|
| 69 | ;     DGPMA  - Zero node of primary movement after add/edit/delete | 
|---|
| 70 | ; | 
|---|
| 71 | N XDT | 
|---|
| 72 | I '$G(DFN)!'$G(DGPMDA) Q | 
|---|
| 73 | S XDT=$P($G(^DGPM(DGPMDA,0)),"^")  ;Date of movement | 
|---|
| 74 | S XDT=$$FY(XDT) I $$UPDCHK(DFN,XDT) D FILE(DFN,XDT) | 
|---|
| 75 | Q | 
|---|
| 76 | UESTAT(DFN) ;This api will be called at the time of Annual MT renewal | 
|---|
| 77 | ;process to check if veteran has UE status for current FY. | 
|---|
| 78 | N UESTAT,UESITE,UESTN,CURSTN,PRNT,CHILD,CIEN | 
|---|
| 79 | I '$G(DFN) Q 0  ;No DFN | 
|---|
| 80 | S UESTAT=$P($G(^DPT(DFN,.361)),"^",7) | 
|---|
| 81 | I UESTAT="" Q 0  ;Not User Enrollee | 
|---|
| 82 | I UESTAT<$$FY(DT) Q 0  ;Not User Enrollee for current FY | 
|---|
| 83 | S UESITE=$P($G(^DPT(DFN,.361)),"^",8) Q:+UESITE=0 0 | 
|---|
| 84 | ; *** Modifications for patch 55 to handle VISN or HCS UE Sites | 
|---|
| 85 | S UESTN=$$STA^XUAF4(UESITE) | 
|---|
| 86 | S CURSTN=$P($$SITE^VASITE,"^",3) | 
|---|
| 87 | ; | 
|---|
| 88 | I UESTN']"" D | 
|---|
| 89 | . D CHILDREN^XUAF4("CHILD","`"_UESITE,"PARENT FACILITY") | 
|---|
| 90 | . S CIEN=0 F  S CIEN=$O(CHILD("C",CIEN)) Q:'CIEN  I CIEN=CURSTN S UESTN=$$STA^XUAF4(CIEN) Q | 
|---|
| 91 | . I UESTN']"" D | 
|---|
| 92 | . . D CHILDREN^XUAF4("CHILD","`"_UESITE,"VISN") | 
|---|
| 93 | . . S CIEN=0 F  S CIEN=$O(CHILD("C",CIEN)) Q:'CIEN  I CIEN=CURSTN S UESTN=$$STA^XUAF4(CIEN) Q | 
|---|
| 94 | ; | 
|---|
| 95 | S PRNT=$$PSITE(CURSTN),CURSTN=$$STA^XUAF4(PRNT) | 
|---|
| 96 | I UESTN'=CURSTN Q 2  ;Not same site | 
|---|
| 97 | Q 1 | 
|---|
| 98 | UPDCHK(DFN,APTDT) ;This api will determine whether to update User Enrollee data. | 
|---|
| 99 | I '$G(DFN) Q 0  ;No DFN | 
|---|
| 100 | I $P($G(^DPT(DFN,"VET")),"^")="N" Q 0  ;Quit if Non veteran | 
|---|
| 101 | I APTDT<3030000 Q 0  ;Quit if APTDT is less than FY 2003 | 
|---|
| 102 | N CURSTAT | 
|---|
| 103 | S CURSTAT=$P($G(^DPT(DFN,.361)),"^",7) | 
|---|
| 104 | I APTDT>CURSTAT Q 1 | 
|---|
| 105 | Q 0 | 
|---|
| 106 | FY(XDATE) ;Returns a fiscal year for the date | 
|---|
| 107 | N ENFY S ENFY="" | 
|---|
| 108 | I $G(XDATE)?7N.E S ENFY=$S($E(XDATE,4,5)<10:$E(XDATE,1,3),1:$E(XDATE,1,3)+1) | 
|---|
| 109 | Q ENFY_"0000" | 
|---|
| 110 | ; | 
|---|
| 111 | PSITE(STA) ;Get parent site IEN | 
|---|
| 112 | N PRNT,PRNTYP | 
|---|
| 113 | ; | 
|---|
| 114 | S PRNT=0 | 
|---|
| 115 | ; First pass, get the parent facility, then get the facility type for the parent | 
|---|
| 116 | ; If the parent is a VAMC, then quit returning parent | 
|---|
| 117 | ; If the parent is either a VISN or HCS type, then return the current station, not the parent | 
|---|
| 118 | ; | 
|---|
| 119 | S PRNT=+$$PRNT^XUAF4(STA) | 
|---|
| 120 | I PRNT>0 D | 
|---|
| 121 | . S PRNTYP=$$GET1^DIQ(4,PRNT,13) | 
|---|
| 122 | . I PRNTYP="VAMC" Q | 
|---|
| 123 | . I "HCS,VISN"[PRNTYP S PRNT=STA Q | 
|---|
| 124 | E  D | 
|---|
| 125 | . I $$GET1^DIQ(4,STA,13)="VAMC" S PRNT=STA Q | 
|---|
| 126 | . E  S REVSTA=$E(STA,1,3),PRNT=+$$PRNT^XUAF4(REVSTA) D | 
|---|
| 127 | . . I $$GET1^DIQ(4,PRNT,13)="VAMC" Q | 
|---|
| 128 | . . S PRNT=+$O(^DIC(4,"D",REVSTA,"")) | 
|---|
| 129 | Q PRNT | 
|---|
| 130 | ; | 
|---|
| 131 | CHKPRNT(PRNT) ; Check if parent is a VISN entity, removed with Patch 50 | 
|---|
| 132 | Q 0 | 
|---|
| 133 | ; | 
|---|
| 134 | FILE(XIEN,XDT) ;Update User Enrollee fields and queue Z07 | 
|---|
| 135 | N DATA,FILEUPD,SITE,PRNT,EVENT,IYR | 
|---|
| 136 | S SITE=$$SITE^VASITE,SITE=$P($G(SITE),"^",3) | 
|---|
| 137 | S PRNT=$$PSITE(SITE) Q:'+$G(PRNT) | 
|---|
| 138 | S DATA(.3617)=XDT,DATA(.3618)=PRNT | 
|---|
| 139 | I '$$UPD^DGENDBS(2,.XIEN,.DATA) Q | 
|---|
| 140 | S IYR=$$INCYR(XIEN) | 
|---|
| 141 | S EVENT("ENROLL")=1 I $$LOG^IVMPLOG(XIEN,IYR,.EVENT) | 
|---|
| 142 | Q | 
|---|
| 143 | INCYR(XIEN) ;Get valid income year | 
|---|
| 144 | ;N INCYR,LMT,R3015,I,TEMP | 
|---|
| 145 | I $D(^IVM(301.5,"APT",XIEN)) D  Q INCYR | 
|---|
| 146 | . S INCYR=$O(^IVM(301.5,"APT",XIEN,""),-1) | 
|---|
| 147 | F I=1,2,4 D | 
|---|
| 148 | . S LMT=$$LST^DGMTU(XIEN,,I) | 
|---|
| 149 | . I +$G(LMT) S TEMP($P(LMT,"^",2))="" | 
|---|
| 150 | I $D(TEMP) S LMT=$O(TEMP(""),-1),INCYR=($E(LMT,1,3)-1)_"0000" Q INCYR | 
|---|
| 151 | S INCYR=($E(DT,1,3)-1)_"0000" | 
|---|
| 152 | Q INCYR | 
|---|