| 1 | IVMUFNC3 ;ALB/CPM - BILLING TRANSMISSION UTILITIES ; 13-JUN-94
 | 
|---|
| 2 |  ;;Version 2.0 ; INCOME VERIFICATION MATCH ;; 21-OCT-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | REV(IVMREF,DFN,IVMCL,IVMTYP,IVMBF,IVMBT,IVMAB,IVMHLD) ; Interface w/ Rev fct.
 | 
|---|
| 6 |  ;  Input:   IVMREF  --  Bill reference number
 | 
|---|
| 7 |  ;              DFN  --  Pointer to the patient in file #2
 | 
|---|
| 8 |  ;            IVMCL  --  Bill Classification [ 1-Inpt, 2-Opt ]
 | 
|---|
| 9 |  ;           IVMTYP  --  Bill Type [ 2-Copayment, 3-Per Diem ]
 | 
|---|
| 10 |  ;            IVMBF  --  Bill From Date in FM format
 | 
|---|
| 11 |  ;            IVMBT  --  Bill To Date in FM format
 | 
|---|
| 12 |  ;            IVMAB  --  Amount Billed
 | 
|---|
| 13 |  ;           IVMHLD  --  Charge placed on hold? [ 1-Yes, 0-No ]
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ; Output:   New entry created in file #301.61
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  N IVMTDA,DA,DIK
 | 
|---|
| 18 |  I $G(IVMREF)=""!'$G(DFN) G REVQ
 | 
|---|
| 19 |  S IVMTDA=$O(^IVM(301.61,"B",IVMREF,0))
 | 
|---|
| 20 |  I 'IVMTDA S IVMTDA=$$ADD(IVMREF) I 'IVMTDA G REVQ
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  D NOW^%DTC
 | 
|---|
| 23 |  S $P(^IVM(301.61,IVMTDA,0),"^",2,12)=DFN_"^"_IVMCL_"^"_IVMTYP_"^"_IVMBF_"^"_IVMBT_"^"_$S($G(IVMHLD):"",1:DT)_"^"_IVMAB_"^^^^"_$S($G(IVMHLD):0,1:1),$P(^(1),"^",3,4)=%_"^"_DUZ
 | 
|---|
| 24 |  S DA=IVMTDA,DIK="^IVM(301.61," D IX1^DIK
 | 
|---|
| 25 | REVQ Q
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 | ADD(X) ; Add a new entry to file #301.61
 | 
|---|
| 28 |  ;  Input:     X  --  Reference number to be used as the .01 field
 | 
|---|
| 29 |  ;  Output:  IVM  --  Internal entry number to new entry, or 0.
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  N DA,DD,DO,DIE,DIC,DLAYGO,IVM,Y
 | 
|---|
| 32 |  I $G(X)="" S IVM=0 G ADDQ
 | 
|---|
| 33 |  S DIC="^IVM(301.61,",DIC(0)="L",DLAYGO=301.61 D FILE^DICN
 | 
|---|
| 34 |  S (DA,IVM)=+Y I DA<0 S IVM=0 G ADDQ
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  D NOW^%DTC
 | 
|---|
| 37 |  S DIE=DIC,DR="1.01////"_%_";1.02////"_DUZ D ^DIE
 | 
|---|
| 38 | ADDQ Q IVM
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | CHK(DFN) ; Is the insurance patient recorded in file #301.61?
 | 
|---|
| 42 |  ;  Input:   DFN  --  Pointer to the patient in file #2
 | 
|---|
| 43 |  ; Output:     1  --  Patient recorded in #301.61; otherwise, 0
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  Q $O(^IVM(301.61,"C",+$G(DFN),0))>0
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | FT1(IVMTDA) ; Entry point to build FT1 segment from file #301.61
 | 
|---|
| 49 |  ;  Input:  IVMTDA  --  Pointer to the transmission record in #301.61
 | 
|---|
| 50 |  ;          The HL7 variables HLFS, HLQ and HLECH must also be defined
 | 
|---|
| 51 |  ; Output:  String in the form of the HL7 FT1 segment
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  N IVMN,IVMY,IVMSEP
 | 
|---|
| 54 |  I '$G(IVMTDA) G FT1Q
 | 
|---|
| 55 |  S IVMN=$G(^IVM(301.61,IVMTDA,0)) I IVMN="" G FT1Q
 | 
|---|
| 56 |  S IVMSEP=$E(HLECH)
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  S $P(IVMY,HLFS,1)=1 ; set id
 | 
|---|
| 59 |  S $P(IVMY,HLFS,4)=$S($P(IVMN,"^",7):$$HLDATE^HLFNC($P(IVMN,"^",7)),1:HLQ) ; date generated
 | 
|---|
| 60 |  S $P(IVMY,HLFS,6)=$S($P(IVMN,"^",11):2,$P(IVMN,"^",10)&$P(IVMN,"^",13):4,$P(IVMN,"^",9)&$P(IVMN,"^",13):3,1:1) ; transaction type
 | 
|---|
| 61 |  S $P(IVMY,HLFS,7)=$P(IVMN,"^") ; transaction code
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ; - build extended transaction description
 | 
|---|
| 64 |  S $P(IVMY,HLFS,9)=$P(IVMN,"^",3)_IVMSEP_$P(IVMN,"^",4)_IVMSEP_$S($P(IVMN,"^",5):$$HLDATE^HLFNC($P(IVMN,"^",5)),1:HLQ)_IVMSEP_$S($P(IVMN,"^",6):$$HLDATE^HLFNC($P(IVMN,"^",6)),1:HLQ)
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  ; - build extended transaction amount
 | 
|---|
| 67 |  S $P(IVMY,HLFS,11)=$S($P(IVMN,"^",10)&$P(IVMN,"^",13):+$P(IVMN,"^",9),$P(IVMN,"^",9)&$P(IVMN,"^",13):$P(IVMN,"^",9),1:$P(IVMN,"^",8))
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 | FT1Q Q "FT1"_HLFS_$G(IVMY)
 | 
|---|