| 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 | 
|---|