SPNHL2 ;WDE/SAN-DIEGO;Build the hl7 segment for file data 154.1 ;;2.0;Spinal Cord Dysfunction;**10,11,12,14,19,20**;01/02/97 EN(SPNFD0) ; ;this routine is called from spnhl71 spnhl71 is called from the ;edit screen ; spndd is the field name located in the dd ; x is the field number from file 154.1 ; this routine is used to build the ORU segment in chapter 7 of ; hl7 manual 2.3 (page 7-14) ;------------------------------------------------------------------- ;build the msh and pid segment S SPNFDFN=$$GET1^DIQ(154.1,SPNFD0_",",.01,"I") Q:SPNFDFN="" ;build the msh & pid segments S SPNOBR="OBR",$P(SPNOBR,"|",7)="|" S $P(SPNOBR,"|",2)=1 S $P(SPNOBR,"|",5)="FUNCTIONAL STATUS OBR" S SPNRDT=$$GET1^DIQ(154.1,SPNFD0_",",.04,"I") Q:SPNRDT="" S SPNRDT=$$HLDATE^HLFNC(SPNRDT,"TS") S $P(SPNOBR,"|",8)=SPNRDT K SPNRDT S SPLINE="",SPLINE=$O(SPMSG(SPLINE),-1)+1 S SPMSG(SPLINE)=SPNOBR S SPLINE=SPLINE+1 K SPNOBR S OBXCNT=1 ;check for date of death if so get it S SPDATA=$$GET1^DIQ(2,SPNFDFN_",",.351,"I") I $G(SPDATA)'="" D . S SPDATA=$$HLDATE^HLFNC(SPDATA,"TS") . S SPMSG(SPLINE)="OBX|"_OBXCNT_"|TS|"_".351"_"^"_"DATE OF DEATH"_"||"_SPDATA . S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA="" ; ;build obx from STRING values 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 . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X) I SPDATA'="" D .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR" .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_"||"_SPDATA S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="" ; ;build the ASIA data values (new for patch 12) 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 . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X) I SPDATA'="" D .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR" .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_"||"_SPDATA S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="" ; F X=1001,1002 D . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X,"I") I SPDATA'="" D .. S SPDATA=$$HLDATE^HLFNC(SPDATA,"TS") .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR" .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|TS|"_X_"^"_SPNDD_"||"_SPDATA .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA="" ; get ms data only the numbers F X=3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9 D . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X,"I") I SPDATA'="" D .. S SPDATA=$$GET1^DIQ(154.2,SPDATA_",",.01) .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR" .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|NU|"_X_"^"_SPNDD_"||"_SPDATA S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA="" ; ; F X=4.1,4.2,4.3,4.4,4.5,4.6,6.01,6.02,2.09,2.13 D . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X) I SPDATA'="" D .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR" .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|NU|"_X_"^"_SPNDD_"||"_SPDATA .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="" ; ; 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 . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X,"I") I SPDATA'="" D .. S SPDATA=$$GET1^DIQ(154.11,SPDATA_",",.02) .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR" .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_"||"_SPDATA .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="" F X=.02,.03,1003 D . S SPDATA=$$GET1^DIQ(154.1,SPNFD0_",",X) I SPDATA'="" D .. S SPNTBL=$S(X=.02:"^VA501",X=.03:"^VA502",1:"") .. S SPNDD=$G(^DD(154.1,X,0)),SPNDD=$P(SPNDD,U,1) S:SPNDD="" SPNDD="ERROR" .. S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|"_X_"^"_SPNDD_SPNTBL_"||"_SPDATA .. S SPLINE=SPLINE+1,OBXCNT=OBXCNT+1,SPNDD="",SPDATA="" ;get the clinician its a multiple but we will only record the first one ; S SPNTMP="" D GETS^DIQ(154.1,SPNFD0_",","1.01*","","SPNTMP") S SPNDD=$G(^DD(154.1,1.01,0)),SPNDD=$P(SPNDD,U,1) ;Get dd field name S SPNET=0,SPNET=$O(SPNTMP(154.101,SPNET)) I SPNET'="" S CL=0,CL=$O(SPNTMP(154.101,SPNET,CL)) S SPNDOC=$G(SPNTMP(154.101,SPNET,CL)) I SPNET'="" I SPNDOC'="" S SPMSG(SPLINE)="OBX|"_OBXCNT_"|ST|154.101^"_SPNDD_"||"_$G(SPNDOC) K SPNET,CL,SPNDOC,SPNDD,SPDATA,SPNTBL