| [613] | 1 | QACVDEM ;PGB - RPC TO RETRIEVE DEMO/ELIG/ENROLLMENT PATIENT DATA ;8/3/05  14:13
 | 
|---|
 | 2 |  ;;2.0;Patient Representative;**19**;07/25/1995;Build 55
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | EN(PATSBY,DFN) ; (deprecated 08/03/2005)
 | 
|---|
 | 5 |  ; (note: this entry point will be replaced with calls to 
 | 
|---|
 | 6 |  ;  Patient Service Demographics service 08/03/2005)
 | 
|---|
 | 7 |  S PATSBY=$NA(^TMP("PatsPatientDetailsXml",$J))
 | 
|---|
 | 8 |  N CNT,TXT
 | 
|---|
 | 9 |  S DFN=+$G(DFN),CNT=0,TXT=""
 | 
|---|
 | 10 |  I '$G(DFN)!('$D(^DPT(DFN,0))) QUIT
 | 
|---|
 | 11 |  S TXT="<?xml version=""1.0"" encoding=""utf-8""?>"
 | 
|---|
 | 12 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 13 |  S TXT="<PatientDataSet xmlns=""http://tempuri.org/PatientDataSet.xsd"">"
 | 
|---|
 | 14 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 15 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)="<PatsPatient>"
 | 
|---|
 | 16 |  D DEMOG(DFN,.CNT)
 | 
|---|
 | 17 |  D ELIG(DFN,.CNT)
 | 
|---|
 | 18 |  D ENROLL(DFN,.CNT)
 | 
|---|
 | 19 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)="</PatsPatient>"
 | 
|---|
 | 20 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)="</PatientDataSet>"
 | 
|---|
 | 21 |  QUIT
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 | DEMOG(DFN,CNT) ;
 | 
|---|
 | 24 |  ;Retrieve:      Full Name (.01)
 | 
