| [613] | 1 | RORUPD52 ;HCIOFO/SG - UPDATE PATIENT'S DEMOGRAPHIC DATA (2) ; 12/12/05 9:19am | 
|---|
|  | 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | ; This routine uses the following IAs: | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | ; #174          RATED DISBAILITIES (VA) multiple (controlled) | 
|---|
|  | 7 | ; #2701         $$GETICN^MPIF001  Gets ICN | 
|---|
|  | 8 | ; #4807         RDIS^DGRPDB (supported) | 
|---|
|  | 9 | ; #10061        6^VADPT | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | Q | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | ;***** LOAD DEMOGRAPHIC DATA FROM THE 'PATIENT' FILE | 
|---|
|  | 14 | ; | 
|---|
|  | 15 | ; DFN           Internal Entry Number in the PATIENT file | 
|---|
|  | 16 | ; | 
|---|
|  | 17 | ; .RES          Reference to a buffer for the data | 
|---|
|  | 18 | ; | 
|---|
|  | 19 | ;   RES(1,      Demographic and elegibility data | 
|---|
|  | 20 | ;                 ^1: SSN                           .09 | 
|---|
|  | 21 | ;                 ^2: Date of Birth                 .03 | 
|---|
|  | 22 | ;                 ^3: Sex                           .02 | 
|---|
|  | 23 | ;                 ^4: Date of Death                 .351 | 
|---|
|  | 24 | ;                 ^5: Period of Service             .323 | 
|---|
|  | 25 | ;                 ^6: Service Connected?            .301 | 
|---|
|  | 26 | ;                 ^7: Service Connected Percentage  .302 | 
|---|
|  | 27 | ;                 ^8: ZIP+4                         .1112 | 
|---|
|  | 28 | ;                 ^9: ICN (with the checksum)       991.* | 
|---|
|  | 29 | ;     "FL")     List of field numbers separated by the ";" | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | ;   RES(2)      Race and ethnicity data | 
|---|
|  | 32 | ;                 Race^Method^...^Ethnicity^Method^... | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | ; Return Values: | 
|---|
|  | 35 | ;       <0  Error code | 
|---|
|  | 36 | ;        0  Ok | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | LOADDM(DFN,RES) ; | 
|---|
|  | 39 | N I,J,VA,VADM,VAEL,VAHOW,VAPA,VAROOT | 
|---|
|  | 40 | S RES(1,"FL")=".09;.03;.02;.351;.323;.301;.302;.1112;991" | 
|---|
|  | 41 | D 6^VADPT  F I=1,2  S RES(I)="" | 
|---|
|  | 42 | ;--- Demographic and eligibility fields | 
|---|
|  | 43 | F I=2,3,5,6  S RES(1)=RES(1)_U_$P($G(VADM(I)),U) | 
|---|
|  | 44 | S $E(RES(1),1)=""  ; Remove the first "^" | 
|---|
|  | 45 | S I=$G(VAEL(3)) | 
|---|
|  | 46 | S RES(1)=RES(1)_U_$P($G(VAEL(2)),U)_U_$S(I:"Y",1:"N")_U_$P(I,U,2) | 
|---|
|  | 47 | S I=$$GETICN^MPIF001(DFN) | 
|---|
|  | 48 | S RES(1)=RES(1)_U_$P($G(VAPA(6)),U,2)_U_$S(I'<0:I,1:"") | 
|---|
|  | 49 | ;--- Race & Ethnicity | 
|---|
|  | 50 | F I=11,12  S J=""  D | 
|---|
|  | 51 | . F  S J=$O(VADM(I,J))  Q:J=""  D | 
|---|
|  | 52 | . . S RES(2)=RES(2)_U_$P(VADM(I,J),U)_U_$P($G(VADM(I,J,1)),U) | 
|---|
|  | 53 | S $E(RES(2),1)=""  ; Remove the first "^" | 
|---|
|  | 54 | Q 0 | 
|---|
|  | 55 | ; | 
|---|
|  | 56 | ;***** LOAD RATED DISABILITIES FROM THE 'PATIENT' FILE | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | ; DFN           Internal Entry Number in the PATIENT file | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | ; .RES          Reference to a buffer for the data | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | ;   RES(3)      Rated disabilities data | 
|---|
|  | 63 | ;                 Rated Disability^Disability %^Service Connected^... | 
|---|
|  | 64 | ; | 
|---|
|  | 65 | ; Return Values: | 
|---|
|  | 66 | ;       <0  Error code | 
|---|
|  | 67 | ;        0  Ok | 
|---|
|  | 68 | ; | 
|---|
|  | 69 | LOADRD(DFN,RES) ; | 
|---|
|  | 70 | N I,RC,RORBUF | 
|---|
|  | 71 | S I=0 | 
|---|
|  | 72 | F  S I=$O(^DPT(DFN,.372,I))  Q:I'>0  D | 
|---|
|  | 73 | . S RORBUF(I)=$P($G(^DPT(DFN,.372,I,0)),U,1,3) | 
|---|
|  | 74 | S RES(3)=$$CRC32^RORBIN("RORBUF") | 
|---|
|  | 75 | Q 0 | 
|---|
|  | 76 | ; Use this code to load disabilities when the API is fixed. | 
|---|
|  | 77 | ;S RC=$$RDIS^DGRPDB(DFN,.RORBUF) | 
|---|
|  | 78 | ;D:'RC ERROR^RORERR(-57,,,DFN,RC,"$$RDIS^DGRPDB") | 
|---|
|  | 79 | ; | 
|---|
|  | 80 | ;***** GETS AND PREPARES PATIENT'S DATA | 
|---|
|  | 81 | ; | 
|---|
|  | 82 | ; PATIENS       Patient IENS in the PATIENT file | 
|---|
|  | 83 | ; .RORPAT       Reference to the FDA for field values | 
|---|
|  | 84 | ; RORIENS       IENS of the record in the ROR PATIENT file | 
|---|
|  | 85 | ; [.DOD]        Date of death is returned via this parameter | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | ; Return Values: | 
|---|
|  | 88 | ;       <0  Error code | 
|---|
|  | 89 | ;        0  Patient data has not been changed | 
|---|
|  | 90 | ;       >0  Data has been changed | 
|---|
|  | 91 | ; | 
|---|
|  | 92 | PATDATA(PATIENS,RORPAT,RORIENS,DOD) ; | 
|---|
|  | 93 | N BUF,DIFCNT,N1,NODE,RC,RORDFN | 
|---|
|  | 94 | S:PATIENS'["," PATIENS=PATIENS_"," | 
|---|
|  | 95 | S:RORIENS'["," RORIENS=RORIENS_"," | 
|---|
|  | 96 | S RORDFN=$S(RORIENS?1.N1",":+RORIENS,1:-1) | 
|---|
|  | 97 | S DOD="",(DIFCNT,RC)=0 | 
|---|
|  | 98 | ;--- Load demographic data from the PATIENT file | 
|---|
|  | 99 | S RC=$$LOADDM(+PATIENS,.NODE)  Q:RC<0 RC | 
|---|
|  | 100 | S DOD=$P(NODE(1),U,4),N1=$L(NODE(1,"FL"),";") | 
|---|
|  | 101 | ;--- Demographic and eligibility fields | 
|---|
|  | 102 | S BUF=$P($G(^RORDATA(798.4,RORDFN,1)),U,1,N1) | 
|---|
|  | 103 | I NODE(1)'=BUF  D | 
|---|
|  | 104 | . N CF,FLD,I | 
|---|
|  | 105 | . F I=1:1:N1  S FLD=+$P(NODE(1,"FL"),";",I)  D:FLD>0 | 
|---|
|  | 106 | . . K RORPAT(798.4,RORIENS,FLD) | 
|---|
|  | 107 | . . ;--- Update the field if necessary | 
|---|
|  | 108 | . . S OLDVAL=$P(BUF,U,I)  Q:$P(NODE(1),U,I)=OLDVAL | 
|---|
|  | 109 | . . S RORPAT(798.4,RORIENS,FLD)=$P(NODE(1),U,I),CF=1 | 
|---|
|  | 110 | . . ;--- Save previous values of the special fields | 
|---|
|  | 111 | . . I FLD=.09  D  Q | 
|---|
|  | 112 | . . . S RORPAT(798.4,RORIENS,10.1)=OLDVAL  ; Old SSN | 
|---|
|  | 113 | . . I FLD=991.01  D  Q | 
|---|
|  | 114 | . . . S RORPAT(798.4,RORIENS,10.2)=OLDVAL  ; Old ICN | 
|---|
|  | 115 | . I $G(CF)  S DIFCNT=DIFCNT+1  Q | 
|---|
|  | 116 | . S $P(^RORDATA(798.4,RORDFN,1),U,N1)=$P(BUF,U,N1) | 
|---|
|  | 117 | ;--- Race & Ethnicity | 
|---|
|  | 118 | I NODE(2)'=$G(^RORDATA(798.4,RORDFN,2))  D | 
|---|
|  | 119 | . S DIFCNT=DIFCNT+1,RORPAT(798.4,RORIENS,2)=NODE(2) | 
|---|
|  | 120 | K NODE | 
|---|
|  | 121 | ;--- Rated disabilities | 
|---|
|  | 122 | S RC=$$LOADRD(+PATIENS,.NODE)  Q:RC<0 RC | 
|---|
|  | 123 | I NODE(3)'=$G(^RORDATA(798.4,RORDFN,3))  D | 
|---|
|  | 124 | . S DIFCNT=DIFCNT+1,RORPAT(798.4,RORIENS,.3721)=NODE(3) | 
|---|
|  | 125 | Q $S(RC<0:RC,1:DIFCNT) | 
|---|