| 1 | C0QUTIL ;JJOH/ZAG/GPL - Utilities for C0Q Package ;9/2/11 4:30pm
 | 
|---|
| 2 |         ;;1.0;MU PACKAGE;;;Build 26
 | 
|---|
| 3 |         ;
 | 
|---|
| 4 |         ;2011 Licensed under the terms of the GNU General Public License
 | 
|---|
| 5 |         ;See attached copy of the License.
 | 
|---|
| 6 |         ;
 | 
|---|
| 7 |         ;This program is free software; you can redistribute it and/or modify
 | 
|---|
| 8 |         ;it under the terms of the GNU General Public License as published by
 | 
|---|
| 9 |         ;the Free Software Foundation; either version 2 of the License, or
 | 
|---|
| 10 |         ;(at your option) any later version.
 | 
|---|
| 11 |         ;
 | 
|---|
| 12 |         ;This program is distributed in the hope that it will be useful,
 | 
|---|
| 13 |         ;but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|---|
| 14 |         ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|---|
| 15 |         ;GNU General Public License for more details.
 | 
|---|
| 16 |         ;
 | 
|---|
| 17 |         ;You should have received a copy of the GNU General Public License along
 | 
|---|
| 18 |         ;with this program; if not, write to the Free Software Foundation, Inc.,
 | 
|---|
| 19 |         ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
|---|
| 20 |         ;
 | 
|---|
| 21 | AGE(DFN)        ; return current age in years and months
 | 
|---|
| 22 |         ;
 | 
|---|
| 23 |         Q:'$G(DFN)  ;quit if no there is no patient
 | 
|---|
| 24 |         N DOB S DOB=$P(^DPT(+DFN,0),U,3) ;date of birth
 | 
|---|
| 25 |         N YRS
 | 
|---|
| 26 |         N DOD S DOD=+$G(^DPT(9,.35)) ;check for date of death
 | 
|---|
| 27 |         I 'DOD D
 | 
|---|
| 28 |         . N CDTE S CDTE=DT ;current date
 | 
|---|
| 29 |         . S YRS=$E(CDTE,1,3)-$E(DOB,1,3)-($E(CDTE,4,7)<$E(DOB,4,7))
 | 
|---|
| 30 |         E  D
 | 
|---|
| 31 |         . S YRS=$E(DOD,1,3)-$E(DOB,1,3)-($E(DOD,4,7)<$E(DOB,4,7))
 | 
|---|
| 32 |         ;
 | 
|---|
| 33 |         ;Come back here and fix MONTHS and DAYS
 | 
|---|
| 34 |         ;N CM S CM=+$E(DT,4,5) ;current month
 | 
|---|
| 35 |         ;N CD S CD=+$E(DT,6,7) ;current day
 | 
|---|
| 36 |         ;N BM S BM=+$E(DOB,4,5) ;birth month
 | 
|---|
| 37 |         ;N BD S BD=+$E(DOB,6,7) ;birth day
 | 
|---|
| 38 |         ;
 | 
|---|
| 39 |         ;N DAYS S DAYS=""
 | 
|---|
| 40 |         ;
 | 
|---|
| 41 |         Q YRS ;_"y" gpl ..just want the number
 | 
|---|
| 42 |         ;
 | 
|---|
| 43 |         ;
 | 
|---|
| 44 | DTDIFF(ZD1,ZT1,ZD2,ZT2,SHOW)    ; extrinsic which returns the number of minutes
 | 
|---|
| 45 |         ; between 2 dates. ZD1 and ZD2 are fileman dates
 | 
|---|
| 46 |         ; ZT1 AND ZT2 are valid times (military time) ie 20:10
 | 
|---|
| 47 |         ; IF SHOW=1 DEBUGGING INTERMEDIATE VALUES WILL BE DISPLAYED
 | 
|---|
| 48 |         I '$D(SHOW) S SHOW=0
 | 
|---|
| 49 |         N GT1,GT2,GDT1,GDT2
 | 
|---|
| 50 |         I ZT1[":" D  ;
 | 
|---|
| 51 |         . S GT1=($P(ZT1,":",1)*3600)+($P(ZT1,":",2)*60) ; SECONDS
 | 
|---|
| 52 |         . S GT2=($P(ZT2,":",1)*3600)+($P(ZT2,":",2)*60) ; SECONDS
 | 
|---|
| 53 |         E  D  ;
 | 
|---|
| 54 |         . S GT1=($E(ZT1,1,2)*3600)+($E(ZT1,3,4)*60)
 | 
|---|
| 55 |         . S GT2=($E(ZT2,1,2)*3600)+($E(ZT2,3,4)*60)
 | 
|---|
| 56 |         ;W:SHOW !,"SECONDS: ",GT1," ",GT2
 | 
|---|
| 57 |         ;S %=GT1 D S^%DTC ; FILEMAN TIME
 | 
|---|
| 58 |         ;S GDT1=ZD1_% ; FILEMAN DATE AND TIME
 | 
|---|
| 59 |         ;S %=GT2 D S^%DTC ; FILEMAN TIME
 | 
|---|
| 60 |         ;S GDT2=ZD2_% ; FILEMAN DATE AND TIME
 | 
|---|
| 61 |         S GDT1=ZD1_"."_ZT1
 | 
|---|
| 62 |         S GDT2=ZD2_"."_ZT2
 | 
|---|
| 63 |         W:SHOW !,"FILEMAN: ",GDT1," ",GDT2
 | 
|---|
| 64 |         N ZH1,ZH2
 | 
|---|
| 65 |         S ZH1=$$FMTH^XLFDT(GDT1) ; $H FORMAT 
 | 
|---|
| 66 |         S ZH2=$$FMTH^XLFDT(GDT2) ; $H FORMAT 
 | 
|---|
| 67 |         W:SHOW !,"$H: ",ZH1," ",ZH2
 | 
|---|
| 68 |         N ZSECS,ZMIN
 | 
|---|
| 69 |         S ZSECS=$$HDIFF^XLFDT(ZH1,ZH2,2) ; DIFFERENCE IN $H
 | 
|---|
| 70 |         W:SHOW !,"DIFF: ",ZSECS
 | 
|---|
| 71 |         S ZMIN=ZSECS/60 ; DIFFERENCE IN MINUTES
 | 
|---|
| 72 |         W:SHOW !,"MIN: ",ZMIN
 | 
|---|
| 73 |         Q ZMIN
 | 
|---|
| 74 |         ;
 | 
|---|
| 75 | END     ;end of C0QUTIL
 | 
|---|