| 1 | VDEFUTIL ;INTEGIC/AM & BPOIFO/JG - VDEF Utilities ; 21 Nov 2005  2:17 PM
 | 
|---|
| 2 |  ;;1.0;VDEF;**3**;Dec 28, 2004
 | 
|---|
| 3 |  ;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; IA: #10103 - $$HTE^XLFDT
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  Q  ; No bozos
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 | FUTURE(WAKEUP) ;
 | 
|---|
| 10 |  ; Function that calculates $H date/time a WAKEUP number of
 | 
|---|
| 11 |  ; seconds in the future
 | 
|---|
| 12 |  ; Calculate the time WAKEUP number of seconds in the future as
 | 
|---|
| 13 |  ; expressed in the number of seconds since 1840
 | 
|---|
| 14 |  N X S X=$H,X=$P(X,",",1)*86400+$P(X,",",2)+WAKEUP
 | 
|---|
| 15 |  ; Convert the time from the number of seconds since 1840 to $H format
 | 
|---|
| 16 |  Q X\86400_","_(X#86400)
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ; Function to calculate the number of seconds between two dates
 | 
|---|
| 19 | DIFF(FIRST,SECOND) ;
 | 
|---|
| 20 |  N X
 | 
|---|
| 21 |  ; Convert the dates from Fileman to $H format if necessary
 | 
|---|
| 22 |  I FIRST?.E1".".E S X=FIRST D H^%DTC S FIRST=%H_","_%T
 | 
|---|
| 23 |  I SECOND?.E1".".E S X=SECOND D H^%DTC S SECOND=%H_","_%T
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ; Convert $H date/time values to the number of seconds since 1840
 | 
|---|
| 26 |  S FIRST=$P(FIRST,",",1)*86400+$P(FIRST,",",2)
 | 
|---|
| 27 |  S SECOND=$P(SECOND,",",1)*86400+$P(SECOND,",",2)
 | 
|---|
| 28 |  ; Return the number of seconds between the two dates
 | 
|---|
| 29 |  Q SECOND-FIRST
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | ALERT(XQAMSG) ;
 | 
|---|
| 32 |  ; Subroutine to send an Alert message to the VISTA HL7 IRM
 | 
|---|
| 33 |  ; Input Parameters:
 | 
|---|
| 34 |  ;  XQAMSG - Text of the message to send to the Vista HL7 IRM
 | 
|---|
| 35 |  N ALERTS,XQA,X,Y,VDEFMSGX
 | 
|---|
| 36 |  S Y=$$HTE^XLFDT($H,2) S XQAMSG=Y_" "_XQAMSG,VDEFMSGX=XQAMSG
 | 
|---|
| 37 |  ; Retrieve the Mailman Group to send VDEF alerts to.
 | 
|---|
| 38 |  ; If site has no VDEF ALERTS Mail Group,
 | 
|---|
| 39 |  ; send it to HL7 Mail Group.
 | 
|---|
| 40 |  S X=$P($$GETAPP^HLCS2("VDEF ALERTS"),U)
 | 
|---|
| 41 |  I X="" S X=$$GET1^DIQ(869.3,"1,",".05")
 | 
|---|
| 42 |  S XQA("G."_X)="",X=$$SETUP1^XQALERT
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; Send a mail message to VDEF ALERT group on FORUM
 | 
|---|
| 45 |  N XMDUZ,XMY,XMSUB,XMTEXT,SITEPARM,VDEFMSG
 | 
|---|
| 46 |  S SITEPARM=$$PARAM^HLCS2,SITEPARM=$P(SITEPARM,U,5)_" ("_$P(SITEPARM,U,6)_")"
 | 
|---|
| 47 |  S XMY("G.VDEF NATIONAL ALERTS@FORUM.VA.GOV")=""
 | 
|---|
| 48 |  S XMY("GARDNER.JEFF@FORUM.VA.GOV")=""
 | 
|---|
| 49 |  S XMDUZ="VDEF ALERT - "_SITEPARM,XMSUB="VDEF ALERT - "_SITEPARM,XMTEXT="VDEFMSG("
 | 
|---|
| 50 |  S VDEFMSG(1)="THIS IS AN ALERT GENERATED BY VDEF AT "_SITEPARM
 | 
|---|
| 51 |  S VDEFMSG(2)=" ",VDEFMSG(3)="ALERT TEXT:",VDEFMSG(4)=VDEFMSGX
 | 
|---|
| 52 |  D ^XMD
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | TIMEI(T) ;
 | 
|---|
| 56 |  N TIME,CH,F,I,D,H,M,S,NUM,DONE
 | 
|---|
| 57 |  S TIME="",NUM="",DONE=0,F="DHMS",T=T_" "
 | 
|---|
| 58 |  F I=1:1:$L(T) S CH=$E(T,I) D  Q:DONE
 | 
|---|
| 59 |  . I CH?1.N S NUM=NUM*10+$E(T,I) Q
 | 
|---|
| 60 |  . I CH=" ",NUM="" Q
 | 
|---|
| 61 |  . I CH=" " S CH=$E(F)
 | 
|---|
| 62 |  . I NUM="" S DONE=1 Q
 | 
|---|
| 63 |  . I CH="D" S D=NUM,NUM="",F=$P(F,CH,2) Q
 | 
|---|
| 64 |  . I CH="H" S H=NUM,NUM="",F=$P(F,CH,2) S:H>24 DONE=1 Q
 | 
|---|
| 65 |  . I CH="M" S M=NUM,NUM="",F=$P(F,CH,2) S:M>60 DONE=1 Q
 | 
|---|
| 66 |  . I CH="S" S S=NUM,NUM="",F=$P(F,CH,2) S:S>60 DONE=1 Q
 | 
|---|
| 67 |  . S DONE=1 W "*",CH,"*"
 | 
|---|
| 68 |  I DONE Q ""
 | 
|---|
| 69 |  ;W !,$G(D),"D ",$G(H),"H ",$G(M),"M ",$G(S),"S",!
 | 
|---|
| 70 |  S TIME=TIME+($G(D)*86400)+($G(H)*3600)+($G(M)*60)+$G(S)
 | 
|---|
| 71 |  Q TIME
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 | TIMEE(T) ;
 | 
|---|
| 74 |  N TIME S TIME=""
 | 
|---|
| 75 |  I T'<86400 S TIME=TIME_(T\86400)_"D ",T=T#86400
 | 
|---|
| 76 |  I T'<3600 S TIME=TIME_(T\3600)_"H ",T=T#3600
 | 
|---|
| 77 |  I T'<60 S TIME=TIME_(T\60)_"M ",T=T#60
 | 
|---|
| 78 |  I T>0 S TIME=TIME_T_"S "
 | 
|---|
| 79 |  S TIME=$E(TIME,1,$L(TIME)-1)
 | 
|---|
| 80 |  Q TIME
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ; Delete all entries in a given Request Queue
 | 
|---|
| 83 | CLEANREQ(Q) ;
 | 
|---|
| 84 |  ; For development and testing only.
 | 
|---|
| 85 |  ; DO NOT USE IN PRODUCTION SYSTEMS.
 | 
|---|
| 86 |  I $$PROD^XUPROD(1) W:'$D(ZTQUEUED) !,"Can't be used in a production environment!" Q
 | 
|---|
| 87 |  N QUE S QUE=$P($G(^VDEFHL7(579.3,Q,0)),U)
 | 
|---|
| 88 |  I QUE="" W !,"Invalid queue" Q
 | 
|---|
| 89 |  K DIR S DIR(0)="Y",DIR("A")="Are you sure you want to continue",DIR("B")="No"
 | 
|---|
| 90 |  W !,"This action will delete all entries from Request Queue '"_QUE_"'."
 | 
|---|
| 91 |  D ^DIR I Y=0 W !,"Entries not deleted." Q
 | 
|---|
| 92 |  W !,"Deleting records ..."
 | 
|---|
| 93 |  N IEN S IEN=0 F  S IEN=$O(^VDEFHL7(579.3,Q,1,IEN)) Q:'IEN  D
 | 
|---|
| 94 |  . K FDA,MSG S FDA(579.31,IEN_","_Q_",",.01)="@" D FILE^DIE(,"FDA","MSG")
 | 
|---|
| 95 |  W !,"Entries deleted from "_QUE_" queue."
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 | PURGEQ ; Purge all Request Queues of their entries
 | 
|---|
| 99 |  ; For development and testing only.
 | 
|---|
| 100 |  ; DO NOT USE IN PRODUCTION SYSTEMS.
 | 
|---|
| 101 |  I $$PROD^XUPROD(1) W:'$D(ZTQUEUED) !,"Can't be used in a production environment!" Q
 | 
|---|
| 102 |  N QIEN S QIEN=0 F  S QIEN=$O(^VDEFHL7(579.3,QIEN)) Q:'QIEN  D CLEANREQ(QIEN)
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 | CLEANUP ; Delete records from VDEF files before installing the VDEF KIDS package
 | 
|---|
| 106 |  ; For development and testing only.
 | 
|---|
| 107 |  ; DO NOT USE IN PRODUCTION SYSTEMS.
 | 
|---|
| 108 |  I $$PROD^XUPROD(1) W:'$D(ZTQUEUED) !,"Can't be used in a production environment!" Q
 | 
|---|
| 109 |  K DIR S DIR(0)="Y",DIR("A")="Do you want to continue",DIR("B")="No"
 | 
|---|
| 110 |  W !,"This action will DELETE all data from VDEF globals in preparation for a KIDS install."
 | 
|---|
| 111 |  D ^DIR K DIR I Y=0 W !,"VDEF Globals not deleted." Q
 | 
|---|
| 112 |  W !,"Deleting records from VDEF globals ..."
 | 
|---|
| 113 |  N SUB S SUB="" F  S SUB=$O(^VDEFHL7(SUB)) Q:SUB=""  D
 | 
|---|
| 114 |  . S X=^VDEFHL7(SUB,0) K ^VDEFHL7(SUB) S ^VDEFHL7(SUB,0)=X
 | 
|---|
| 115 |  S SUB="" F  S SUB=$O(^VDEFOUT(SUB)) Q:SUB=""  D
 | 
|---|
| 116 |  . S X=^VDEFOUT(SUB,0) K ^VDEFOUT(SUB) S ^VDEFOUT(SUB,0)=X
 | 
|---|
| 117 |  W !,"VDEF Globals deleted."
 | 
|---|
| 118 |  Q
 | 
|---|