1 | SPNHL1 ;WDE/SAN-DIEGO;Build the hl7 segment for file 154
|
---|
2 | ;;2.0;Spinal Cord Dysfunction;**10,12,15,24**;01/02/97
|
---|
3 | ;this routine is called from spnhl7 spnhl7 is called from the
|
---|
4 | ;edit rtn for file 154
|
---|
5 | EN(SPNFDFN) ;
|
---|
6 | K OBXCNT,SPNOBR,SPLINE,DATA,X,Y,SPNDD,SPNDT,SPNTMP
|
---|
7 | ;collect the registration data from 154
|
---|
8 | S SPNOBR=1,OBXCNT=1
|
---|
9 | S OBXCNT=1
|
---|
10 | S SPLINE="",SPLINE=$O(SPMSG(SPLINE),-1)+1
|
---|
11 | S SPMSG(SPLINE)="OBR|"_SPNOBR_"|||Registration OBR"
|
---|
12 | ;set up the obr with the date of registration
|
---|
13 | S X=$$GET1^DIQ(154,SPNFDFN_",",.02,"I"),X=$$HLDATE^HLFNC(X,"TS")
|
---|
14 | S $P(SPMSG(SPLINE),"|",8)=X S SPLINE=SPLINE+1
|
---|
15 | S SPNDD=$G(^DD(154,.02,0)),SPNDD=$P(SPNDD,U,1)
|
---|
16 | ;loop through the fields and set up the message
|
---|
17 | ;this section will set up all data type of date (ts)
|
---|
18 | F X=.02,.05,8.8,10.2 D
|
---|
19 | . S SPNDD=$G(^DD(154,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
|
---|
20 | . S SPDATA=$$GET1^DIQ(154,SPNFDFN_",",X,"I") I $G(SPDATA)'="" D
|
---|
21 | .. S SPDATA=$$HLDATE^HLFNC(SPDATA,"TS")
|
---|
22 | .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|TS|"_X_"^"_SPNDD_"||"_SPDATA
|
---|
23 | .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
|
---|
24 | .. S (SPDATA,SPNDD)=""
|
---|
25 | F SPNCOMP=999.06,999.07,999.08 D
|
---|
26 | . S X=$$GET1^DIQ(154,SPNFDFN_",",SPNCOMP,"") I $G(X)'="" D
|
---|
27 | .. D ^%DT S SPDATA=Y ;flip date around to fm type
|
---|
28 | .. S SPDATA=$$HLDATE^HLFNC(SPDATA,"TS")
|
---|
29 | .. S SPNDD=$G(^DD(154,SPNCOMP,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
|
---|
30 | .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|TS|"_SPNCOMP_"^"_SPNDD_"||"_SPDATA
|
---|
31 | .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
|
---|
32 | .. S (SPDATA,SPNDD)=""
|
---|
33 | ;check for date of death if so get it
|
---|
34 | S SPDATA=$$GET1^DIQ(2,SPNFDFN_",",.351,"I") I $G(SPDATA)'="" D
|
---|
35 | . S SPDATA=$$HLDATE^HLFNC(SPDATA,"TS")
|
---|
36 | . S SPMSG(SPLINE)="OBX|"_OBXCNT_"|TS|"_".351"_"^"_"DATE OF DEATH"_"||"_SPDATA
|
---|
37 | . S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA=""
|
---|
38 | ;
|
---|
39 | ;this secton will set up all data types of free text (ST)
|
---|
40 | F X=.03,2.1,2.2,2.3,2.4,2.5,2.6,3.1,3.2,3.3,3.4,3.5,5.01,5.11,5.12,6.09,8.3,8.4,8.6,10.3,999.03,999.04,999.05 D
|
---|
41 | . S SPNDD=$G(^DD(154,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
|
---|
42 | . S SPDATA=$$GET1^DIQ(154,SPNFDFN_",",X) I $G(SPDATA)'="" D
|
---|
43 | .. S SPNTBL=$S(X=".03":"^VA0504",X="2.2":"^VA0505",X="2.3":"^VA0506",X="2.6":"^VA0507",1:"")
|
---|
44 | .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_SPNTBL_"||"_SPDATA
|
---|
45 | .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
|
---|
46 | .. S (SPDATA,SPNDD,SPNTBL)=""
|
---|
47 | ;
|
---|
48 | ;set up station suffix from 40.8
|
---|
49 | S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|154.91.2^DIVISION||"_$$EN^SPNMAIN(DUZ)
|
---|
50 | S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
|
---|
51 | ;this section is as well data types of free text (ST)
|
---|
52 | F X=1.1,5.02,5.03,5.04,5.05,5.06,5.07,5.08,5.09,5.1,5.13,5.14,10.1,8.1,8.2 D
|
---|
53 | . S SPNDD=$G(^DD(154,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
|
---|
54 | . S SPDATA=$$GET1^DIQ(154,SPNFDFN_",",X) I $G(SPDATA)'="" D
|
---|
55 | .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_"||"_SPDATA
|
---|
56 | .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
|
---|
57 | .. S (SPDATA,SPNDD)=""
|
---|
58 | ;this section will collect the etiology information
|
---|
59 | D GETS^DIQ(154,SPNFDFN_",","4*","","SPNTMP")
|
---|
60 | S SPNET="" F S SPNET=$O(SPNTMP(154.004,SPNET)) Q:(SPNET="")!('+SPNET) D ETIOBR S SPND="" F S SPND=$O(SPNTMP(154.004,SPNET,SPND)) Q:(SPND="")!('+SPND) D
|
---|
61 | . S SPNDD=$G(^DD(154.004,SPND,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
|
---|
62 | . S X=$G(SPNTMP(154.004,SPNET,SPND)) I $G(X)'="" D
|
---|
63 | .. I SPND=".02" D ^%DT S X=$$HLDATE^HLFNC(Y,"TS") ;make hl7 date
|
---|
64 | .. S SPNTBL=$S(SPND=.01:"^VA503",1:"")
|
---|
65 | .. S SPDTYPE=$S(SPND=.02:"TS",1:"ST")
|
---|
66 | .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|"_SPDTYPE_"|"_SPND_"^"_SPNDD_SPNTBL_"||"_X S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1
|
---|
67 | .. K SPDTYPE,SPNTBL
|
---|
68 | .Q
|
---|
69 | EVAL ;
|
---|
70 | K SPNTMP,SPDATA,SPDD,SPD
|
---|
71 | D GETS^DIQ(154,SPNFDFN_",","7*","I","SPNTMP")
|
---|
72 | S SPNET="" F S SPNET=$O(SPNTMP(154.07,SPNET)) Q:(SPNET="")!('+SPNET) D EVLOBR S SPND=0 F S SPND=$O(SPNTMP(154.07,SPNET,SPND)) Q:(SPND="")!('+SPND) D
|
---|
73 | . S SPDATA=$G(SPNTMP(154.07,SPNET,SPND,"I")) I $G(SPDATA)'="" D
|
---|
74 | .. S SPDATA=$$HLDATE^HLFNC(SPDATA,"TS")
|
---|
75 | .. S SPNDD=$G(^DD(154.07,SPND,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="-----"
|
---|
76 | .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|TS|"_SPND_"^"_SPNDD_"||"_SPDATA
|
---|
77 | .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1
|
---|
78 | .. S (SPDATA,SPNDD,SPD)=""
|
---|
79 | K SPNTMP
|
---|
80 | Q
|
---|
81 | ;
|
---|
82 | ETIOBR ;
|
---|
83 | S SPNOBR=SPNOBR+1
|
---|
84 | S X=$G(SPNTMP(154.004,SPNET,.02)) D ^%DT S ETDATE=Y K Y,X
|
---|
85 | S ETDATE=$$HLDATE^HLFNC(ETDATE,"TS")
|
---|
86 | ;note that this resets the date to an hl7 format
|
---|
87 | S SPMSG(SPLINE)="OBR|"_SPNOBR_"|||154 ETIOLOGY DATA|||"_ETDATE
|
---|
88 | S SPLINE=SPLINE+1
|
---|
89 | S OBXCNT=1
|
---|
90 | Q
|
---|
91 | EVLOBR ;
|
---|
92 | S SPNOBR=SPNOBR+1
|
---|
93 | S SPDT=$G(SPNTMP(154.07,SPNET,.01,"I"))
|
---|
94 | S SPDT=$$HLDATE^HLFNC(SPDT,"TS")
|
---|
95 | S SPMSG(SPLINE)="OBR|"_SPNOBR_"|||154 ANNUAL EVAL DATA|||"_SPDT
|
---|
96 | S SPLINE=SPLINE+1
|
---|
97 | S OBXCNT=1
|
---|
98 | Q
|
---|