1 | SPNLGEIP ; ISC-SF/GMB - SCD GATHER INPATIENT ADMISSIONS DATA;17 MAY 94 [ 09/01/94 6:23 AM ] ;6/23/95 11:22
|
---|
2 | ;;2.0;Spinal Cord Dysfunction;;01/02/1997
|
---|
3 | EXTRACT(DFN,FDATE,TDATE,CLEARTXT,ABORT) ;
|
---|
4 | ; This entry point is to be used solely for gathering data to be sent
|
---|
5 | ; to the national registry.
|
---|
6 | ; DFN Patient's internal entry number in the Patient file
|
---|
7 | ; FDATE "From" date
|
---|
8 | ; TDATE "Thru" date, default=today
|
---|
9 | ; CLEARTXT 1=translate all codes to their meaning,
|
---|
10 | ; 0=don't translate codes (default=0)
|
---|
11 | N RECNR,NODE0,NODE70,ZDD,ZAD
|
---|
12 | I '$D(TDATE) S TDATE=DT
|
---|
13 | I '$D(CLEARTXT) S CLEARTXT=0
|
---|
14 | ; We will take only those admissions whose discharge date is within
|
---|
15 | ; the desired date range.
|
---|
16 | S RECNR=""
|
---|
17 | F S RECNR=$O(^DGPT("B",DFN,RECNR)) Q:RECNR="" D
|
---|
18 | . S NODE0=$G(^DGPT(RECNR,0))
|
---|
19 | . Q:$P(NODE0,U,11)'=1 ; 1=PTF record, 2=census record
|
---|
20 | . S NODE70=$G(^DGPT(RECNR,70))
|
---|
21 | . S ZDD=$P(NODE70,U,1)\1 Q:ZDD=0 ; Discharge date
|
---|
22 | . Q:ZDD<FDATE!(ZDD>TDATE)
|
---|
23 | . S ZAD=$P(NODE0,U,2)\1 Q:ZAD=0 ; Admit date
|
---|
24 | . D ADMIT(ZAD,ZDD,NODE70,CLEARTXT)
|
---|
25 | . D BSMOVE(RECNR,ZAD)
|
---|
26 | . D SURGERY(RECNR,ZAD)
|
---|
27 | . D NONSURG(RECNR,ZAD)
|
---|
28 | Q
|
---|
29 | ADMIT(ZAD,ZDD,NODE70,CLEARTXT) ; deal with inpatient admission data
|
---|
30 | N TYPEDISP,BEDSECN,ICDCODES,PIECE
|
---|
31 | S TYPEDISP=$P(NODE70,U,3)
|
---|
32 | I CLEARTXT S TYPEDISP=$$TRANSLAT^SPNLGU(TYPEDISP,45,72)
|
---|
33 | S BEDSECN=$P($G(^DIC(42.4,+$P(NODE70,U,2),0)),U,1)
|
---|
34 | S ICDCODES=""
|
---|
35 | F PIECE=10,16:1:24 D ; get the ICD codes
|
---|
36 | . S ICDCODES=ICDCODES_"^"_$P($G(^ICD9(+$P(NODE70,U,PIECE),0)),U,1)
|
---|
37 | D ADDREC^SPNLGE("IP",ZAD_"^"_ZDD_"^"_BEDSECN_"^"_TYPEDISP_ICDCODES)
|
---|
38 | Q
|
---|
39 | BSMOVE(RECNR,MOVEOUT) ; deal with inpatient bedsection movement
|
---|
40 | N SUBRECNR,MOVEIN,NODE0,BEDSECN,ICDCODES,PIECE,MOVEDATE
|
---|
41 | S MOVEDATE=""
|
---|
42 | F S MOVEDATE=$O(^DGPT(RECNR,"M","AM",MOVEDATE)) Q:MOVEDATE'>0 D
|
---|
43 | . S SUBRECNR=$O(^DGPT(RECNR,"M","AM",MOVEDATE,0))
|
---|
44 | . S MOVEIN=MOVEOUT
|
---|
45 | . S MOVEOUT=MOVEDATE\1
|
---|
46 | . S NODE0=$G(^DGPT(RECNR,"M",SUBRECNR,0))
|
---|
47 | . S BEDSECN=$P($G(^DIC(42.4,+$P(NODE0,U,2),0)),U,1)
|
---|
48 | . S ICDCODES=""
|
---|
49 | . F PIECE=5:1:9,11:1:15 D ; get ICD codes
|
---|
50 | . . S ICDCODES=ICDCODES_"^"_$P($G(^ICD9(+$P(NODE0,U,PIECE),0)),U,1)
|
---|
51 | . D ADDREC^SPNLGE("IPM",MOVEIN_"^"_MOVEOUT_"^"_BEDSECN_ICDCODES)
|
---|
52 | Q
|
---|
53 | SURGERY(RECNR,ZAD) ; deal with inpatient surgical procedures
|
---|
54 | N SUBRECNR,NODE0,PDATE,PCODES,PIECE
|
---|
55 | S SUBRECNR=0
|
---|
56 | F S SUBRECNR=$O(^DGPT(RECNR,"S",SUBRECNR)) Q:SUBRECNR'>0 D
|
---|
57 | . S NODE0=$G(^DGPT(RECNR,"S",SUBRECNR,0))
|
---|
58 | . S PDATE=$P(NODE0,U,1) ; procedure (operation) date
|
---|
59 | . S PCODES=""
|
---|
60 | . F PIECE=8:1:12 D ; get procedure codes
|
---|
61 | . . S PCODES=PCODES_"^"_$P($G(^ICD0(+$P(NODE0,U,PIECE),0)),U,1)
|
---|
62 | . D ADDREC^SPNLGE("IPS",ZAD_"^"_PDATE_PCODES)
|
---|
63 | Q
|
---|
64 | NONSURG(RECNR,ZAD) ; deal with inpatient non-surgical procedures
|
---|
65 | N SUBRECNR,NODE0,PDATE,BEDSECN,PCODES,PIECE
|
---|
66 | S SUBRECNR=0
|
---|
67 | F S SUBRECNR=$O(^DGPT(RECNR,"P",SUBRECNR)) Q:SUBRECNR'>0 D
|
---|
68 | . S NODE0=$G(^DGPT(RECNR,"P",SUBRECNR,0))
|
---|
69 | . S PDATE=$P(NODE0,U,1)\1 ; procedure date
|
---|
70 | . S BEDSECN=$P($G(^DIC(42.4,+$P(NODE0,U,2),0)),U,1)
|
---|
71 | . S PCODES=""
|
---|
72 | . F PIECE=5:1:9 D ; get procedure codes
|
---|
73 | . . S PCODES=PCODES_"^"_$P($G(^ICD0(+$P(NODE0,U,PIECE),0)),U,1)
|
---|
74 | . D ADDREC^SPNLGE("IPP",ZAD_"^"_PDATE_PCODES)
|
---|
75 | Q
|
---|