| 1 | SPNHL2 ;WDE/SAN-DIEGO;Build the hl7 segment for file data 154.1
 | 
|---|
| 2 |  ;;2.0;Spinal Cord Dysfunction;**10,11,12,14,19,20**;01/02/97
 | 
|---|
| 3 | EN(SPNFD0) ;
 | 
|---|
| 4 |  ;this routine is called from spnhl71 spnhl71 is called from the
 | 
|---|
| 5 |  ;edit screen
 | 
|---|
| 6 |  ; spndd is the field name located in the dd
 | 
|---|
| 7 |  ; x is the field number from file 154.1
 | 
|---|
| 8 |  ;  this routine is used to build the ORU segment in chapter 7 of
 | 
|---|
| 9 |  ;  hl7 manual 2.3  (page 7-14)
 | 
|---|
| 10 |  ;-------------------------------------------------------------------
 | 
|---|
| 11 |  ;build the msh and pid segment
 | 
|---|
| 12 |  S SPNFDFN=$$GET1^DIQ(154.1,SPNFD0_",",.01,"I")
 | 
|---|
| 13 |  Q:SPNFDFN=""
 | 
|---|
| 14 |  ;build the msh & pid segments
 | 
|---|
| 15 |  S SPNOBR="OBR",$P(SPNOBR,"|",7)="|"
 | 
|---|
| 16 |  S $P(SPNOBR,"|",2)=1
 | 
|---|
| 17 |  S $P(SPNOBR,"|",5)="FUNCTIONAL STATUS OBR"
 | 
|---|
| 18 |  S SPNRDT=$$GET1^DIQ(154.1,SPNFD0_",",.04,"I")
 | 
|---|
| 19 |  Q:SPNRDT=""  S SPNRDT=$$HLDATE^HLFNC(SPNRDT,"TS")
 | 
|---|
| 20 |  S $P(SPNOBR,"|",8)=SPNRDT K SPNRDT
 | 
|---|
| 21 |  S SPLINE="",SPLINE=$O(SPMSG(SPLINE),-1)+1
 | 
|---|
| 22 |  S SPMSG(SPLINE)=SPNOBR S SPLINE=SPLINE+1
 | 
|---|
| 23 |  K SPNOBR
 | 
|---|
| 24 |  S OBXCNT=1
 | 
|---|
| 25 |  ;check for date of death if so get it
 | 
|---|
| 26 |  S SPDATA=$$GET1^DIQ(2,SPNFDFN_",",.351,"I") I $G(SPDATA)'="" D
 | 
|---|
| 27 |  . S SPDATA=$$HLDATE^HLFNC(SPDATA,"TS")
 | 
|---|
| 28 |  . S SPMSG(SPLINE)="OBX|"_OBXCNT_"|TS|"_".351"_"^"_"DATE OF DEATH"_"||"_SPDATA
 | 
|---|
| 29 |  . S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA=""
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  ;build obx from STRING  values
 | 
|---|
| 32 |  F X=.05,.06,.07,.08,.09,.1,.11,.12,.13,.14,.15,.16,.161,.17,.18,.181,.19,.191,.2,.21,.22,2.01,2.02,2.03,2.04,2.05,2.06,2.07,2.08,999.03,999.04,999.05,999.06,999.08 D
 | 
|---|
| 33 |  . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X) I SPDATA'="" D
 | 
|---|
| 34 |  .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
 | 
|---|
| 35 |  .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_"||"_SPDATA S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  ;build the ASIA data values  (new for patch 12)
 | 
|---|
| 38 |  F X=.021,.023,.024,7.01,7.02,7.03,7.04,7.05,7.06,7.07,7.08,7.09,7.1,7.11,7.12,7.13,7.14 D
 | 
|---|
| 39 |  . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X) I SPDATA'="" D
 | 
|---|
| 40 |  .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
 | 
|---|
| 41 |  .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_"||"_SPDATA S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  F X=1001,1002 D
 | 
|---|
| 44 |  . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X,"I") I SPDATA'="" D
 | 
|---|
| 45 |  .. S SPDATA=$$HLDATE^HLFNC(SPDATA,"TS")
 | 
|---|
| 46 |  .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
 | 
|---|
| 47 |  .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|TS|"_X_"^"_SPNDD_"||"_SPDATA
 | 
|---|
| 48 |  .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA=""
 | 
|---|
| 49 |  ; get ms data only the numbers
 | 
|---|
| 50 |  F X=3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9  D
 | 
|---|
| 51 |  . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X,"I") I SPDATA'="" D
 | 
|---|
| 52 |  .. S SPDATA=$$GET1^DIQ(154.2,SPDATA_",",.01)
 | 
|---|
| 53 |  .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
 | 
|---|
| 54 |  .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|NU|"_X_"^"_SPNDD_"||"_SPDATA S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA=""
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  F X=4.1,4.2,4.3,4.4,4.5,4.6,6.01,6.02,2.09,2.13 D
 | 
|---|
| 58 |  . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X) I SPDATA'="" D
 | 
|---|
| 59 |  .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
 | 
|---|
| 60 |  .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|NU|"_X_"^"_SPNDD_"||"_SPDATA
 | 
|---|
| 61 |  .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  F X=5.01,5.02,5.03,5.04,5.05,5.06,5.07,5.08,5.09,5.1,5.11,5.12 D
 | 
|---|
| 65 |  . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X,"I") I SPDATA'="" D
 | 
|---|
| 66 |  .. S SPDATA=$$GET1^DIQ(154.11,SPDATA_",",.02)
 | 
|---|
| 67 |  .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
 | 
|---|
| 68 |  .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_"||"_SPDATA
 | 
|---|
| 69 |  .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD=""
 | 
|---|
| 70 |  F X=.02,.03,1003 D
 | 
|---|
| 71 |  . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X) I SPDATA'="" D
 | 
|---|
| 72 |  .. S SPNTBL=$S(X=.02:"^VA501",X=.03:"^VA502",1:"")
 | 
|---|
| 73 |  .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR"
 | 
|---|
| 74 |  .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_SPNTBL_"||"_SPDATA
 | 
|---|
| 75 |  .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA=""
 | 
|---|
| 76 |  ;get the clinician its a multiple but we will only record the first one 
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  S SPNTMP=""
 | 
|---|
| 79 |  D GETS^DIQ(154.1,SPNFD0_",","1.01*","","SPNTMP")
 | 
|---|
| 80 |  S SPNDD=$G(^DD(154.1,1.01,0)),SPNDD=$P(SPNDD,U,1)  ;Get dd field name
 | 
|---|
| 81 |  S SPNET=0,SPNET=$O(SPNTMP(154.101,SPNET))
 | 
|---|
| 82 |  I SPNET'="" S CL=0,CL=$O(SPNTMP(154.101,SPNET,CL)) S SPNDOC=$G(SPNTMP(154.101,SPNET,CL))
 | 
|---|
| 83 |  I SPNET'="" I SPNDOC'="" S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|154.101^"_SPNDD_"||"_$G(SPNDOC)
 | 
|---|
| 84 |  K SPNET,CL,SPNDOC,SPNDD,SPDATA,SPNTBL
 | 
|---|