VAFEOHL2 ;ALB/JLU/CAW;generates the HL7 message to be sent(con't);6/29/93
 ;;5.3;Registration;**38**;Aug 13, 1993
 ;
ORC ;sets up the ORC segment and the fields 1 to indicate if new or canceled
 N VAFEDHL
 S VAFEDLCT=VAFEDLCT+1
 S $P(VAFEDHL,HLFS,1)="ORC"
 S $P(VAFEDHL,HLFS,2)=$S($P(VAFEDST1,"^",3)="C":"CA",1:"NW")
 D LOG^VAFEDOHL
 Q
 ;
OBR ;sets up the OBR segment and the fields 4,7,8,9,14,22
 N VAFEDHL
 S VAFEDLCT=VAFEDLCT+1
 S $P(VAFEDHL,HLFS,1)="OBR"
 S $P(VAFEDHL,HLFS,5)=VAFEDDA_$E(HLECH)_"391.51"_$E(HLECH)_"L"
 S $P(VAFEDHL,HLFS,8)=$$HLDATE^HLFNC($P(VAFEDST1,U,1))
 S $P(VAFEDHL,HLFS,9)=HLQ
 S $P(VAFEDHL,HLFS,10)=HLQ
 S $P(VAFEDHL,HLFS,15)=HLQ
 S $P(VAFEDHL,HLFS,23)=$$HLDATE^HLFNC(VAFEDLP)
 D LOG^VAFEDOHL
 Q
 ;
OBX ;this subroutine set up the OBX segments and the fields 3,5
 N X,VAFEDOBX
 S VAFEDOBX=0
 I +$P($G(VAFEDDX(1)),U) D DIAG
 I VAFEDST2]"" D CPT
 Q
 ;
DIAG ;this subroutine will set up the diagnosics in the OBX.
 N VAFEDN,X,VAFEDD,I
 S VAFEDN=+$P(VAFEDDX(1),U)
 F X=2:1 S VAFEDC=$P(VAFEDDX(1),U,X) Q:'VAFEDC  DO
 .S Y=$O(^ICD9("BA",VAFEDC,0))
 .Q:'Y  I '$D(^ICD9(Y,0)) Q
 .S VAFEDD=$P(^ICD9(Y,0),U,3)
 .S VAFEDOBX=VAFEDOBX+1,VAFEDLCT=VAFEDLCT+1
 .S VAFEDHL="OBX"_HLFS_VAFEDOBX_HLFS_"CE"_HLFS_VAFEDC_$E(HLECH)_VAFEDD_$E(HLECH)_"I9"_HLFS_HLFS_HLQ
 .D LOG^VAFEDOHL
 I $D(VAFEDDX(2)) S I=1  F  S I=$O(VAFEDDX(I)) Q:'I  D
 .F X=2:1 S VAFEDC=$P(VAFEDDX(I),U,X) Q:'VAFEDC  DO
 ..S Y=$O(^ICD9("BA",VAFEDC,0))
 ..Q:'Y  I '$D(^ICD9(Y,0)) Q
 ..S VAFEDD=$P(^ICD9(Y,0),U,3)
 ..S VAFEDOBX=VAFEDOBX+1,VAFEDLCT=VAFEDLCT+1
 ..S VAFEDHL="OBX"_HLFS_VAFEDOBX_HLFS_"CE"_HLFS_VAFEDC_$E(HLECH)_VAFEDD_$E(HLECH)_"I9"_HLFS_HLFS_HLQ
 ..D LOG^VAFEDOHL
 Q
 ;
CPT ;this subroutine will set up the OBX with CPT codes.
 N X,VAFEDC,VAFEDD
 F X=1:1 S VAFEDC=$P(VAFEDST2,U,X) Q:'VAFEDC  DO
 .S Y=$O(^ICPT("B",VAFEDC,0))
 .Q:'Y  I '$D(^ICPT(Y,0)) Q
 .S VAFEDD=$P(^ICPT(Y,0),U,2)
 .S VAFEDOBX=VAFEDOBX+1,VAFEDLCT=VAFEDLCT+1
 .S VAFEDHL="OBX"_HLFS_VAFEDOBX_HLFS_"CE"_HLFS_VAFEDC_$E(HLECH)_VAFEDD_$E(HLECH)_"AS4"_HLFS_HLFS_HLQ
 .D LOG^VAFEDOHL
 Q
