| 1 | ABSVMVV1 ;OAKLANDFO/DPC-VSS MIGRATION;7/9/2002
 | 
|---|
| 2 |  ;;4.0;VOLUNTARY TIMEKEEPING;**31,33**;Jul 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | VALVOL(FLAG,VALRES,START,END) ;Beginning of validation of volunteer data
 | 
|---|
| 6 |  ;FLAG=S Send mode; so, build sort template array in XTMP.
 | 
|---|
| 7 |  N VOLIEN
 | 
|---|
| 8 |  N VOLCNT
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  K ^TMP("ABSVM",$J)
 | 
|---|
| 11 |  S VALRES("ERRCNT")=0
 | 
|---|
| 12 |  S VALRES("DA")=$$CRERRLOG^ABSVMUT1("V",$G(FLAG))
 | 
|---|
| 13 |  I VALRES("DA")=0 W !,"There was an error creating VALIDATION RESULTS entry for Volunteers." Q
 | 
|---|
| 14 |  S VOLIEN=$G(START,0),END=$G(END,999999999999999),VOLCNT=0
 | 
|---|
| 15 |  F  S VOLIEN=$O(^ABS(503330,VOLIEN)) Q:VOLIEN=""!(VOLIEN>END)  D
 | 
|---|
| 16 |  . S VOLCNT=VOLCNT+1
 | 
|---|
| 17 |  . D VOLVAL($G(FLAG),VOLIEN)
 | 
|---|
| 18 |  . Q
 | 
|---|
| 19 |  D ERRCNT^ABSVMUT1(.VALRES)
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | VOLVAL(FLAG,VOLIEN) ;
 | 
|---|
| 23 |  N VOL0,VOLIDEN,ERRS,VOL3
 | 
|---|
| 24 |  N VOLNAME,SSN,AD1,CITY,DOB,LANG,SEX,STPTR,ZIP
 | 
|---|
| 25 |  ;Check if Volunteer had hours. If not, don't process.
 | 
|---|
| 26 |  ;Need to add exception for brand new volunteers (entry < 3 mos.)
 | 
|---|
| 27 |  I '$D(^TMP("ABSVM","VOLWHRS",$J,VOLIEN)) Q
 | 
|---|
| 28 |  S ERRS=0
 | 
|---|
| 29 |  S VOL0=$G(^ABS(503330,VOLIEN,0))
 | 
|---|
| 30 |  S VOL3=$G(^ABS(503330,VOLIEN,3))
 | 
|---|
| 31 |  ;IEN
 | 
|---|
| 32 |  I VOL0="" D ADDERR("Volunteer record #"_VOLIEN_" does not exist",.ERRS) D RECERR^ABSVMUT1(.VALRES,.ERRS) Q
 | 
|---|
| 33 |  ;NAME
 | 
|---|
| 34 |  S VOLNAME=$P(VOL0,U,1)
 | 
|---|
| 35 |  I VOLNAME="" D ADDERR("Volunteer record #"_VOLIEN_" does not have a volunteer name.",.ERRS)
 | 
|---|
| 36 |  S VOLIDEN="Volunteer record #"_VOLIEN_" with Name "_VOLNAME_" "
 | 
|---|
| 37 |  D STDNAME^XLFNAME(.VOLNAME,"C")
 | 
|---|
| 38 |  I VOLNAME("FAMILY")="" D ADDERR(VOLIDEN_"is missing a last name.",.ERRS)
 | 
|---|
| 39 |  I $L(VOLNAME("FAMILY"))>30 D ADDERR(VOLIDEN_"has a last name longer than 30 characters.",.ERRS)
 | 
|---|
| 40 |  I VOLNAME("GIVEN")="" D ADDERR(VOLIDEN_"is missing a first name.",.ERRS)
 | 
|---|
| 41 |  I $L(VOLNAME("GIVEN"))>30 D ADDERR(VOLIDEN_"has a first name longer than 30 characters.",.ERRS)
 | 
|---|
| 42 |  I $L(VOLNAME("MIDDLE"))>20 D ADDERR(VOLIDEN_"has a middle name longer than 20 characters.",.ERRS)
 | 
|---|
| 43 |  I $L(VOLNAME("SUFFIX"))>10 D ADDERR(VOLIDEN_"has a name suffix longer than 10 characters.",.ERRS)
 | 
