| 1 | WVRPCPT ;HIOFO/FT-WV PATIENT file (790) RPCs ;6/18/04  13:21
 | 
|---|
| 2 |  ;;1.0;WOMEN'S HEALTH;**16**;Sep 30, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine uses the following IAs:
 | 
|---|
| 5 |  ; #10103 - ^XLFDT calls           (supported)
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | BRTX(DFN,BRTX,BRDD,CRTX,CRDD,WVPDATE) ; Update the patient's treatment needs and
 | 
|---|
| 8 |  ; due dates in WV PATIENT file (790)
 | 
|---|
| 9 |  ;  Input:  DFN - patient DFN [required]
 | 
|---|
| 10 |  ;         BRTX - breast treatment need IEN (790.51) [optional]
 | 
|---|
| 11 |  ;         BRDD - breast treatment need offset (e.g., 1Y) [optional]
 | 
|---|
| 12 |  ;         CRTX - cervical treament need IEN (790.5) [optional]
 | 
|---|
| 13 |  ;         CRDD - cervical treatment need offset (e.g., 90D) [optional]
 | 
|---|
| 14 |  ;      WVPDATE - date procedure was performed [optional]
 | 
|---|
| 15 |  ;                default is today
 | 
|---|
| 16 |  ; Output: <none>
 | 
|---|
| 17 |  Q:'DFN
 | 
|---|
| 18 |  Q:'$D(^WV(790,DFN,0))
 | 
|---|
| 19 |  S:'$D(BRTX) BRTX=""
 | 
|---|
| 20 |  S:'$D(BRDD) BRDD=""
 | 
|---|
| 21 |  S:'$D(CRTX) CRTX=""
 | 
|---|
| 22 |  S:'$D(CRDD) CRDD=""
 | 
|---|
| 23 |  S:'$G(WVPDATE) WVPDATE=DT
 | 
|---|
| 24 |  N WVDATE,WVFDA
 | 
|---|
| 25 |  S:BRTX]"" WVFDA(790,DFN_",",.18)=BRTX
 | 
|---|
| 26 |  I BRDD]"" D
 | 
|---|
| 27 |  .S WVDATE=$$FMADD(BRDD,WVPDATE)
 | 
|---|
| 28 |  .S:WVDATE>0 WVFDA(790,DFN_",",.19)=WVDATE
 | 
|---|
| 29 |  .Q
 | 
|---|
| 30 |  S:CRTX]"" WVFDA(790,DFN_",",.11)=CRTX
 | 
|---|
| 31 |  I CRDD]"" D
 | 
|---|
| 32 |  .S WVDATE=$$FMADD(CRDD,WVPDATE)
 | 
|---|
| 33 |  .S:WVDATE>0 WVFDA(790,DFN_",",.12)=WVDATE
 | 
|---|
| 34 |  .Q
 | 
|---|
| 35 |  I $D(WVFDA) D FILE^DIE("","WVFDA","WVERR")
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 | FMADD(WVDAYS,WVPDT) ; This function adds the date offset indicated to the
 | 
|---|
| 39 |  ; specified date to calculate a future date.
 | 
|---|
| 40 |  ;  Input: WVDAYS - date offset (e.g., 90D, 6M, 1Y)  [required]
 | 
|---|
| 41 |  ;         WVPDT  - date of procedure [optional]
 | 
|---|
| 42 |  ;                  default is today
 | 
|---|
| 43 |  ; Output: FileMan date. Returns null if a FileMan date could not
 | 
|---|
| 44 |  ;         be calculated.
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  Q:'WVDAYS ""
 | 
|---|
| 47 |  S:'$G(WVPDT) WVPDT=DT
 | 
|---|
| 48 |  N WVARRAY,WVERR,WVLOOP,WVMONTH,WVNEWDT,WVYEAR,X
 | 
|---|
| 49 |  S WVNEWDT=""
 | 
|---|
| 50 |  S X=WVDAYS
 | 
|---|
| 51 |  D DMYCHECK^WVPURP ;check offset value
 | 
|---|
| 52 |  S WVDAYS=X
 | 
|---|
| 53 |  I X=-1 Q WVNEWDT
 | 
|---|
| 54 |  I WVDAYS["D" D
 | 
|---|
| 55 |  .S WVARRAY=$$FMADD^XLFDT(WVPDT,+WVDAYS)
 | 
|---|
| 56 |  .S:WVARRAY>0 WVNEWDT=WVARRAY
 | 
|---|
| 57 |  .Q
 | 
|---|
| 58 |  I WVDAYS["M" D
 | 
|---|
| 59 |  .S WVMONTH=+$E(WVPDT,4,5),WVYEAR=0
 | 
|---|
| 60 |  .F WVLOOP=1:1:+WVDAYS D
 | 
|---|
| 61 |  ..S WVMONTH=WVMONTH+1
 | 
|---|
| 62 |  ..I WVMONTH>12 S WVMONTH=1,WVYEAR=WVYEAR+1
 | 
|---|
| 63 |  ..Q
 | 
|---|
| 64 |  .S WVNEWDT=WVPDT+(+WVYEAR*10000)
 | 
|---|
| 65 |  .S WVMONTH=$S(WVMONTH<10:"0"_WVMONTH,1:WVMONTH)
 | 
|---|
| 66 |  .S WVNEWDT=$E(WVNEWDT,1,3)_WVMONTH_$E(WVNEWDT,6,7)
 | 
|---|
| 67 |  .Q
 | 
|---|
| 68 |  I WVDAYS["Y" S WVNEWDT=WVPDT+(+WVDAYS*10000)
 | 
|---|
| 69 |  Q WVNEWDT
 | 
|---|
| 70 |  ;
 | 
|---|