|---|
 | 25 |  ;               Name Components (Last,First,Middle,Pre,Suffix,Degree
 | 
|---|
 | 26 |  ;               Gender(.02);
 | 
|---|
 | 27 |  ;               Date of Birth (.03)     
 | 
|---|
 | 28 |  ;               SSN (.09)
 | 
|---|
 | 29 |  ;               ICN (991.01)
 | 
|---|
 | 30 |  ;               RACE (2)
 | 
|---|
 | 31 |  ;               ETHNICITY (6)
 | 
|---|
 | 32 |  N FILE,ICNO,SSN,TXT,ARR,TAGO,TAGC,VADM
 | 
|---|
 | 33 |  N YYYY,MM,DD,DOB,RACE,ETH
 | 
|---|
 | 34 |  S (SNN,ARR,TXT,YYYY,MM,DD,ETH)=""
 | 
|---|
 | 35 |  D NAMEC(DFN_",",.CNT) ;Get individual name components
 | 
|---|
 | 36 |  ; Get patient demographics and load into output (IA #10061)
 | 
|---|
 | 37 |  D DEM^VADPT
 | 
|---|
 | 38 |  S TXT="<Gender>"_$P(VADM(5),"^")_"</Gender>"
 | 
|---|
 | 39 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 40 |  S DOB=$$CONVDATE($P(VADM(3),"^"))
 | 
|---|
 | 41 |  I DOB'="" D
 | 
|---|
 | 42 |  .S TXT="<DateOfBirth>"_DOB_"</DateOfBirth>"
 | 
|---|
 | 43 |  .S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 44 |  S TAGO="<SocialSecurityNumber>",TAGC="</SocialSecurityNumber>"
 | 
|---|
 | 45 |  S SSN=$P(VADM(2),"^")
 | 
|---|
 | 46 |  S TXT=TAGO_$E(SSN,1,9)_TAGC
 | 
|---|
 | 47 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 48 |  S TAGO="<IsPseudoSsn>",TAGC="</IsPseudoSsn>"
 | 
|---|
 | 49 |  S TXT=TAGO_"false"_TAGC
 | 
|---|
 | 50 |  I SSN["P" S TXT=TAGO_"true"_TAGC
 | 
|---|
 | 51 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 52 |  ; Get race and ethnicity data (IA #3799)
 | 
|---|
 | 53 |  D RACETH(.VADM,.RACE,.ETH)
 | 
|---|
 | 54 |  I ETH]"" D
 | 
|---|
 | 55 |  . S TXT="<Ethnicity>"_ETH_"</Ethnicity>"
 | 
|---|
 | 56 |  . S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 57 |  . Q
 | 
|---|
 | 58 |  F I=0:0 S I=$O(RACE(I)) Q:'I  D
 | 
|---|
 | 59 |  . S TXT="<Race>"_RACE(I)_"</Race>"
 | 
|---|
 | 60 |  . S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 61 |  . Q
 | 
|---|
 | 62 |  ; Get integration control number (IA #2701)
 | 
|---|
 | 63 |  S ICNO=$P($$GETICN^MPIF001(DFN),"^")
 | 
|---|
 | 64 |  S TAGO="<IntegrationControlNumber>",TAGC="</IntegrationControlNumber>"
 | 
|---|
 | 65 |  I ICNO'="" D
 | 
|---|
 | 66 |  .S TXT=TAGO_ICNO_TAGC
 | 
|---|
 | 67 |  .S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 68 |  QUIT
 | 
|---|
 | 69 |  ;
 | 
|---|
 | 70 | NAMEC(DFN,CNT) ;Name from Name Component File (#20) (IA #3065)
 | 
|---|
 | 71 |  ;Retrieve:      LastName(1)
 | 
|---|
 | 72 |  ;               FirstName(2)
 | 
|---|
 | 73 |  ;               MiddleName(3)
 | 
|---|
 | 74 |  ;               Prefix(4)
 | 
|---|
 | 75 |  ;               Suffix(5)
 | 
|---|
 | 76 |  ;               Degree(6)
 | 
|---|
 | 77 |  N DGNAMEC,DPTNAME,DGFLD,TXT,NAMEC,DGII,TAGO,TAGC
 | 
|---|
 | 78 |  S DPTNAME("FILE")=2,DGFLD=1,DPTNAME("FIELD")=".01",DPTNAME("IENS")=DFN
 | 
|---|
 | 79 |  S NAMEC=$$HLNAME^XLFNAME(.DPTNAME,"S","^") ;IA #3065
 | 
|---|
 | 80 |  F DGII=1:1:6 D
 | 
|---|
 | 81 |  .S $P(DGNAMEC,U,DGFLD)=$P(NAMEC,U,DGII)
 | 
|---|
 | 82 |  .S DGFLD=DGFLD+1
 | 
|---|
 | 83 |  S TXT="<LastName>"_$P(DGNAMEC,U,1)_"</LastName>"
 | 
|---|
 | 84 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 85 |  S TXT="<FirstName>"_$P(DGNAMEC,U,2)_"</FirstName>"
 | 
|---|
 | 86 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 87 |  S TXT="<MiddleName>"_$P(DGNAMEC,U,3)_"</MiddleName>"
 | 
|---|
 | 88 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 89 |  S TXT="<NameSuffix>"_$P(DGNAMEC,U,4)_"</NameSuffix>"
 | 
|---|
 | 90 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 91 |  S TXT="<NamePrefix>"_$P(DGNAMEC,U,5)_"</NamePrefix>"
 | 
|---|
 | 92 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 93 |  S TXT="<Degree>"_$P(DGNAMEC,U,6)_"</Degree>"
 | 
|---|
 | 94 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 95 |  QUIT
 | 
|---|
 | 96 |  ;
 | 
|---|
 | 97 | ELIG(DFN,CNT) ;
 | 
|---|
 | 98 |  ;Retrieve:      Eligibility (.361)
 | 
|---|
 | 99 |  ;               Service Connected (.301)
 | 
|---|
 | 100 |  ;               SC Percent (.302)
 | 
|---|
 | 101 |  ;               Period of Service (.323)
 | 
|---|
 | 102 |  ;               Category (current means test status .14)
 | 
|---|
 | 103 |  N VAEL,FILE,TXT,ARR,TAGO,TAGC,ISSC,SCP,X
 | 
|---|
 | 104 |  S FILE=2,(ARR,TXT,SCP)=""
 | 
|---|
 | 105 |  ; (IA #10061 - NOTE: does not remove reserved XML characters (see $$SYMENC^MXMLUTL, IA#4153))
 | 
|---|
 | 106 |  D ELIG^VADPT
 | 
|---|
 | 107 |  S DFN=DFN_","
 | 
|---|
 | 108 |  S TAGO="<EligibilityCode>",TAGC="</EligibilityCode>"
 | 
|---|
 | 109 |  S X=$P(VAEL(1),"^",2)
 | 
|---|
 | 110 |  S TXT=TAGO_X_TAGC
 | 
|---|
 | 111 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 112 |  S ISSC="false"
 | 
|---|
 | 113 |  I $P(VAEL(3),"^",1)=1 S ISSC="true"
 | 
|---|
 | 114 |  S TAGO="<IsServiceConnected>",TAGC="</IsServiceConnected>"
 | 
|---|
 | 115 |  S TXT=TAGO_ISSC_TAGC
 | 
|---|
 | 116 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 117 |  S TAGO="<ServiceConnectedPercentage>"
 | 
|---|
 | 118 |  S TAGC="</ServiceConnectedPercentage>"
 | 
|---|
 | 119 |  I ISSC="true" S SCP=$P(VAEL(3),"^",2)
 | 
|---|
 | 120 |  I SCP'="" D
 | 
|---|
 | 121 |  .S TXT=TAGO_SCP_TAGC
 | 
|---|
 | 122 |  .S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 123 |  S TAGO="<PeriodOfService>",TAGC="</PeriodOfService>"
 | 
|---|
 | 124 |  S X=$P(VAEL(2),"^",2)
 | 
|---|
 | 125 |  S TXT=TAGO_X_TAGC
 | 
|---|
 | 126 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 127 |  S TAGO="<Category>",TAGC="</Category>"
 | 
|---|
 | 128 |  S X=$P(VAEL(9),"^",2)
 | 
|---|
 | 129 |  S TXT=TAGO_X_TAGC
 | 
|---|
 | 130 |  S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 131 |  QUIT
 | 
|---|
 | 132 |  ;
 | 
|---|
 | 133 | ENROLL(DFN,CNT) ;
 | 
|---|
 | 134 |  ;Retrieve:      Enrollment Priority (#27.01-->#27.11,.07)
 | 
|---|
 | 135 |  N ENRP,TAGO,TAGC
 | 
|---|
 | 136 |  S TAGO="<EnrollmentPriority>",TAGC="</EnrollmentPriority>"
 | 
|---|
 | 137 |  S ENRP=$$GETENRL(DFN)
 | 
|---|
 | 138 |  I ENRP'="" D
 | 
|---|
 | 139 |  .S TXT=TAGO_ENRP_TAGC
 | 
|---|
 | 140 |  .S CNT=CNT+1,^TMP("PatsPatientDetailsXml",$J,CNT)=TXT
 | 
|---|
 | 141 |  QUIT
 | 
|---|
 | 142 | GETENRL(DFN) ; Return current enrollment priority for this patient
 | 
|---|
 | 143 |  N CUR,QACX
 | 
|---|
 | 144 |  ; Get current enrollment (IA #2918)
 | 
|---|
 | 145 |  S CUR=$$PRIORITY^DGENA(DFN) Q:CUR="" ""
 | 
|---|
 | 146 |  ; Convert internal to external enrollment priority (IA #2462)
 | 
|---|
 | 147 |  S QACX=$$EXTERNAL^DILFD(27.11,.07,,CUR)
 | 
|---|
 | 148 |  Q QACX
 | 
|---|
 | 149 |  ;
 | 
|---|
 | 150 | RACETH(VADM,RACE,ETH) ; Return active race and ethnicity values
 | 
|---|
 | 151 |  N I,J,TXT S ETH=""
 | 
|---|
 | 152 |  ; Get Ethnicity abbreviation.
 | 
|---|
 | 153 |  S I=$O(VADM(11,0)) D:I
 | 
|---|
 | 154 |  . S ETH=$P($G(VADM(11,I)),"^")
 | 
|---|
 | 155 |  . I 'ETH S ETH="" Q
 | 
|---|
 | 156 |  . Q:$$INACTIVE^DGUTL4(ETH,2)
 | 
|---|
 | 157 |  . S ETH=$$PTR2CODE^DGUTL4(ETH,2,1)
 | 
|---|
 | 158 |  . Q
 | 
|---|
 | 159 |  ; Get historical race HL7 code.
 | 
|---|
 | 160 |  S J=0 K RACE
 | 
|---|
 | 161 |  S RACE=$P($G(VADM(8)),"^") D:RACE RACE(.RACE,.J)
 | 
|---|
 | 162 |  ; Get new race HL7 codes.
 | 
|---|
 | 163 |  F I=0:0 S I=$O(VADM(12,I)) Q:'I  D
 | 
|---|
 | 164 |  . S RACE=$P($G(VADM(12,I)),"^") Q:'RACE
 | 
|---|
 | 165 |  . D RACE(.RACE,.J) Q
 | 
|---|
 | 166 |  Q
 | 
|---|
 | 167 |  ;
 | 
|---|
 | 168 | RACE(RACE,CNT) ; Return race
 | 
|---|
 | 169 |  Q:$$INACTIVE^DGUTL4(RACE,1)
 | 
|---|
 | 170 |  N X S X=$$PTR2CODE^DGUTL4(RACE,1,2) Q:X=""
 | 
|---|
 | 171 |  S CNT=CNT+1,RACE(CNT)=X Q
 | 
|---|
 | 172 |  ;
 | 
|---|
 | 173 | CONVDATE(OLDDATE) ; Convert data to MM/DD/YYYY format
 | 
|---|
 | 174 |  Q:OLDDATE="" ""
 | 
|---|
 | 175 |  N MM,DD S MM=$E(OLDDATE,4,5),DD=$E(OLDDATE,6,7)
 | 
|---|
 | 176 |  S:MM="00" MM="01"
 | 
|---|
 | 177 |  S:DD="00" DD="01"
 | 
|---|
 | 178 |  Q $E(OLDDATE,1,3)+1700_"-"_MM_"-"_DD
 | 
|---|