|---|
| 44 |  ;SSN
 | 
|---|
| 45 |  D
 | 
|---|
| 46 |  . S SSN=$P(VOL0,U,2)
 | 
|---|
| 47 |  . I SSN="" D ADDERR(VOLIDEN_"is missing a Social Security Number.",.ERRS) Q
 | 
|---|
| 48 |  . I SSN'?9N D ADDERR(VOLIDEN_" has an incorrect SSN: "_SSN_".",.ERRS) Q
 | 
|---|
| 49 |  . I $D(^TMP("ABSVM",$J,"SSN",SSN)) D  Q
 | 
|---|
| 50 |  .. N ERRORS
 | 
|---|
| 51 |  .. S ERRORS(1)="Warning: "_VOLIDEN_"has a duplicate SSN with record "_^TMP("ABSVM",$J,"SSN",SSN)
 | 
|---|
| 52 |  .. I $G(VALRES("ERRIEN"))="" D
 | 
|---|
| 53 |  ... N ABSIEN
 | 
|---|
| 54 |  ... D ABSIEN^ABSVMUT1 Q:'ABSIEN
 | 
|---|
| 55 |  ... S VALRES("ERRIEN")=ABSIEN
 | 
|---|
| 56 |  ... Q
 | 
|---|
| 57 |  .. D WP^DIE(503339.52,VALRES("DA")_","_VALRES("ERRIEN")_",",4,"A","ERRORS")
 | 
|---|
| 58 |  .. Q
 | 
|---|
| 59 |  . S ^TMP("ABSVM",$J,"SSN",SSN)=VOLIEN
 | 
|---|
| 60 |  ;ADDR #1
 | 
|---|
| 61 |  S AD1=$P(VOL0,U,3)
 | 
|---|
| 62 |  I AD1="" D ADDERR(VOLIDEN_"is missing first line of address.",.ERRS)
 | 
|---|
| 63 |  I $L(AD1)>35 D ADDERR(VOLIDEN_"has a first line of address longer than 35 characters.",.ERRS)
 | 
|---|
| 64 |  ;CITY
 | 
|---|
| 65 |  S CITY=$P(VOL0,U,4)
 | 
|---|
| 66 |  I CITY="" D ADDERR(VOLIDEN_"is missing a city.",.ERRS)
 | 
|---|
| 67 |  I $L(CITY)>30 D ADDERR(VOLIDEN_"has a city longer than 30 characters.",ERRS)
 | 
|---|
| 68 |  ;STATE
 | 
|---|
| 69 |  ;MAY NEED CHECK ABBREVIATION AGAINST AN ACCEPTABLE LIST.
 | 
|---|
| 70 |  S STPTR=$P(VOL0,U,5)
 | 
|---|
| 71 |  I STPTR="" D ADDERR(VOLIDEN_"is missing a state.",.ERRS)
 | 
|---|
| 72 |  I STPTR'="",$L($P($G(^DIC(5,STPTR,0)),U,2))'=2 D ADDERR(VOLIDEN_"has incorrect state data.",.ERRS)
 | 
|---|
| 73 |  ;ZIP
 | 
|---|
| 74 |  S ZIP=$P(VOL0,U,6)
 | 
|---|
| 75 |  I ZIP="" D ADDERR(VOLIDEN_"is missing a zip code.",.ERRS)
 | 
|---|
| 76 |  I $L(ZIP)>10 D ADDERR(VOLIDEN_"has a zip code longer than 10 characters.",.ERRS)
 | 
|---|
| 77 |  ;SEX
 | 
|---|
| 78 |  S SEX=$P(VOL0,U,7)
 | 
|---|
| 79 |  I SEX="" D ADDERR(VOLIDEN_"is missing a gender designation.",.ERRS)
 | 
|---|
| 80 |  I ",M,F,B,G,"'[(","_SEX_",") D ADDERR(VOLIDEN_"has incorrect sex data.",.ERRS)
 | 
|---|
| 81 |  ;DOB
 | 
|---|
| 82 |  D
 | 
|---|
| 83 |  . S DOB=$P(VOL0,U,8)
 | 
|---|
| 84 |  . I DOB="" D ADDERR(VOLIDEN_"is missing a data of birth.",.ERRS) Q
 | 
