1 | DGRUGZDC ;ALB/GRR - HL7 ZDC SEGMENT BUILDER ;06/08/99
|
---|
2 | ;;5.3;Registration;**190**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | ;This routine will build an HL7 ZDC segment for an inpatient.
|
---|
5 | ;
|
---|
6 | EN(DFN,DGDC,DGSSNC,DGMDT) ;Entry point of routine
|
---|
7 | ;DFN - Patient Internal Entry Number
|
---|
8 | ;DGDC -Type of date Change~Prior Date
|
---|
9 | ;DGSSNC - Prior SSN
|
---|
10 | ;DGMDT - Movement Date
|
---|
11 | ;DGDC - Type of date change^Prior date
|
---|
12 | ;
|
---|
13 | S DGMDT=$$HLDATE^HLFNC(DGMDT)
|
---|
14 | N DGRREC ;Initialize variables
|
---|
15 | S $P(DGRREC,HL("FS"))="ZDC" ;Set segment ID to ZDC
|
---|
16 | S $P(DGRREC,HL("FS"),2)=1 ;Set Set ID to 1
|
---|
17 | I $G(DGDC)]"" S DGCDT=$P(DGDC,"^",2),DGODT=$$HLDATE^HLFNC(DGCDT) D ;If date change do the following
|
---|
18 | .I $E(DGDC)="A" D ;If Admit date changed
|
---|
19 | ..S $P(DGRREC,HL("FS"),3)=1 ;Set type to 1
|
---|
20 | ..S $P(DGRREC,HL("FS"),4)=DGODT ;old date
|
---|
21 | ..S $P(DGRREC,HL("FS"),5)=DGMDT ;new date
|
---|
22 | .I $E(DGDC)="T" D ;If Transfer date changed
|
---|
23 | ..S $P(DGRREC,HL("FS"),3)=2 ;Set type to 2
|
---|
24 | ..S $P(DGRREC,HL("FS"),4)=DGODT ;old date
|
---|
25 | ..S $P(DGRREC,HL("FS"),5)=DGMDT ;new date
|
---|
26 | .I $E(DGDC)="D" D ;If Discharge date changed
|
---|
27 | ..S $P(DGRREC,HL("FS"),3)=3 ;Set type to 3
|
---|
28 | ..S $P(DGRREC,HL("FS"),4)=DGODT ;old date
|
---|
29 | ..S $P(DGRREC,HL("FS"),5)=DGMDT ;new date
|
---|
30 | I $G(DGSSNC)]"" D ;If SSN change, do the following
|
---|
31 | .S $P(DGRREC,HL("FS"),3)=+$P(DGRREC,HL("FS"),3)+10 ;Set type to current value plus 10. If date change and SSN, type is 11, 12, or 13. Will be a 10 for SSN change only
|
---|
32 | .S $P(DGRREC,HL("FS"),6)=DGSSNC ;old SSN
|
---|
33 | .S SSN=$$GET1^DIQ(2,DFN,.09,"I") ;Get new SSN
|
---|
34 | .S $P(DGRREC,HL("FS"),7)=SSN ;Set new SSN in message
|
---|
35 | EXIT ;
|
---|
36 | Q DGRREC ;Quit and return formatted segment
|
---|