VAFEOHL2  ;ALB/JLU/CAW;generates the HL7 message to be sent(con't);6/29/93
 +1       ;;5.3;Registration;**38**;Aug 13, 1993
 +2       ;
ORC       ;sets up the ORC segment and the fields 1 to indicate if new or canceled
 +1        NEW VAFEDHL
 +2        SET VAFEDLCT=VAFEDLCT+1
 +3        SET $PIECE(VAFEDHL,HLFS,1)="ORC"
 +4        SET $PIECE(VAFEDHL,HLFS,2)=$SELECT($PIECE(VAFEDST1,"^",3)="C":"CA",1:"NW")
 +5        DO LOG^VAFEDOHL
 +6        QUIT 
 +7       ;
OBR       ;sets up the OBR segment and the fields 4,7,8,9,14,22
 +1        NEW VAFEDHL
 +2        SET VAFEDLCT=VAFEDLCT+1
 +3        SET $PIECE(VAFEDHL,HLFS,1)="OBR"
 +4        SET $PIECE(VAFEDHL,HLFS,5)=VAFEDDA_$EXTRACT(HLECH)_"391.51"_$EXTRACT(HLECH)_"L"
 +5        SET $PIECE(VAFEDHL,HLFS,8)=$$HLDATE^HLFNC($PIECE(VAFEDST1,U,1))
 +6        SET $PIECE(VAFEDHL,HLFS,9)=HLQ
 +7        SET $PIECE(VAFEDHL,HLFS,10)=HLQ
 +8        SET $PIECE(VAFEDHL,HLFS,15)=HLQ
 +9        SET $PIECE(VAFEDHL,HLFS,23)=$$HLDATE^HLFNC(VAFEDLP)
 +10       DO LOG^VAFEDOHL
 +11       QUIT 
 +12      ;
OBX       ;this subroutine set up the OBX segments and the fields 3,5
 +1        NEW X,VAFEDOBX
 +2        SET VAFEDOBX=0
 +3        IF +$PIECE($GET(VAFEDDX(1)),U)
               DO DIAG
 +4        IF VAFEDST2]""
               DO CPT
 +5        QUIT 
 +6       ;
DIAG      ;this subroutine will set up the diagnosics in the OBX.
 +1        NEW VAFEDN,X,VAFEDD,I
 +2        SET VAFEDN=+$PIECE(VAFEDDX(1),U)
 +3        FOR X=2:1
               SET VAFEDC=$PIECE(VAFEDDX(1),U,X)
               IF 'VAFEDC
                   QUIT 
               Begin DoDot:1
 +4                SET Y=$ORDER(^ICD9("BA",VAFEDC,0))
 +5                IF 'Y
                       QUIT 
                   IF '$DATA(^ICD9(Y,0))
                       QUIT 
 +6                SET VAFEDD=$PIECE(^ICD9(Y,0),U,3)
 +7                SET VAFEDOBX=VAFEDOBX+1
                   SET VAFEDLCT=VAFEDLCT+1
 +8                SET VAFEDHL="OBX"_HLFS_VAFEDOBX_HLFS_"CE"_HLFS_VAFEDC_$EXTRACT(HLECH)_VAFEDD_$EXTRACT(HLECH)_"I9"_HLFS_HLFS_HLQ
 +9                DO LOG^VAFEDOHL
               End DoDot:1
 +10       IF $DATA(VAFEDDX(2))
               SET I=1
               FOR 
                   SET I=$ORDER(VAFEDDX(I))
                   IF 'I
                       QUIT 
                   Begin DoDot:1
 +11                   FOR X=2:1
                           SET VAFEDC=$PIECE(VAFEDDX(I),U,X)
                           IF 'VAFEDC
                               QUIT 
                           Begin DoDot:2
 +12                           SET Y=$ORDER(^ICD9("BA",VAFEDC,0))
 +13                           IF 'Y
                                   QUIT 
                               IF '$DATA(^ICD9(Y,0))
                                   QUIT 
 +14                           SET VAFEDD=$PIECE(^ICD9(Y,0),U,3)
 +15                           SET VAFEDOBX=VAFEDOBX+1
                               SET VAFEDLCT=VAFEDLCT+1
 +16                           SET VAFEDHL="OBX"_HLFS_VAFEDOBX_HLFS_"CE"_HLFS_VAFEDC_$EXTRACT(HLECH)_VAFEDD_$EXTRACT(HLECH)_"I9"_HLFS_HLFS_HLQ
 +17                           DO LOG^VAFEDOHL
                           End DoDot:2
                   End DoDot:1
 +18       QUIT 
 +19      ;
CPT       ;this subroutine will set up the OBX with CPT codes.
 +1        NEW X,VAFEDC,VAFEDD
 +2        FOR X=1:1
               SET VAFEDC=$PIECE(VAFEDST2,U,X)
               IF 'VAFEDC
                   QUIT 
               Begin DoDot:1
 +3                SET Y=$ORDER(^ICPT("B",VAFEDC,0))
 +4                IF 'Y
                       QUIT 
                   IF '$DATA(^ICPT(Y,0))
                       QUIT 
 +5                SET VAFEDD=$PIECE(^ICPT(Y,0),U,2)
 +6                SET VAFEDOBX=VAFEDOBX+1
                   SET VAFEDLCT=VAFEDLCT+1
 +7                SET VAFEDHL="OBX"_HLFS_VAFEDOBX_HLFS_"CE"_HLFS_VAFEDC_$EXTRACT(HLECH)_VAFEDD_$EXTRACT(HLECH)_"AS4"_HLFS_HLFS_HLQ
 +8                DO LOG^VAFEDOHL
               End DoDot:1
 +9        QUIT