|---|
| 85 |  . N RES D DT^DILF("",DOB,.RES)
 | 
|---|
| 86 |  . I $L($P(DOB,"."))'=7!(RES=-1) D ADDERR(VOLIDEN_"has incorrect date of birth date.",.ERRS)
 | 
|---|
| 87 |  . Q
 | 
|---|
| 88 |  ;NICK NAME
 | 
|---|
| 89 |  I $L($P(VOL0,U,9))>20 D ADDERR(VOLIDEN_"has a nick name longer than 20 characters.",.ERRS)
 | 
|---|
| 90 |  ;ADDR #2
 | 
|---|
| 91 |  I $L($P(VOL0,U,10))>35 D ADDERR(VOLIDEN_"has a second line of address longer than 35 characters.",.ERRS)
 | 
|---|
| 92 |  ;LANGUAGE
 | 
|---|
| 93 |  S LANG=$P(VOL0,U,11)
 | 
|---|
| 94 |  I LANG'="",",1,2,"'[(","_LANG_",") D ADDERR(VOLIDEN_"has an incorrect preferred language code.",.ERRS)
 | 
|---|
| 95 |  ;PSEUDO SSN
 | 
|---|
| 96 |  I $P(VOL0,U,18)'="P",$P(VOL0,1,18)'="" D ADDERR(VOLIDEN_"has an incorect psuedo SSN indicator",.ERRS)
 | 
|---|
| 97 |  ;CODE
 | 
|---|
| 98 |  I $L($P(VOL0,U,22))>5 D ADDERR(VOLIDEN_"has a Code longer than 5 characters.",.ERRS)
 | 
|---|
| 99 |  ;NOK
 | 
|---|
| 100 |  I $L($P(VOL3,U,1))>30 D ADDERR(VOLIDEN_"has a Next of Kin longer than 30 characters.",.ERRS)
 | 
|---|
| 101 |  ;PHONE
 | 
|---|
| 102 |  I $L($P(VOL3,U,2))>30 D ADDERR(VOLIDEN_"has a Telephone Number longer than 30 characters.",.ERRS)
 | 
|---|
| 103 |  ;NOK RELATIONSHIP
 | 
|---|
| 104 |  I $L($P(VOL3,U,3))>15 D ADDERR(VOLIDEN_"has a Kin's Relationship longer than 15 characters.",.ERRS)
 | 
|---|
| 105 |  ;NOK TELEPHONE
 | 
|---|
| 106 |  I $L($P(VOL3,U,4))>30 D ADDERR(VOLIDEN_"has a Kin's Telephone longer than 30 characters.",.ERRS)
 | 
|---|
| 107 |  ;NOK ALT PHONE
 | 
|---|
| 108 |  I $L($P(VOL3,U,5))>30 D ADDERR(VOLIDEN_"has a Kin's Alternate Phone longer than 30 characters.")
 | 
|---|
| 109 |  ;ALT PHONE
 | 
|---|
| 110 |  I $L($P(VOL3,U,7))>30 D ADDERR(VOLIDEN_"has an Alternate Phone longer than 30 characters.",.ERRS)
 | 
|---|
| 111 |  ;Record errors
 | 
|---|
| 112 |  I ERRS>0 D RECERR^ABSVMUT1(.VALRES,.ERRS)
 | 
|---|
| 113 |  ;If no errors, proceed and add to sort template.
 | 
|---|
| 114 |  I $G(FLAG)["S",'ERRS S ^XTMP("ABSVMVOL","IEN",VOLIEN)=""
 | 
|---|
| 115 |  ;STATION PROFILE
 | 
|---|
| 116 |  D PROF^ABSVMVV2(VOLIEN,VOLIDEN,$G(FLAG),.VALRES)
 | 
|---|
| 117 |  ;COMBINATIONS
 | 
|---|
| 118 |  D COMBVAL^ABSVMVV3(VOLIEN,VOLIDEN,$G(FLAG),.VALRES)
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 |  Q
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 | ADDERR(ERRMSG,ERRS,ABSVIEN) ;
 | 
|---|
| 123 |  S ERRS=ERRS+1
 | 
|---|
| 124 |  S ERRS(ERRS)=ERRMSG
 | 
|---|
| 125 |  Q
 | 
|---|