| 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 | 
|---|