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