- EASMTUTL ; ALB/SCK/BRM/PHH - AUTOMATED MEANS TEST LETTERS UTILITIES ; 7/2/01
- ;;1.0;ENROLLMENT APPLICATION SYSTEM;**3,14,15,29,22,54**;MAR 15,2001
- ;
- ;
- PAUSE ; Screen pause, user must press key to continue
- S DIR(0)="FAO",DIR("A")="Press any key to continue..."
- D ^DIR K DIR
- Q
- ;
- CLRFLG(EAX,DA) ; Clears flags in File #713.2, For development
- N DIE,DR
- ;
- Q:EAX=1
- S:EAX=2 DR="9///0"
- S:EAX=3 DR="9///0;12///0"
- S:EAX=4 DR="9///0;12///0"
- S:EAX=0 DR="9///0;12///0;18///0"
- S DIE="^EAS(713.2,"
- D ^DIE K DIE
- Q
- ;
- LOCK(ACTION) ; Flag IN USE field in EAS Parameters file, #713
- ; Input
- ; ACTION - Locking action
- ; 1 = Flag IN USE for Automated Generator is running
- ; 0 = Flag IN USE for Automated Generator is not running
- ; Output
- ; 1 if action was successful
- ; 0 if action was not successful
- N RSLT
- ;
- I ACTION,$D(^EAS(713,"ALOCK",1)) Q $G(RSLT)
- ;
- S DIE="^EAS(713,",DA=1,DR="30////^S X=ACTION"
- D ^DIE K DIE
- S RSLT=1
- Q +$G(RSLT)
- ;
- ALERT(ERRMSG) ; Post an alert message to the EAS Letters Mail group
- N XMY,XMTEXT,XMDUZ,XMSUB,MSG
- ;
- S MSG(1)="Notification:"
- S MSG(2)=ERRMSG
- ;
- S XMY("G.EAS MTLETTERS")=""
- S XMTEXT="MSG("
- S XMDUZ="EAS Auto MT Letters"
- S XMSUB="EAS Means Test Letter's Notice"
- D ^XMD
- Q
- ;
- ADRERR(EASADD,DFN) ; Error notification for missing or invalid patient address
- N MSG,XMY,XMTEXT,XMDUZ,XMSUB,VAROOT,EASDEM,VA,EASPRF
- ;
- S VAROOT="EASDEM"
- D DEM^VADPT
- D PID^VADPT6
- S EASPRF=$$GET1^DIQ(2,DFN,27.02)
- I EASPRF']"" S EASPRF="No Preferred Facility"
- ;
- S MSG(1)="The following patient does not have a complete permanent mailing"
- S MSG(2)="address. A means test reminder letter could not be mailed."
- S MSG(3)=" "
- S MSG(4)=" Patient : "_EASDEM(1)
- S MSG(5)=" Last 4 : "_VA("BID")
- S MSG(6)="Address Line 1 : "_EASADD(1)
- S MSG(7)=" City : "_EASADD(4)
- S MSG(8)=" State : "_$P(EASADD(5),U,2)
- S MSG(9)=" Zipcode : "_$P(EASADD(11),U,2)
- S MSG(9.5)=" Bad Addr : "_$P(EASADD("BAI"),U,2)
- S MSG(10)=""
- S MSG(11)=" DFN : "_$G(DFN)
- S MSG(13)=""
- S MSG(14)="This patient's letter entry will stay in 'FLAGGED-TO-PRINT' status until"
- S MSG(15)="the address is corrected."
- ;
- I +EASADD(9)>0!(+EASADD(10)>0) D
- . S MSG(5.5)="** Temporary Address in effect **"
- S XMY("G.EAS MTLETTERS")=""
- S XMTEXT="MSG("
- S XMDUZ="EAS Auto MT Letters"
- S XMSUB="Incomplete/Bad Addr: "_EASPRF
- D ^XMD
- Q
- ;
- CLRLCK ; Clears IN USE field of the EAS MT PARAMETERS if an error occurs and locks the field
- N DIE,DR,DA
- ;
- S DA=1,DIE="^EAS(713,",DR="30///0"
- D ^DIE
- Q
- ;
- PROHBIT ; Set or delete the Prohibit fields in the Patient Status file, #713.1
- N DIR,DIRUT,EASF,Y,X,EASIEN,DFN,DGFDA,FDAIEN,ERRMSG
- ;
- S DIR(0)="S^S:Set Prohibit Flag;R:Remove Prohibit Flag"
- S DIR("A")="Set or remove the MT Prohibit flag"
- S DIR("?")="Select 'S' to set flag, 'R' to remove the flag"
- D ^DIR K DIR
- Q:$D(DIRUT)
- S EASF=Y
- ;
- I EASF="R"!(EASF="r") D Q:$D(DIRUT)
- . S DIR(0)="PAO^713.1:EMZ"
- . S DIR("A")="Select Patient: "
- . D ^DIR K DIR
- . S EASIEN=+Y
- ;
- I EASF="S"!(EASF="s") D Q:$D(DIRUT)
- . S DIR(0)="PAO^2:EMZ"
- . S DIR("A")="Select Patient: "
- . D ^DIR K DIR
- . Q:$D(DIRUT)
- . S DFN=+Y
- . I '$D(^EAS(713.1,"B",DFN)) D Q:$D(DIRUT)
- . . S DIR(0)="Y",DIR("B")="YES"
- . . S DIR("A")="Add patient to the Patient Status File"
- . . D ^DIR K DIR
- . . Q:$D(DIRUT)
- . . I 'Y S DIRUT=1 Q
- . . S DGFDA(1,713.1,"+1,",.01)=DFN
- . . D UPDATE^DIE("","DGFDA(1)","FDAIEN","ERRMSG")
- . . S EASIEN=FDAIEN(1)
- . I $D(^EAS(713.1,"B",DFN)) S EASIEN=$O(^EAS(713.1,"B",DFN,0))
- ;
- Q:'$G(EASIEN)
- ;
- N DGFDA,DGIEN,DGEFF,DIR,DIRUT,DGERR,DIE
- ;
- S DGIEN=EASIEN_","
- I EASF="S" D
- . S DIR(0)="DAO^"_$$DT^XLFDT_"::EX"
- . S DIR("A")="Effective Date: "
- . D ^DIR K DIR
- . Q:$G(DIRUT)
- . S DGFDA(1,713.1,DGIEN,3)=Y
- . S DGFDA(1,713.1,DGIEN,2)=1
- . S DGFDA(1,713.1,DGIEN,5)=$$NOW^XLFDT
- . S DGFDA(1,713.1,DGIEN,4)=DUZ
- . D:$D(DGFDA) FILE^DIE("","DGFDA(1)","DGERR")
- . I $D(DGERR) D Q
- . . D DSPLYER(.DGERR)
- . S DIE="^EAS(713.1,",DA=EASIEN,DR="10"
- . D ^DIE K DIE
- ;
- I EASF="R" D
- . S DGFDA(1,713.1,DGIEN,2)=0
- . S DGFDA(1,713.1,DGIEN,3)="@"
- . S DGFDA(1,713.1,DGIEN,5)="@"
- . S DGFDA(1,713.1,DGIEN,4)="@"
- . S DGFDA(1,713.1,DGIEN,10)="@"
- . D:$D(DGFDA) FILE^DIE("","DGFDA(1)","DGERR")
- . I $D(DGERR) D
- . . D DSPLYER(.DGERR)
- . E W !!?3,"Prohibit Flag Removed from Patient.",!
- ;
- Q
- ;
- DSPLYER(ERRARY) ;
- N DGER
- ;
- W !!?3,"The following error(s) occurred:"
- S DGER=0
- F S DGER=$O(ERRARY("DIERR",DGER)) Q:'DGER D
- . W !?3,ERRARY("DIERR",DGER)," - ",ERRARY("DIERR",DGER,"TEXT",1)
- W !?3,"Please check, this record update may not have processed completely."
- Q
- ;
- EDTLTRS ;
- N DIR,EASIEN
- ;
- S DIR(0)="P^713.3:EMZ"
- S DIR("A")="Select Letter"
- D ^DIR K DIR
- Q:$D(DIRUT)
- S EASIEN=+Y
- ;
- S DIE="^EAS(713.3,",DA=EASIEN,DR="4"
- D ^DIE
- Q
- ;
- MTRTN ; Update the letter status file, #713.2, with returned Means Test information
- N DIE,DIC,EASIEN,DR,DA,Y
- ;
- S DIC="^EAS(713.2,",DIC(0)="AEQM",DIC("A")="Select the Letter Status entry to update: "
- D ^DIC K DIC
- Q:Y<0
- S EASIEN=+Y
- ;
- S DIE="^EAS(713.2,",DA=EASIEN
- S DR="4;I X=0 S Y=0;5;7;6////^S X=DUZ;9///0;12///0;18///0"
- L +^EAS(713.2,EASIEN):0 I $T D
- . D ^DIE K DIE
- E W !,$CHAR(7),"Entry is being edited by another user."
- L -^EAS(713.2,EASIEN)
- ;
- Q
- ;
- DECEASED(EASIEN,DFN) ; Check deceased status for patient
- N RSLT,EADEM,EAS1,VAROOT
- ;
- S EASIEN=$G(EASIEN)
- S DFN=$G(DFN)
- I EASIEN>0 D
- . S EAS1=$$GET1^DIQ(713.2,EASIEN,2,"I")
- . S DFN=$$GET1^DIQ(713.1,EAS1,.01,"I")
- Q:'DFN 0
- S RSLT=0
- ;
- S VAROOT="EADEM"
- D DEM^VADPT
- S:+EADEM(6) RSLT=1
- D KVA^VADPT
- Q RSLT
- ;
- CHECKMT(EASPT,EAIEN) ; Check current MT status
- N DFN,RTN,EACHK,DIE,DR,DA
- ;
- S RTN=0
- I '$G(EASPT) S RTN=1 G CHKQ ; Safety check
- S DFN=$$GET1^DIQ(713.1,EASPT,.01,"I") ; Get DFN
- I '$G(DFN) S RTN=1 G CHKQ ; Safety check
- ;
- S EACHK=$$MTCHK^EASMTCHK(DFN,"L") ; Check current MT to see if it's changed
- I 'EACHK D ; If MT no longer required, update letter status file
- . S DIE="^EAS(713.2,",DA=EAIEN
- . S DR="4///YES;5///TODAY;7///AUTO-GENERATED;9///NO;12///NO;18///NO"
- . D ^DIE K DIE ;; Remove before release
- . S RTN=1
- ;
- CHKQ Q RTN
- ;
- FUTMT(EASIEN) ; Check for a future MT
- ; Input
- ; EASIEN - IEN for record in Letter Status file
- ;
- ; Output
- ; 1 - Future MT exist's (API call)
- ; 0 - Future MT does not exist
- ;
- N EASPTR,DFN,EASFUT
- ;
- S RTN=0
- S EASPTR=$$GET1^DIQ(713.2,EASIEN,2,"I")
- S DFN=$$GET1^DIQ(713.1,EASPTR,.01,"I")
- ;
- ;; Call API for future MT check
- S EASFUT=$$FUT^DGMTU(DFN)
- ;
- I +$G(EASFUT) D ; Turn off letters if future MT present
- . Q:'EASIEN
- . S DIE="^EAS(713.2,",DA=EASIEN
- . S DR="4///YES;5///TODAY;7///FUTURE MEANS TEST;9///NO;12///NO;18///NO"
- . D ^DIE K DIE
- . S RTN=1
- Q RTN
- ;
- TESTLTR ;
- N EASIEN,EATYP,DIR,DIRUT,ZTSAVE
- ;
- S DIR(0)="SO^1:60-Day;2:30-Day;4:0-Day"
- S DIR("A")="Select letter type to test"
- S DIR("?")="Select the type of letter to print a test output of"
- D ^DIR K DIR
- Q:$D(DIRUT)
- S EATYP=+Y
- S EASIEN=-1
- S ZTSAVE("EASIEN")="",ZTSAVE("EATYP")=""
- D EN^XUTMDEVQ("ZTEST^EASMTUTL","EAS MT TEST LETTER",.ZTSAVE)
- Q
- ;
- TESTIT ;
- D LETTER^EASMTL6A(EASIEN,EATYP)
- Q
- ;
- ZTEST ;
- D LETTER^EASMTL6A(EASIEN,EATYP)
- Q
- ADDLEAP(DATE) ; Adding a year with Leap Year checking
- ; Input:
- ; DATE - Date passed in.
- ;
- ; Output:
- ; Date passed in plus one year (with leap year ck/adj).
- ;
- N YEAR
- S YEAR=$E($$FMTHL7^XLFDT(DATE),1,4)
- I $E(DATE,4,7)="0229",'$$LEAP^XLFDT3(YEAR+1) D
- .S DATE=$$FMADD^XLFDT(DATE,-1)
- Q $E(DATE,1,3)+1_$E(DATE,4,7)
- ;
- SUBLEAP(DATE) ; Subtracting a year with Leap Year checking
- ; Input:
- ; DATE - Date passed in.
- ;
- ; Output:
- ; Date passed in minus one year (with leap year ck/adj).
- ;
- N YEAR
- S YEAR=$E($$FMTHL7^XLFDT(DATE),1,4)
- I $E(DATE,4,7)="0229",'$$LEAP^XLFDT3(YEAR-1) D
- .S DATE=$$FMADD^XLFDT(DATE,-1)
- Q $E(DATE,1,3)-1_$E(DATE,4,7)
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HEASMTUTL 8153 printed Apr 23, 2025@18:10:03 Page 2
- EASMTUTL ; ALB/SCK/BRM/PHH - AUTOMATED MEANS TEST LETTERS UTILITIES ; 7/2/01
- +1 ;;1.0;ENROLLMENT APPLICATION SYSTEM;**3,14,15,29,22,54**;MAR 15,2001
- +2 ;
- +3 ;
- PAUSE ; Screen pause, user must press key to continue
- +1 SET DIR(0)="FAO"
- SET DIR("A")="Press any key to continue..."
- +2 DO ^DIR
- KILL DIR
- +3 QUIT
- +4 ;
- CLRFLG(EAX,DA) ; Clears flags in File #713.2, For development
- +1 NEW DIE,DR
- +2 ;
- +3 if EAX=1
- QUIT
- +4 if EAX=2
- SET DR="9///0"
- +5 if EAX=3
- SET DR="9///0;12///0"
- +6 if EAX=4
- SET DR="9///0;12///0"
- +7 if EAX=0
- SET DR="9///0;12///0;18///0"
- +8 SET DIE="^EAS(713.2,"
- +9 DO ^DIE
- KILL DIE
- +10 QUIT
- +11 ;
- LOCK(ACTION) ; Flag IN USE field in EAS Parameters file, #713
- +1 ; Input
- +2 ; ACTION - Locking action
- +3 ; 1 = Flag IN USE for Automated Generator is running
- +4 ; 0 = Flag IN USE for Automated Generator is not running
- +5 ; Output
- +6 ; 1 if action was successful
- +7 ; 0 if action was not successful
- +8 NEW RSLT
- +9 ;
- +10 IF ACTION
- IF $DATA(^EAS(713,"ALOCK",1))
- QUIT $GET(RSLT)
- +11 ;
- +12 SET DIE="^EAS(713,"
- SET DA=1
- SET DR="30////^S X=ACTION"
- +13 DO ^DIE
- KILL DIE
- +14 SET RSLT=1
- +15 QUIT +$GET(RSLT)
- +16 ;
- ALERT(ERRMSG) ; Post an alert message to the EAS Letters Mail group
- +1 NEW XMY,XMTEXT,XMDUZ,XMSUB,MSG
- +2 ;
- +3 SET MSG(1)="Notification:"
- +4 SET MSG(2)=ERRMSG
- +5 ;
- +6 SET XMY("G.EAS MTLETTERS")=""
- +7 SET XMTEXT="MSG("
- +8 SET XMDUZ="EAS Auto MT Letters"
- +9 SET XMSUB="EAS Means Test Letter's Notice"
- +10 DO ^XMD
- +11 QUIT
- +12 ;
- ADRERR(EASADD,DFN) ; Error notification for missing or invalid patient address
- +1 NEW MSG,XMY,XMTEXT,XMDUZ,XMSUB,VAROOT,EASDEM,VA,EASPRF
- +2 ;
- +3 SET VAROOT="EASDEM"
- +4 DO DEM^VADPT
- +5 DO PID^VADPT6
- +6 SET EASPRF=$$GET1^DIQ(2,DFN,27.02)
- +7 IF EASPRF']""
- SET EASPRF="No Preferred Facility"
- +8 ;
- +9 SET MSG(1)="The following patient does not have a complete permanent mailing"
- +10 SET MSG(2)="address. A means test reminder letter could not be mailed."
- +11 SET MSG(3)=" "
- +12 SET MSG(4)=" Patient : "_EASDEM(1)
- +13 SET MSG(5)=" Last 4 : "_VA("BID")
- +14 SET MSG(6)="Address Line 1 : "_EASADD(1)
- +15 SET MSG(7)=" City : "_EASADD(4)
- +16 SET MSG(8)=" State : "_$PIECE(EASADD(5),U,2)
- +17 SET MSG(9)=" Zipcode : "_$PIECE(EASADD(11),U,2)
- +18 SET MSG(9.5)=" Bad Addr : "_$PIECE(EASADD("BAI"),U,2)
- +19 SET MSG(10)=""
- +20 SET MSG(11)=" DFN : "_$GET(DFN)
- +21 SET MSG(13)=""
- +22 SET MSG(14)="This patient's letter entry will stay in 'FLAGGED-TO-PRINT' status until"
- +23 SET MSG(15)="the address is corrected."
- +24 ;
- +25 IF +EASADD(9)>0!(+EASADD(10)>0)
- Begin DoDot:1
- +26 SET MSG(5.5)="** Temporary Address in effect **"
- End DoDot:1
- +27 SET XMY("G.EAS MTLETTERS")=""
- +28 SET XMTEXT="MSG("
- +29 SET XMDUZ="EAS Auto MT Letters"
- +30 SET XMSUB="Incomplete/Bad Addr: "_EASPRF
- +31 DO ^XMD
- +32 QUIT
- +33 ;
- CLRLCK ; Clears IN USE field of the EAS MT PARAMETERS if an error occurs and locks the field
- +1 NEW DIE,DR,DA
- +2 ;
- +3 SET DA=1
- SET DIE="^EAS(713,"
- SET DR="30///0"
- +4 DO ^DIE
- +5 QUIT
- +6 ;
- PROHBIT ; Set or delete the Prohibit fields in the Patient Status file, #713.1
- +1 NEW DIR,DIRUT,EASF,Y,X,EASIEN,DFN,DGFDA,FDAIEN,ERRMSG
- +2 ;
- +3 SET DIR(0)="S^S:Set Prohibit Flag;R:Remove Prohibit Flag"
- +4 SET DIR("A")="Set or remove the MT Prohibit flag"
- +5 SET DIR("?")="Select 'S' to set flag, 'R' to remove the flag"
- +6 DO ^DIR
- KILL DIR
- +7 if $DATA(DIRUT)
- QUIT
- +8 SET EASF=Y
- +9 ;
- +10 IF EASF="R"!(EASF="r")
- Begin DoDot:1
- +11 SET DIR(0)="PAO^713.1:EMZ"
- +12 SET DIR("A")="Select Patient: "
- +13 DO ^DIR
- KILL DIR
- +14 SET EASIEN=+Y
- End DoDot:1
- if $DATA(DIRUT)
- QUIT
- +15 ;
- +16 IF EASF="S"!(EASF="s")
- Begin DoDot:1
- +17 SET DIR(0)="PAO^2:EMZ"
- +18 SET DIR("A")="Select Patient: "
- +19 DO ^DIR
- KILL DIR
- +20 if $DATA(DIRUT)
- QUIT
- +21 SET DFN=+Y
- +22 IF '$DATA(^EAS(713.1,"B",DFN))
- Begin DoDot:2
- +23 SET DIR(0)="Y"
- SET DIR("B")="YES"
- +24 SET DIR("A")="Add patient to the Patient Status File"
- +25 DO ^DIR
- KILL DIR
- +26 if $DATA(DIRUT)
- QUIT
- +27 IF 'Y
- SET DIRUT=1
- QUIT
- +28 SET DGFDA(1,713.1,"+1,",.01)=DFN
- +29 DO UPDATE^DIE("","DGFDA(1)","FDAIEN","ERRMSG")
- +30 SET EASIEN=FDAIEN(1)
- End DoDot:2
- if $DATA(DIRUT)
- QUIT
- +31 IF $DATA(^EAS(713.1,"B",DFN))
- SET EASIEN=$ORDER(^EAS(713.1,"B",DFN,0))
- End DoDot:1
- if $DATA(DIRUT)
- QUIT
- +32 ;
- +33 if '$GET(EASIEN)
- QUIT
- +34 ;
- +35 NEW DGFDA,DGIEN,DGEFF,DIR,DIRUT,DGERR,DIE
- +36 ;
- +37 SET DGIEN=EASIEN_","
- +38 IF EASF="S"
- Begin DoDot:1
- +39 SET DIR(0)="DAO^"_$$DT^XLFDT_"::EX"
- +40 SET DIR("A")="Effective Date: "
- +41 DO ^DIR
- KILL DIR
- +42 if $GET(DIRUT)
- QUIT
- +43 SET DGFDA(1,713.1,DGIEN,3)=Y
- +44 SET DGFDA(1,713.1,DGIEN,2)=1
- +45 SET DGFDA(1,713.1,DGIEN,5)=$$NOW^XLFDT
- +46 SET DGFDA(1,713.1,DGIEN,4)=DUZ
- +47 if $DATA(DGFDA)
- DO FILE^DIE("","DGFDA(1)","DGERR")
- +48 IF $DATA(DGERR)
- Begin DoDot:2
- +49 DO DSPLYER(.DGERR)
- End DoDot:2
- QUIT
- +50 SET DIE="^EAS(713.1,"
- SET DA=EASIEN
- SET DR="10"
- +51 DO ^DIE
- KILL DIE
- End DoDot:1
- +52 ;
- +53 IF EASF="R"
- Begin DoDot:1
- +54 SET DGFDA(1,713.1,DGIEN,2)=0
- +55 SET DGFDA(1,713.1,DGIEN,3)="@"
- +56 SET DGFDA(1,713.1,DGIEN,5)="@"
- +57 SET DGFDA(1,713.1,DGIEN,4)="@"
- +58 SET DGFDA(1,713.1,DGIEN,10)="@"
- +59 if $DATA(DGFDA)
- DO FILE^DIE("","DGFDA(1)","DGERR")
- +60 IF $DATA(DGERR)
- Begin DoDot:2
- +61 DO DSPLYER(.DGERR)
- End DoDot:2
- +62 IF '$TEST
- WRITE !!?3,"Prohibit Flag Removed from Patient.",!
- End DoDot:1
- +63 ;
- +64 QUIT
- +65 ;
- DSPLYER(ERRARY) ;
- +1 NEW DGER
- +2 ;
- +3 WRITE !!?3,"The following error(s) occurred:"
- +4 SET DGER=0
- +5 FOR
- SET DGER=$ORDER(ERRARY("DIERR",DGER))
- if 'DGER
- QUIT
- Begin DoDot:1
- +6 WRITE !?3,ERRARY("DIERR",DGER)," - ",ERRARY("DIERR",DGER,"TEXT",1)
- End DoDot:1
- +7 WRITE !?3,"Please check, this record update may not have processed completely."
- +8 QUIT
- +9 ;
- EDTLTRS ;
- +1 NEW DIR,EASIEN
- +2 ;
- +3 SET DIR(0)="P^713.3:EMZ"
- +4 SET DIR("A")="Select Letter"
- +5 DO ^DIR
- KILL DIR
- +6 if $DATA(DIRUT)
- QUIT
- +7 SET EASIEN=+Y
- +8 ;
- +9 SET DIE="^EAS(713.3,"
- SET DA=EASIEN
- SET DR="4"
- +10 DO ^DIE
- +11 QUIT
- +12 ;
- MTRTN ; Update the letter status file, #713.2, with returned Means Test information
- +1 NEW DIE,DIC,EASIEN,DR,DA,Y
- +2 ;
- +3 SET DIC="^EAS(713.2,"
- SET DIC(0)="AEQM"
- SET DIC("A")="Select the Letter Status entry to update: "
- +4 DO ^DIC
- KILL DIC
- +5 if Y<0
- QUIT
- +6 SET EASIEN=+Y
- +7 ;
- +8 SET DIE="^EAS(713.2,"
- SET DA=EASIEN
- +9 SET DR="4;I X=0 S Y=0;5;7;6////^S X=DUZ;9///0;12///0;18///0"
- +10 LOCK +^EAS(713.2,EASIEN):0
- IF $TEST
- Begin DoDot:1
- +11 DO ^DIE
- KILL DIE
- End DoDot:1
- +12 IF '$TEST
- WRITE !,$CHAR(7),"Entry is being edited by another user."
- +13 LOCK -^EAS(713.2,EASIEN)
- +14 ;
- +15 QUIT
- +16 ;
- DECEASED(EASIEN,DFN) ; Check deceased status for patient
- +1 NEW RSLT,EADEM,EAS1,VAROOT
- +2 ;
- +3 SET EASIEN=$GET(EASIEN)
- +4 SET DFN=$GET(DFN)
- +5 IF EASIEN>0
- Begin DoDot:1
- +6 SET EAS1=$$GET1^DIQ(713.2,EASIEN,2,"I")
- +7 SET DFN=$$GET1^DIQ(713.1,EAS1,.01,"I")
- End DoDot:1
- +8 if 'DFN
- QUIT 0
- +9 SET RSLT=0
- +10 ;
- +11 SET VAROOT="EADEM"
- +12 DO DEM^VADPT
- +13 if +EADEM(6)
- SET RSLT=1
- +14 DO KVA^VADPT
- +15 QUIT RSLT
- +16 ;
- CHECKMT(EASPT,EAIEN) ; Check current MT status
- +1 NEW DFN,RTN,EACHK,DIE,DR,DA
- +2 ;
- +3 SET RTN=0
- +4 ; Safety check
- IF '$GET(EASPT)
- SET RTN=1
- GOTO CHKQ
- +5 ; Get DFN
- SET DFN=$$GET1^DIQ(713.1,EASPT,.01,"I")
- +6 ; Safety check
- IF '$GET(DFN)
- SET RTN=1
- GOTO CHKQ
- +7 ;
- +8 ; Check current MT to see if it's changed
- SET EACHK=$$MTCHK^EASMTCHK(DFN,"L")
- +9 ; If MT no longer required, update letter status file
- IF 'EACHK
- Begin DoDot:1
- +10 SET DIE="^EAS(713.2,"
- SET DA=EAIEN
- +11 SET DR="4///YES;5///TODAY;7///AUTO-GENERATED;9///NO;12///NO;18///NO"
- +12 ;; Remove before release
- DO ^DIE
- KILL DIE
- +13 SET RTN=1
- End DoDot:1
- +14 ;
- CHKQ QUIT RTN
- +1 ;
- FUTMT(EASIEN) ; Check for a future MT
- +1 ; Input
- +2 ; EASIEN - IEN for record in Letter Status file
- +3 ;
- +4 ; Output
- +5 ; 1 - Future MT exist's (API call)
- +6 ; 0 - Future MT does not exist
- +7 ;
- +8 NEW EASPTR,DFN,EASFUT
- +9 ;
- +10 SET RTN=0
- +11 SET EASPTR=$$GET1^DIQ(713.2,EASIEN,2,"I")
- +12 SET DFN=$$GET1^DIQ(713.1,EASPTR,.01,"I")
- +13 ;
- +14 ;; Call API for future MT check
- +15 SET EASFUT=$$FUT^DGMTU(DFN)
- +16 ;
- +17 ; Turn off letters if future MT present
- IF +$GET(EASFUT)
- Begin DoDot:1
- +18 if 'EASIEN
- QUIT
- +19 SET DIE="^EAS(713.2,"
- SET DA=EASIEN
- +20 SET DR="4///YES;5///TODAY;7///FUTURE MEANS TEST;9///NO;12///NO;18///NO"
- +21 DO ^DIE
- KILL DIE
- +22 SET RTN=1
- End DoDot:1
- +23 QUIT RTN
- +24 ;
- TESTLTR ;
- +1 NEW EASIEN,EATYP,DIR,DIRUT,ZTSAVE
- +2 ;
- +3 SET DIR(0)="SO^1:60-Day;2:30-Day;4:0-Day"
- +4 SET DIR("A")="Select letter type to test"
- +5 SET DIR("?")="Select the type of letter to print a test output of"
- +6 DO ^DIR
- KILL DIR
- +7 if $DATA(DIRUT)
- QUIT
- +8 SET EATYP=+Y
- +9 SET EASIEN=-1
- +10 SET ZTSAVE("EASIEN")=""
- SET ZTSAVE("EATYP")=""
- +11 DO EN^XUTMDEVQ("ZTEST^EASMTUTL","EAS MT TEST LETTER",.ZTSAVE)
- +12 QUIT
- +13 ;
- TESTIT ;
- +1 DO LETTER^EASMTL6A(EASIEN,EATYP)
- +2 QUIT
- +3 ;
- ZTEST ;
- +1 DO LETTER^EASMTL6A(EASIEN,EATYP)
- +2 QUIT
- ADDLEAP(DATE) ; Adding a year with Leap Year checking
- +1 ; Input:
- +2 ; DATE - Date passed in.
- +3 ;
- +4 ; Output:
- +5 ; Date passed in plus one year (with leap year ck/adj).
- +6 ;
- +7 NEW YEAR
- +8 SET YEAR=$EXTRACT($$FMTHL7^XLFDT(DATE),1,4)
- +9 IF $EXTRACT(DATE,4,7)="0229"
- IF '$$LEAP^XLFDT3(YEAR+1)
- Begin DoDot:1
- +10 SET DATE=$$FMADD^XLFDT(DATE,-1)
- End DoDot:1
- +11 QUIT $EXTRACT(DATE,1,3)+1_$EXTRACT(DATE,4,7)
- +12 ;
- SUBLEAP(DATE) ; Subtracting a year with Leap Year checking
- +1 ; Input:
- +2 ; DATE - Date passed in.
- +3 ;
- +4 ; Output:
- +5 ; Date passed in minus one year (with leap year ck/adj).
- +6 ;
- +7 NEW YEAR
- +8 SET YEAR=$EXTRACT($$FMTHL7^XLFDT(DATE),1,4)
- +9 IF $EXTRACT(DATE,4,7)="0229"
- IF '$$LEAP^XLFDT3(YEAR-1)
- Begin DoDot:1
- +10 SET DATE=$$FMADD^XLFDT(DATE,-1)
- End DoDot:1
- +11 QUIT $EXTRACT(DATE,1,3)-1_$EXTRACT(DATE,4,7)