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