| 1 | QAMTIME0 ;HISC/DAD-CALCULATE TIME FRAME START-END FROM A DATE ;2/10/92  07:33
 | 
|---|
| 2 |  ;;1.0;Clinical Monitoring System;;09/13/1993
 | 
|---|
| 3 |  ; REQUIRES
 | 
|---|
| 4 |  ;  QAMD0 = MONITOR IEN     QAMTODAY = DATE OF AUTO ENROLL RUN
 | 
|---|
| 5 |  ; RETURNS
 | 
|---|
| 6 |  ;  QAMSTART & QAMEND = START & END DATES OF THE TIME FRAME
 | 
|---|
| 7 | EN ;
 | 
|---|
| 8 |  S (QAMSTART,QAMEND)=0,QA=$S($D(^QA(743,QAMD0,1))#2:$P(^(1),"^"),1:"") Q:QA'>0  S QAMPRG=$S($D(^QA(743.92,QA,1))#2:^(1),1:"") X:QAMPRG]"" QAMPRG
 | 
|---|
| 9 |  K %Y,LEAPYEAR,QA,QAM,QAMDAYS,QAMONTH1,QAMONTH2,QAMONTHS,QAMPRG,QAMWEEK,X,X1,X2,Y
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 | EN1 ; *** DAILY
 | 
|---|
| 12 |  S (QAMSTART,QAMEND)=QAMTODAY
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 | EN2 ; *** WEEKLY
 | 
|---|
| 15 |  S QAMWEEK=$S($D(^QA(740,1,"QAM"))#2:+^("QAM"),1:0)
 | 
|---|
| 16 |  S X=QAMTODAY D H^%DTC S X1=QAMTODAY,X2=%Y-QAMWEEK S:X2>0 X2=-X2 D C^%DTC S (QAMSTART,X1)=X,X2=6 D C^%DTC S QAMEND=X
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 | EN3 ; *** MONTHLY
 | 
|---|
| 19 |  S (QAMONTH1,QAMONTH2)=$E(QAMTODAY,4,5) D DAYS S QAMSTART=$E(QAMTODAY,1,5)_"01",QAMEND=$E(QAMTODAY,1,5)_QAMDAYS
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 | EN4 ; *** QUARTERLY
 | 
|---|
| 22 |  S QAM=$E(QAMTODAY,4,5),QA=$E(QAMTODAY,1,3)
 | 
|---|
| 23 |  I QAM'>3 S QAMSTART=QA_"0101",QAMEND=QA_"0331" Q
 | 
|---|
| 24 |  I QAM'>6 S QAMSTART=QA_"0401",QAMEND=QA_"0630" Q
 | 
|---|
| 25 |  I QAM'>9 S QAMSTART=QA_"0701",QAMEND=QA_"0930" Q
 | 
|---|
| 26 |  S QAMSTART=QA_"1001",QAMEND=QA_"1231"
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 | EN5 ; *** SEMI-ANNUALLY
 | 
|---|
| 29 |  S QAM=$E(QAMTODAY,4,5),QA=$E(QAMTODAY,1,3)
 | 
|---|
| 30 |  I QAM'>6 S QAMSTART=QA_"0101",QAMEND=QA_"0630"
 | 
|---|
| 31 |  E  S QAMSTART=QA_"0701",QAMEND=QA_"1231"
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 | EN6 ; *** ANNUALLY
 | 
|---|
| 34 |  S QAMSTART=$E(QAMTODAY,1,3)_"0101",QAMEND=$E(QAMTODAY,1,3)_"1231"
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 | EN7 ; *** FISCAL YEARLY
 | 
|---|
| 37 |  S QAM=$E(QAMTODAY,4,5),QA=$E(QAMTODAY,1,3)
 | 
|---|
| 38 |  I QAM'<10 S QAMSTART=QA_"1001",QAMEND=(QA+1)_"0930"
 | 
|---|
| 39 |  E  S QAMSTART=(QA-1)_"1001",QAMEND=QA_"0930"
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 | EN8 ; *** FISCAL SEMI-ANNUALLY
 | 
|---|
| 42 |  S QAM=$E(QAMTODAY,4,5),QA=$E(QAMTODAY,1,3)
 | 
|---|
| 43 |  I QAM'<10 S QAMSTART=QA_"1001",QAMEND=(QA+1)_"0331" Q
 | 
|---|
| 44 |  I QAM'>3 S QAMSTART=(QA-1)_"1001",QAMEND=QA_"0331" Q
 | 
|---|
| 45 |  I QAM'<4 S QAMSTART=(QA-1)_"0401",QAMEND=QA_"0930"
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 | DAYS ; *** DAYS IN MONTH(S)
 | 
|---|
| 48 |  S QAMONTHS="31^28^31^30^31^30^31^31^30^31^30^31",QAMDAYS=0,Y=1700+$E(QAMTODAY,1,3),LEAPYEAR=(Y#4=0)&((Y#100)!(Y#400=0))
 | 
|---|
| 49 |  F QAM=QAMONTH1:1:QAMONTH2 S QAMDAYS=QAMDAYS+$P(QAMONTHS,"^",QAM)+$S(QAM=2:LEAPYEAR,1:0)
 | 
|---|
| 50 |  K LEAPYEAR,QAM,QAMONTH1,QAMONTH2,QAMONTHS,Y
 | 
|---|
| 51 |  Q
 | 
|---|