source: FOIAVistA/trunk/r/ZZREGIONAL-A1C-A5C-CRHD-RGED-RGUT-RGWB-RG/RGRSPARS.m@ 1800

Last change on this file since 1800 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 6.7 KB
Line 
1RGRSPARS ;ALB/RJS-REGISTRATION MESSAGE PARSER FOR CIRN ;3/8/96
2 ;;1.0; CLINICAL INFO RESOURCE NETWORK ;;30 Apr 99
3EN(ARRAY) ;
4 ;This procedure call returns an array of patient information in the
5 ;corresponding PATIENT file (#2) field numbers as well as Patient
6 ;sensitivity.
7 ;
8 ;Input: Required Variable
9 ;
10 ; ARRAY - Supplied array variable (Pass by reference)
11 ;
12 ;Output:
13 ;
14 ; ARRAY - Array of patient information gathered from HL7 segments
15 ;
16 N RGRSPID,RGRSZEL,RGRSZPD,RGRSZSP,RGC,RGRSPD1,RGRSZEM,RGRSZCT,RGRSZFF
17 N STATE,STATEIEN,SUBCOMP,STREETS,INSTITU,CNTYCODE,ADDRESS,RGRSOBX
18 N RGRSMSH
19 S RGC=$E(HL("ECH")),SUBCOMP=$E(HL("ECH"),2)
20 S RGRSMSH=$$SEG1^RGRSUTIL("MSH",1,"MSH")
21 S RGRSPID=$$SEG1^RGRSUTIL("PID",1,"PID")
22 S RGRSPD1=$$SEG1^RGRSUTIL("PD1",1,"PD1")
23 S RGRSZEL=$$SEG1^RGRSUTIL("ZEL",1,"ZEL")
24 S RGRSZPD=$$SEG1^RGRSUTIL("ZPD",1,"ZPD")
25 S RGRSZSP=$$SEG1^RGRSUTIL("ZSP",1,"ZSP")
26 S RGRSZEM=$$SEG1^RGRSUTIL("ZEM",1,"ZEM")
27 S RGRSZCT=$$SEG1^RGRSUTIL("ZCT",1,"ZCT")
28 S RGRSZFF=$$SEG1^RGRSUTIL("ZFF",1,"ZFF")
29 S RGRSOBX=$$SEG1^RGRSUTIL("OBX",1,"OBX")
30 S @ARRAY@(.01)=$$FREE($$FMNAME^HLFNC($P(RGRSPID,HL("FS"),6),HL("ECH"))) ;NAME
31 S @ARRAY@(.02)=$$SEX($P(RGRSPID,HL("FS"),9)) ;SEX
32 S @ARRAY@(.03)=$$FREE($$FMDATE^HLFNC($P(RGRSPID,HL("FS"),8))) ;DOB
33 S @ARRAY@(.05)=$$MARITAL($P(RGRSPID,HL("FS"),17)) ;MARITAL STATUS
34 S @ARRAY@(.08)=$$RELIG($P(RGRSPID,HL("FS"),18)) ;RELIGIOUS PREFERENCE
35 S @ARRAY@(.09)=$$FREE($P(RGRSPID,HL("FS"),20)) ;SOCIAL SECURITY #
36 S ADDRESS=$$FREE($P(RGRSPID,HL("FS"),12)) ;ADDRESS FIELDS
37 S @ARRAY@(.111)=$$FREE($P(ADDRESS,RGC,1)) ;STREET ADDRESS [1]
38 S @ARRAY@(.112)=$$FREE($P(ADDRESS,RGC,2)) ;STREET ADDRESS [2]
39 S @ARRAY@(.113)=$$FREE($P(ADDRESS,RGC,8)) ;STREET ADDRESS [3]
40 S @ARRAY@(.114)=$$FREE($P($P(RGRSPID,HL("FS"),12),RGC,3)) ;CITY
41 S @ARRAY@(.115)=$$STATE($P($P(RGRSPID,HL("FS"),12),RGC,4)) ;STATE
42 S @ARRAY@(.1112)=$$FREE($P($P(RGRSPID,HL("FS"),12),RGC,5)) ;ZIP+4
43 S CNTYCODE=$P(RGRSPID,HL("FS"),13) ;COUNTY CODE
44 S @ARRAY@(.117)=$$COUNTY(@ARRAY@(.115),CNTYCODE)
45 S @ARRAY@(.131)=$$FREE($P(RGRSPID,HL("FS"),14)) ;PHONE NUMBER-HOME
46 S @ARRAY@(.132)=$$FREE($P(RGRSPID,HL("FS"),15)) ;PHONE NUMBER-WORK
47 S @ARRAY@(.211)=$$FREE($P(RGRSZCT,HL("FS"),4)) ;K-NAME
48 S @ARRAY@(.219)=$$FREE($P(RGRSZCT,HL("FS"),7)) ;K-PHONE NUMBER
49 S @ARRAY@(.2403)=$$FREE($P(RGRSPID,HL("FS"),7)) ;MOTHERS MAIDEN NAME
50 S @ARRAY@(.301)=$$YESNO($P(RGRSZSP,HL("FS"),3)) ;SERVICE CONNECTED
51 S @ARRAY@(.302)=$$FREE($P(RGRSZSP,HL("FS"),4)) ;SERVICE CONNECTED PERCENTAGE
52 S @ARRAY@(.31115)=$$EMP($P(RGRSZEM,HL("FS"),4)) ;EMPLOYMENT STATUS
53 S @ARRAY@(.323)=$$POS($P(RGRSZSP,HL("FS"),5)) ;PERIOD OF SERVICE
54 S @ARRAY@(.351)=$$FREE($$FMDATE^HLFNC($P(RGRSZPD,HL("FS"),10))) ;DATE OF DEATH
55 S @ARRAY@(.361)=$$ELIG($P(RGRSZEL,HL("FS"),3)) ;PRIMARY ELIGIBILITY CODE
56 S @ARRAY@(.3612)=$$FREE($$FMDATE^HLFNC($P(RGRSZEL,HL("FS"),12))) ;DT VER
57 S @ARRAY@(.3615)=$$FREE($P(RGRSZEL,HL("FS"),14)) ;VERIFICATION METHOD
58 S @ARRAY@(391)=$$TYPE($P(RGRSZEL,HL("FS"),10)) ;PATIENT TYPE
59 S @ARRAY@(1901)=$$VETERAN($P(RGRSZEL,HL("FS"),9)) ;VETERAN (Y/N)
60 S @ARRAY@(991.01)=$$FREE($P($P(RGRSPID,HL("FS"),3),"V",1)) ;INTEG CONTROL #
61 S @ARRAY@(991.02)=$$FREE($P($P(RGRSPID,HL("FS"),3),"V",2)) ;CHECKSUM
62 S @ARRAY@(991.03)=$$FREE($P($P(RGRSPD1,HL("FS"),4),RGC,1)) ;VCCI
63 S @ARRAY@("SENDING SITE")=$$FREE($P(RGRSMSH,HL("FS"),4)) ;SENDING SITE
64 S @ARRAY@("SITENUM")=$$FREE($P($P(RGRSPD1,HL("FS"),4),RGC,3)) ;VCCI SITENUM
65 S @ARRAY@("DFN")=$$FREE($P($P(RGRSPID,HL("FS"),4),RGC,1)) ;DFN
66 S @ARRAY@("FLD")=$P(RGRSZFF,HL("FS"),3) ;FIELD(S) EDITED
67 I $$FREE($P($P(RGRSOBX,HL("FS"),4),RGC,2))="SECURITY LEVEL" DO
68 . S @ARRAY@("SENSITIVITY")=$$SENSTIVE($P(RGRSOBX,HL("FS"),6),RGC) ;SENSTIVITY
69 . S @ARRAY@("SENSITIVITY USER")=$$FREE($P($P(RGRSOBX,HL("FS"),17),RGC,2))_","_$$FREE($P($P(RGRSOBX,HL("FS"),17),RGC,3)) ;REMOTE PERSON WHO MADE PT. SENSITIVE
70 . S @ARRAY@("SENSITIVITY DATE")=$$FREE($$FMDATE^HLFNC($P(RGRSOBX,HL("FS"),15))) ;DATE/TIME PERSON MADE PT. SENSITIVE AT REMOTE SITE
71 D NOW^%DTC S @ARRAY@(.097)=X
72 K %H,%I,X,%
73 Q
74 ;
75VETERAN(HLCODE) ;
76 Q:$$FREE(HLCODE)="" ""
77 Q:$$FREE(HLCODE)="""@""" """@"""
78 Q:HLCODE=1 "YES"
79 Q:HLCODE=0 "NO"
80 Q HLCODE_"^1"
81 ;
82STATE(STATE) ;
83 N RETURN,STATEIEN
84 Q:$$FREE(STATE)="" ""
85 Q:$$FREE(STATE)="""@""" """@"""
86 S STATEIEN=$O(^DIC(5,"C",STATE,0))
87 I $G(STATEIEN)="" Q STATE_"^1"
88 S RETURN=$P(^DIC(5,STATEIEN,0),"^",1)
89 Q:$G(RETURN)'="" RETURN
90 Q STATE_"^1"
91 ;
92COUNTY(STATE,CNTYCODE) ;
93 ;This function entry point is used to obtain the county name
94 ;
95 ;Input: Required Variables
96 ;
97 ; STATE - State name
98 ; CNTYCODE - County code
99 ;
100 ;Output:
101 ; County name - If known
102 ; "@" - If missing required input
103 ; County Code^1 - If county code was unknown
104 ;
105 N STATEIEN,COUNTIEN,CNTYNAME
106 Q:$G(STATE)=""!($G(STATE)=HL("Q"))!($G(CNTYCODE)="") ""
107 Q:$G(CNTYCODE)=HL("Q") """@"""
108 S STATEIEN=$O(^DIC(5,"B",STATE,0))
109 Q:$G(STATEIEN)'>0 CNTYCODE_"^1"
110 S COUNTIEN=$O(^DIC(5,STATEIEN,1,"C",CNTYCODE,0))
111 Q:$G(COUNTIEN)'>0 CNTYCODE_"^1"
112 S CNTYNAME=$P(^DIC(5,STATEIEN,1,COUNTIEN,0),"^",1)
113 Q:$L(CNTYNAME)'>0 CNTYCODE_"^1"
114 Q $G(CNTYNAME)
115 ;
116KILL ;
117 K @ARRAY
118 Q
119 ;
120FREE(DATA) ;
121 Q:$G(DATA)="" ""
122 Q:DATA=HL("Q") """@"""
123 Q $G(DATA)
124SEX(DATA) ;
125 Q:$$FREE(DATA)="" ""
126 Q:$$FREE(DATA)="""@""" """@"""
127 I DATA="M" Q "MALE"
128 I DATA="F" Q "FEMALE"
129 Q "^<UNRESOLVED>"
130 ;
131MARITAL(DATA) ;
132 Q:$$FREE(DATA)="" ""
133 Q:$$FREE(DATA)="""@""" """@"""
134 Q:DATA="A" "SEPARATED"
135 Q:DATA="D" "DIVORCED"
136 Q:DATA="M" "MARRIED"
137 Q:DATA="S" "NEVER MARRIED"
138 Q:DATA="W" "WIDOW/WIDOWER"
139 Q:DATA="U" "UNKNOWN"
140 Q DATA_"^1"
141 ;
142SENSTIVE(DATA,SUBCOMP) ;
143 Q:$G(DATA)="" 0
144 Q:$P(DATA,SUBCOMP,1)=1 1
145 Q 0
146 ;
147YESNO(DATA) ;
148 Q:$$FREE(DATA)="" ""
149 Q:$$FREE(DATA)="""@""" """@"""
150 I DATA="1" Q "YES"
151 I DATA="0" Q "NO"
152 Q "^<UNRESOLVED>"
153RELIG(DATA) ;
154 N IEN,RELIG
155 Q:$$FREE(DATA)="" ""
156 Q:$$FREE(DATA)="""@""" """@"""
157 S IEN=$O(^DIC(13,"C",DATA,0))
158 I $G(IEN)="" Q DATA_"^1"
159 S RELIG=$P($G(^DIC(13,IEN,0)),"^",1)
160 I $G(RELIG)="" Q DATA_"^1"
161 Q $G(RELIG)
162POS(DATA) ;
163 N IEN,POS
164 Q:$$FREE(DATA)="" ""
165 Q:$$FREE(DATA)="""@""" """@"""
166 S IEN=$O(^DIC(21,"D",DATA,0))
167 I $G(IEN)="" Q DATA_"^1"
168 S POS=$P($G(^DIC(21,IEN,0)),"^",1)
169 I $G(POS)="" Q DATA_"^1"
170 Q $G(POS)
171ELIG(DATA) ;
172 N IEN,ELIGPTR,ELIG
173 Q:$$FREE(DATA)="" ""
174 Q:$$FREE(DATA)="""@""" """@"""
175 S ELIGPTR=$O(^DIC(8,"D",DATA,0))
176 I $G(ELIGPTR)'>0 Q DATA_"^1"
177 S ELIG=$P($G(^DIC(8,ELIGPTR,0)),"^",1)
178 I $G(ELIG)="" Q DATA_"^1"
179 Q $G(ELIG)
180TYPE(DATA) ;
181 N IEN,TYPE
182 Q:$$FREE(DATA)="" ""
183 Q:$$FREE(DATA)="""@""" """@"""
184 S IEN=$O(^DG(391,"B",DATA,0))
185 I $G(IEN)="" Q DATA_"^1"
186 S TYPE=$P($G(^DG(391,IEN,0)),"^",1)
187 I $G(TYPE)="" Q DATA_"^1"
188 Q $G(TYPE)
189EMP(DATA) ;
190 N IEN,EMP
191 Q:$$FREE(DATA)="" ""
192 Q:$$FREE(DATA)="""@""" """@"""
193 Q:DATA=1 "EMPLOYED FULL TIME"
194 Q:DATA=2 "EMPLOYED PART TIME"
195 Q:DATA=3 "NOT EMPLOYED"
196 Q:DATA=4 "SELF EMPLOYED"
197 Q:DATA=5 "RETIRED"
198 Q:DATA=6 "ACTIVE MILITARY DUTY"
199 Q:DATA=9 "UNKNOWN"
200 Q DATA_"^1"
Note: See TracBrowser for help on using the repository browser.