Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IBTRHLI3

IBTRHLI3.m

Go to the documentation of this file.
  1. IBTRHLI3 ;ALB/JWS - Receive and store 278 Response message ;05-JUN-2014
  1. ;;2.0;INTEGRATED BILLING;**517**;21-MAR-94;Build 240
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ;**Program Description**
  1. ; This pgm will process the indiv segments of the
  1. ; incoming 278 response msgs.
  1. ;
  1. ; * Each of these tags are called by IBTRHL2.
  1. ;
  1. ; This routine is based on IBCNEHL2 which was introduced with patch 300, and subsequently
  1. ; patched with patches 345, 416, and 438.
  1. ;
  1. ; Variables
  1. ; SEG = HL7 Seg Name
  1. ; IBSEG = Array of the segment
  1. ;
  1. Q ; No direct calls
  1. ;
  1. ZTP(IBSEG,RESIEN,ERROR,SLIEN) ; Process ZTP Subscriber date seg (X12 DTP segs)
  1. ; Input:
  1. ; IBSEG,RESIEN,SLIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N FLD,LEV,IBFDA,RIEN,LEV1
  1. I $G(IBSEG(4))="DTP 2000F" D D UP^IBTRHLI2("DTP","2000F") Q
  1. .D SLCHECK^IBTRHLI1
  1. .I $G(IBSEG(2))=472 S IBFDA(356.2216,LEV1,.11)=$P($G(IBSEG(3)),HLCMP),IBFDA(356.2216,LEV1,.17)=$P($G(IBSEG(3)),HLCMP,2) Q ;service date
  1. .I $G(IBSEG(2))=102 S IBFDA(356.2216,LEV1,.12)=$P($G(IBSEG(3)),HLCMP) Q ;cert issue date
  1. .I $G(IBSEG(2))="036" S IBFDA(356.2216,LEV1,.13)=$P($G(IBSEG(3)),HLCMP) Q ;cert expiration date
  1. .I $G(IBSEG(2))="007" S IBFDA(356.2216,LEV1,.14)=$P($G(IBSEG(3)),HLCMP),IBFDA(356.2216,LEV1,.16)=$P($G(IBSEG(3)),HLCMP,2) Q ;cert effective date
  1. S LEV="+2,"_RESIEN_","
  1. I $G(IBSEG(2))=439 S FLD=2.18 G ZTP1 ;Accident Date
  1. I $G(IBSEG(2))=484 S FLD=2.19 G ZTP1 ;Last Menstrual Period
  1. I $G(IBSEG(2))="ABC" S FLD=2.2 G ZTP1 ;Estimated DOB
  1. I $G(IBSEG(2))=431 S FLD=2.21 G ZTP1 ;Illness Date
  1. I $G(IBSEG(2))="AAH"!($G(IBSEG(2)))=435 S FLD=".07" G ZTP1
  1. I $G(IBSEG(2))="096" S FLD=2.22 G ZTP1 ;discharge date
  1. I $G(IBSEG(2))=102 S FLD=2.23 G ZTP1 ;Cert Issue Date
  1. I $G(IBSEG(2))="036" S FLD=2.24 G ZTP1 ;Cert Expiration Date
  1. I $G(IBSEG(2))="007" S FLD=2.25,IBFDA(356.22,RESIEN_",",2.26)=$P($G(IBSEG(3)),HLCMP,2) G ZTP1 ;Cert Effective Date
  1. Q
  1. ZTP1 ;
  1. S IBFDA(356.22,RESIEN_",",FLD)=$P($G(IBSEG(3)),HLCMP)
  1. D UP^IBTRHLI2("DTP","2000E")
  1. Q
  1. ;
  1. RXE(IBSEG,RESIEN,ERROR) ;RXE Pharmacy/Treatment Encoded Order seg
  1. ; Input:
  1. ; IBSEG,RESIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N LEV,IBFDA,RIEN
  1. S LEV=RESIEN_","
  1. S IBFDA(356.22,LEV,8.01)=$P($P($G(IBSEG(14)),HLREP),HLCMP) ;CR503 OXY EQUIP TYPE
  1. S IBFDA(356.22,LEV,8.02)=$P($P($G(IBSEG(14)),HLREP,2),HLCMP) ;CR504 OXY EQUIP TYPE
  1. S IBFDA(356.22,LEV,8.05)=$G(IBSEG(23)) ;CR506 OXY FLOW RATE
  1. S IBFDA(356.22,LEV,8.06)=$P($G(IBSEG(19)),HLCMP) ;CR507 DAILY OXY USE CNT
  1. S IBFDA(356.22,LEV,8.07)=$P($P($G(IBSEG(1)),HLCMP),HLSCMP) ;CR508 OXY USE PERIOD HR CNT
  1. S IBFDA(356.22,LEV,8.08)=$P($G(IBSEG(1)),HLCMP,8) ;CR509 RESP THERAPIST TEXT
  1. S IBFDA(356.22,LEV,9.07)=$G(IBSEG(16)) ;CR516 PORT OXY SYS FLOW
  1. S IBFDA(356.22,LEV,9.08)=$P($G(IBSEG(29)),HLCMP) ;CR517 OXY DEL SYS CODE
  1. S IBFDA(356.22,LEV,8.03)=$P($G(IBSEG(31)),HLCMP,1) ;CR518 OXY EQUIP TYPE
  1. D UP^IBTRHLI2("CR5","2000E")
  1. Q
  1. ZHS(IBSEG,RESIEN,ERROR,SLIEN) ; ZHS Healthcare services delivery seg
  1. ; Input:
  1. ; IBSEG,RESIEN,SLIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N CT,LEV,IBFDA,RIEN
  1. I $G(IBSEG(1))="HSD 2000F" D D UP^IBTRHLI2("HSD","2000F") Q
  1. .S LEV=SLIEN_","_RESIEN_","
  1. .S IBFDA(356.2216,LEV,5.01)=$G(IBSEG(2)) ;HCSD Quantity Qualifier
  1. .S IBFDA(356.2216,LEV,5.02)=$G(IBSEG(3)) ;HCSD Service Unit Count
  1. .S IBFDA(356.2216,LEV,5.03)=$G(IBSEG(4)) ;HCSD Units of Measurement
  1. .S IBFDA(356.2216,LEV,5.04)=$G(IBSEG(5)) ;HCSD Sample Selection Modulus
  1. .S IBFDA(356.2216,LEV,5.05)=$G(IBSEG(6)) ;HCSD Time Period Qualifier
  1. .S IBFDA(356.2216,LEV,5.06)=$G(IBSEG(7)) ;HCSD Period Count
  1. .S IBFDA(356.2216,LEV,5.07)=$G(IBSEG(8)) ;HCSD Delivery Frequency
  1. .S IBFDA(356.2216,LEV,5.08)=$G(IBSEG(9)) ;HCSD Delivery Time Pattern
  1. .Q
  1. S LEV=RESIEN_","
  1. S IBFDA(356.22,LEV,4.01)=$G(IBSEG(2)) ; quantity qualifier
  1. S IBFDA(356.22,LEV,4.02)=$G(IBSEG(3)) ; unit count
  1. S IBFDA(356.22,LEV,4.03)=$G(IBSEG(4)) ;measurement code
  1. S IBFDA(356.22,LEV,4.04)=$G(IBSEG(5)) ;selection modulus
  1. S IBFDA(356.22,LEV,4.05)=$G(IBSEG(6)) ;period qualifier
  1. S IBFDA(356.22,LEV,4.06)=$G(IBSEG(7)) ;period count
  1. S IBFDA(356.22,LEV,4.07)=$G(IBSEG(8)) ;freq code
  1. S IBFDA(356.22,LEV,4.08)=$G(IBSEG(9)) ;pattern
  1. D UP^IBTRHLI2("HSD","2000E")
  1. Q
  1. ;
  1. CTD(IBSEG,RESIEN,ERROR,PEIEN,SLIEN,SLPIEN) ; CTD Contact Data seg
  1. ; Input:
  1. ; IBSEG,RESIEN,PEIEN,SLIEN,SLPIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N RIEN,LEV
  1. I $G(IBSEG(1))="PER 2010EB" D D UP^IBTRHLI2("PER","2010EB") Q
  1. .S LEV=PEIEN_","_RESIEN_","
  1. .S IBFDA(356.2213,LEV,.04)="2010EB"
  1. .S IBFDA(356.2213,LEV,.05)="IC"
  1. .S IBFDA(356.2213,LEV,.06)=$P($G(IBSEG(2)),HLCMP) ;CONTACT NAME
  1. .S IBFDA(356.2213,LEV,.07)=$P($P($G(IBSEG(5)),HLREP),HLCMP,2) ;COMM NO QUAL1
  1. .S IBFDA(356.2213,LEV,.08)=$P($P($G(IBSEG(5)),HLREP,2),HLCMP,2) ;COMM NO QUAL2
  1. .S IBFDA(356.2213,LEV,.09)=$P($P($G(IBSEG(5)),HLREP,3),HLCMP,2) ;COMM NO QUAL3
  1. .S IBFDA(356.2213,LEV,1)=$P($P($G(IBSEG(5)),HLREP),HLCMP,8) ;CONTACT COMM NUM1
  1. .S IBFDA(356.2213,LEV,2)=$P($P($G(IBSEG(5)),HLREP,2),HLCMP,8) ;CONTACT COMM NUM2
  1. .S IBFDA(356.2213,LEV,3)=$P($P($G(IBSEG(5)),HLREP,3),HLCMP,8) ;CONTACT COMM NUM3
  1. .Q
  1. I $G(IBSEG(1))="PER 2010FB" D D UP^IBTRHLI2("PER","2010FB") Q
  1. .S LEV=SLPIEN_","_SLIEN_","_RESIEN_","
  1. .S IBFDA(356.22168,LEV,.04)="2010FB" ;PER loop identifier
  1. .S IBFDA(356.22168,LEV,.05)="IC" ;CONTACT FUNCTION CODE
  1. .S IBFDA(356.22168,LEV,.06)=$P($G(IBSEG(2)),HLCMP) ;CONTACT NAME
  1. .S IBFDA(356.22168,LEV,.07)=$P($P($G(IBSEG(5)),HLREP),HLCMP,2) ;COMM NO QUAL1
  1. .S IBFDA(356.22168,LEV,.08)=$P($P($G(IBSEG(5)),HLREP,2),HLCMP,2) ;COMM NO QUAL2
  1. .S IBFDA(356.22168,LEV,.09)=$P($P($G(IBSEG(5)),HLREP,3),HLCMP,2) ;COMM NO QUAL3
  1. .S IBFDA(356.22168,LEV,1)=$P($P($G(IBSEG(5)),HLREP),HLCMP,8) ;CONTACT COMM NUM1
  1. .S IBFDA(356.22168,LEV,2)=$P($P($G(IBSEG(5)),HLREP,2),HLCMP,8) ;CONTACT COMM NUM2
  1. .S IBFDA(356.22168,LEV,3)=$P($P($G(IBSEG(5)),HLREP,3),HLCMP,8) ;CONTACT COMM NUM3
  1. .Q
  1. Q
  1. NK1(IBSEG,RESIEN,ERROR,PEIEN) ;NK1 Next of Kin seg
  1. ; Input:
  1. ; IBSEG,RESIEN,PEIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N LEV,IBFDA,RIEN
  1. S LEV=PEIEN_","_RESIEN_","
  1. S IBFDA(356.2213,LEV,4.01)="2010EB" ;NM1 loop ident
  1. S IBFDA(356.2213,LEV,4.02)="L5" ;Entity ident
  1. S IBFDA(356.2213,LEV,4.03)=$P($P($G(IBSEG(2)),HLCMP,9),HLSCMP) ;Entity type qual
  1. S IBFDA(356.2213,LEV,4.04)=$P($G(IBSEG(2)),HLCMP) ;Contact last or company name
  1. S IBFDA(356.2213,LEV,4.05)=$P($G(IBSEG(2)),HLCMP,2) ;contact first
  1. S IBFDA(356.2213,LEV,4.06)=$P($G(IBSEG(2)),HLCMP,3) ;contact middle
  1. S IBFDA(356.2213,LEV,4.07)=$P($G(IBSEG(2)),HLCMP,4) ;contact suffix
  1. S IBFDA(356.2213,LEV,4.08)=$P($G(IBSEG(7)),HLCMP) ;ident code qualifier
  1. S IBFDA(356.2213,LEV,4.09)=$P($G(IBSEG(7)),HLCMP,2) ;ident code
  1. S IBFDA(356.2213,LEV,5)=$P($G(IBSEG(4)),HLCMP) ;contact addr line 1
  1. S IBFDA(356.2213,LEV,5.01)=$P($G(IBSEG(4)),HLCMP,2) ;contact addr line 2
  1. S IBFDA(356.2213,LEV,5.02)=$P($G(IBSEG(4)),HLCMP,3) ;contact city
  1. S IBFDA(356.2213,LEV,5.03)=$P($G(IBSEG(4)),HLCMP,4) ;contact state
  1. S IBFDA(356.2213,LEV,5.04)=$P($G(IBSEG(4)),HLCMP,5) ;contact zip
  1. S IBFDA(356.2213,LEV,5.05)=$P($G(IBSEG(4)),HLCMP,6) ;contact country
  1. S IBFDA(356.2213,LEV,5.06)=$P($G(IBSEG(4)),HLCMP,8) ;contact country subdivision
  1. D UP^IBTRHLI2("NM1","2010EB")
  1. Q
  1. ;
  1. PSL(IBSEG,RESIEN,ERROR,SLIEN) ;PSL Product/Service Line Item seg
  1. ; Input:
  1. ; IBSEG,RESIEN,SLIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N LEV,IBFDA,CT,RIEN,LEV1
  1. I $G(IBSEG(1))="SV1 2000F" D D UP^IBTRHLI2("SV1","2000F"),PSL2("P") Q
  1. .D SLCHECK^IBTRHLI1,PSL3("P")
  1. .S IBFDA(356.2216,LEV1,1.01)=$P($G(IBSEG(7)),HLCMP) ;SV101-1
  1. .S IBFDA(356.2216,LEV1,1.04)=$P($G(IBSEG(8)),HLCMP) ;SV101-3
  1. .S IBFDA(356.2216,LEV1,1.05)=$P($G(IBSEG(8)),HLCMP,2) ;SV101-4
  1. .S IBFDA(356.2216,LEV1,1.06)=$P($G(IBSEG(8)),HLCMP,4) ;SV101-5
  1. .S IBFDA(356.2216,LEV1,1.07)=$P($G(IBSEG(8)),HLCMP,5) ;SV101-6
  1. .S IBFDA(356.2216,LEV1,1.08)=$G(IBSEG(9)) ;SV101-7
  1. .;S IBFDA(356.2216,LEV1,1.03)=$P($G(IBSEG(7)),HLCMP,5) ;SV101-8
  1. .S IBFDA(356.2216,LEV1,1.09)=$G(IBSEG(15)) ;SV102
  1. .;S IBFDA(356.2216,LEV1,1.1)=$P($G(IBSEG(12)),HLCMP,2) ;SV103
  1. .S IBFDA(356.2216,LEV1,1.11)=$P($G(IBSEG(12)),HLCMP) ;SV104
  1. .S IBFDA(356.2216,LEV1,2.05)=$G(IBSEG(47)) ;SV111
  1. .S IBFDA(356.2216,LEV1,2.09)=$G(IBSEG(48)) ;SV120
  1. .Q
  1. I $G(IBSEG(1))="SV2 2000F" D D UP^IBTRHLI2("SV2","2000F"),PSL2("I") Q
  1. .D SLCHECK^IBTRHLI1,PSL3("I")
  1. .S IBFDA(356.2216,LEV1,2.06)=$G(IBSEG(17)) ;SV201
  1. .S IBFDA(356.2216,LEV1,1.01)=$P($G(IBSEG(7)),HLCMP) ;SV202-1
  1. .S IBFDA(356.2216,LEV1,1.04)=$P($G(IBSEG(8)),HLCMP) ;SV202-3
  1. .S IBFDA(356.2216,LEV1,1.05)=$P($G(IBSEG(8)),HLCMP,2) ;SV202-4
  1. .S IBFDA(356.2216,LEV1,1.06)=$P($G(IBSEG(8)),HLCMP,4) ;SV202-5
  1. .S IBFDA(356.2216,LEV1,1.07)=$P($G(IBSEG(8)),HLCMP,5) ;SV202-6
  1. .S IBFDA(356.2216,LEV1,1.08)=$G(IBSEG(9)) ;SV202-7
  1. .;S IBFDA(356.2216,LEV1,1.03)=$P($G(IBSEG(7)),HLCMP,5) ;SV202-8
  1. .S IBFDA(356.2216,LEV1,1.09)=$G(IBSEG(15)) ;SV203
  1. .S IBFDA(356.2216,LEV1,1.11)=$P($G(IBSEG(12)),HLCMP) ;SV205
  1. .S IBFDA(356.2216,LEV1,2.07)=$G(IBSEG(13)) ;SV206
  1. .S IBFDA(356.2216,LEV1,2.09)=$G(IBSEG(48)) ;SV210
  1. .Q
  1. I $G(IBSEG(1))="SV3 2000F" D D UP^IBTRHLI2("SV3","2000F"),PSL2("D") Q
  1. .D SLCHECK^IBTRHLI1,PSL3("D")
  1. .S IBFDA(356.2216,LEV1,1.01)=$P($G(IBSEG(7)),HLCMP) ;SV301-1
  1. .S IBFDA(356.2216,LEV1,1.04)=$P($G(IBSEG(8)),HLCMP) ;SV301-3
  1. .S IBFDA(356.2216,LEV1,1.05)=$P($G(IBSEG(8)),HLCMP,2) ;SV301-4
  1. .S IBFDA(356.2216,LEV1,1.06)=$P($G(IBSEG(8)),HLCMP,4) ;SV301-5
  1. .S IBFDA(356.2216,LEV1,1.07)=$P($G(IBSEG(8)),HLCMP,5) ;SV301-6
  1. .S IBFDA(356.2216,LEV1,1.08)=$G(IBSEG(9)) ;SV301-7
  1. .;S IBFDA(356.2216,LEV1,1.03)=$P($G(IBSEG(7)),HLCMP,5) ;SV301-8
  1. .S IBFDA(356.2216,LEV1,1.09)=$G(IBSEG(15)) ;SV302
  1. .S IBFDA(356.2216,LEV1,1.11)=$P($G(IBSEG(12)),HLCMP) ;SV306
  1. .S IBFDA(356.2216,LEV1,3.06)=$G(IBSEG(17)) ;SV305
  1. .S IBFDA(356.2216,LEV1,3.01)=$P($G(IBSEG(33)),HLCMP) ;SV304-1
  1. .S IBFDA(356.2216,LEV1,3.02)=$P($G(IBSEG(33)),HLCMP,2) ;SV304-2
  1. .S IBFDA(356.2216,LEV1,3.03)=$P($G(IBSEG(33)),HLCMP,4) ;SV304-3
  1. .S IBFDA(356.2216,LEV1,3.04)=$P($G(IBSEG(33)),HLCMP,5) ;SV304-4
  1. .S IBFDA(356.2216,LEV1,3.05)=$P($G(IBSEG(33)),HLCMP,9) ;SV304-5
  1. .Q
  1. I $G(IBSEG(1))="TOO 2000F" D D UP^IBTRHLI2("TOO","2000F") Q
  1. .S LEV="+3,"_SLIEN_","_RESIEN_","
  1. .S IBFDA(356.22164,LEV,.01)=$P($G(IBSEG(7)),HLCMP,2) ;TOO02
  1. .S IBFDA(356.22164,LEV,.02)=$P($G(IBSEG(33)),HLCMP) ;TOO03-1
  1. .S IBFDA(356.22164,LEV,.03)=$P($G(IBSEG(33)),HLCMP,2) ;TOO03-2
  1. .S IBFDA(356.22164,LEV,.04)=$P($G(IBSEG(33)),HLCMP,4) ;TOO03-3
  1. .S IBFDA(356.22164,LEV,.05)=$P($G(IBSEG(33)),HLCMP,5) ;TOO03-4
  1. .S IBFDA(356.22164,LEV,.06)=$P($G(IBSEG(33)),HLCMP,9) ;TOO03-5
  1. .Q
  1. I $G(IBSEG(1))="PWK 2000F" D D UP^IBTRHLI2("PWK","2000F") Q
  1. .S LEV="+3,"_SLIEN_","_RESIEN_","
  1. .S IBFDA(356.22166,LEV,.01)=$P($G(IBSEG(19)),HLCMP) ;PWK01
  1. .S IBFDA(356.22166,LEV,.02)=$G(IBSEG(20)) ;PWK02
  1. .S IBFDA(356.22166,LEV,.03)=$P($G(IBSEG(19)),HLCMP,2) ;PWK03
  1. .S IBFDA(356.22166,LEV,.04)=$P($G(IBSEG(19)),HLCMP,3) ;PWK04
  1. .Q
  1. I $G(IBSEG(1))="PWK 2000E" D D UP^IBTRHLI2("PWK","2000E") Q
  1. .S LEV="+2,"_RESIEN_","
  1. .S CT=$O(^IBT(356.22,RESIEN,11,"A"),-1)+1
  1. .S IBFDA(356.2211,LEV,.01)=$P($G(IBSEG(19)),HLCMP) ;RPT TYPE CODE
  1. .S IBFDA(356.2211,LEV,.02)=$G(IBSEG(20)) ;RPT TRANS CODE
  1. .S IBFDA(356.2211,LEV,.03)=$P($G(IBSEG(19)),HLCMP,2) ;ATTACHMENT CTL #
  1. .S IBFDA(356.2211,LEV,.04)=$P($G(IBSEG(19)),HLCMP,3) ;ATTACHMENT DESC
  1. Q
  1. PSL2(TYPE) ;
  1. N PTR
  1. I $D(ERROR) Q
  1. ; I National Drug code type (5-4-2 format) set NDC Code #1
  1. I $P($G(IBSEG(7)),HLCMP)="N4" D
  1. .S IBFDA(356.2216,LEV1,12.01)=$P($G(IBSEG(7)),HLCMP,2)
  1. S PTR=$$CODE($P($G(IBSEG(7)),HLCMP),$P($G(IBSEG(7)),HLCMP,2))
  1. S IBFDA(356.2216,LEV1,1.02)=PTR ;SV101-2, SV201-2, SV301-2
  1. I TYPE'="D" S IBFDA(356.2216,LEV1,1.1)=$P($G(IBSEG(12)),HLCMP,2) ;SV103, SV204
  1. K ERROR
  1. D FILE^DIE("","IBFDA","ERROR")
  1. I $D(ERROR) D ERR^IBTRHLI2($P(IBSEG(1)," ")_" Loop "_$P(IBSEG(1)," ",2),$P(IBSEG(1)," ",2))
  1. I $P($G(IBSEG(7)),HLCMP,5)="" Q
  1. S PTR=$$CODE($P($G(IBSEG(7)),HLCMP),$P($G(IBSEG(7)),HLCMP,5)) ;SV101-8, SV202-8, SV301-8
  1. S IBFDA(356.2216,LEV1,1.03)=PTR
  1. ; I National Drug code type (5-4-2 format) set NDC Code #2
  1. I $P($G(IBSEG(7)),HLCMP)="N4" S IBFDA(356.2216,LEV1,12.02)=$P($G(IBSEG(7)),HLCMP,5)
  1. K ERROR
  1. D FILE^DIE("","IBFDA","ERROR")
  1. I $D(ERROR) D ERR^IBTRHLI2($P(IBSEG(1)," ")_" Loop "_$P(IBSEG(1)," ",2),$P(IBSEG(1)," ",2))
  1. Q
  1. ;
  1. PSL3(TYPE) ;
  1. ; this is being created here due to file SCREENing on field 356.2216, 1.01 needs 1.12 set 1st
  1. K ERROR
  1. S IBFDA(356.2216,LEV1,1.12)=TYPE ;Set service line type
  1. D FILE^DIE("","IBFDA","ERROR")
  1. I $D(ERROR) D ERR^IBTRHLI2($P(IBSEG(1)," ")_" Loop "_$P(IBSEG(1)," ",2),$P(IBSEG(1)," ",2))
  1. Q
  1. ;
  1. CODE(TYPE,CODE) ; obtain Variable Procedure Code pointer
  1. I $G(RIEN(2)),RIEN(2)'=$G(SLIEN) S SLIEN=RIEN(2),LEV=SLIEN_","_RESIEN_","
  1. N SCRN,PTR
  1. S (PTR,SCRN)=""
  1. I TYPE="HC"!(TYPE="AD") D
  1. .S PTR=$$FIND1^DIC(81,,"P",CODE,"B",SCRN)
  1. .I PTR S PTR=PTR_";ICPT("
  1. I TYPE="ID"!(PTR="ZZ") D
  1. .S PTR=$$FIND1^DIC(80.1,,"P",CODE,"AB",SCRN)
  1. .I PTR S PTR=PTR_";ICD0("
  1. Q PTR
  1. ;
  1. NTE(IBSEG,RESIEN,ERROR) ;NTE Notes seg
  1. ; Input:
  1. ; IBSEG,RESIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N LEV,IBFDA,RIEN
  1. I $G(IBSEG(4))="MSG 2000E" D Q
  1. .S LEV=RESIEN_","
  1. .S IBFDA(1)=$G(IBSEG(3))
  1. .D WP^DIE(356.22,LEV,12,"","IBFDA","ERROR")
  1. .I $D(ERROR) D ERR^IBTRHLI2("Problem loading MSG Loop 2000E segment data","2000E")
  1. .Q
  1. I $G(IBSEG(4))="MSG 2000F" D Q
  1. .S LEV=SLIEN_","_RESIEN_","
  1. .S IBFDA(1)=$G(IBSEG(3))
  1. .D WP^DIE(356.2216,LEV,7,"","IBFDA","ERROR")
  1. .I $D(ERROR) D ERR^IBTRHLI2("Problem loading MSG Loop 2000F segment data","2000F")
  1. .Q
  1. Q
  1. ;
  1. DG1(IBSEG,RESIEN,ERROR,SLIEN) ;
  1. ; Input:
  1. ; IBSEG,RESIEN,SLIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N CT,LEV,IBFDA,RIEN,LEV1,LEV2,PTR
  1. I $G(IBSEG(11))="HI 2000F" D Q
  1. .D SLCHECK^IBTRHLI1
  1. .S LEV="+3,"_SLIEN_","_RESIEN_","
  1. .S IBFDA(356.2316,LEV,.01)=$G(IBSEG(1)) ;HI sequence
  1. .S IBFDA(356.2316,LEV,.02)=$G(IBSEG(17)) ;Code list qualifier
  1. .D UP^IBTRHLI2("HI","2000F")
  1. .I '$G(RIEN(3)) Q
  1. .S LEV2=RIEN(3)_","_RESIEN_","
  1. .S PTR=$$CODE1($G(IBSEG(17)),$P($G(IBSEG(3)),HLCMP))
  1. .S IBFDA(356.2316,LEV2,.03)=PTR ;Code
  1. .K ERROR
  1. .D FILE^DIE("","IBFDA","ERROR")
  1. .I $D(ERROR) D ERR^IBTRHLI2("HI Loop 2000F","2000F") Q
  1. .Q
  1. S LEV="+2,"_RESIEN_","
  1. S IBFDA(356.223,LEV,.01)=$G(IBSEG(17)) ;Code list qualifier
  1. S IBFDA(356.223,LEV,.03)=$G(IBSEG(5)) ;Date
  1. D UP^IBTRHLI2("HI","2000E")
  1. S LEV2=RIEN(2)_","_RESIEN_","
  1. S PTR=$$CODE1($G(IBSEG(17)),$P($G(IBSEG(3)),HLCMP))
  1. S IBFDA(356.223,LEV2,.02)=PTR ;Code
  1. K ERROR
  1. D FILE^DIE("","IBFDA","ERROR")
  1. I $D(ERROR) D ERR^IBTRHLI2("HI Loop 2000E","2000E") Q
  1. Q
  1. CODE1(TYPE,CODE) ; obtain Variable Procedure Code pointer
  1. N SCRN,PTR
  1. S (PTR,SCRN)=""
  1. I TYPE="DR" D
  1. .S PTR=$$FIND1^DIC(80.2,,"P",CODE,"B",SCRN)
  1. .I PTR S PTR=PTR_";ICD("
  1. I TYPE="LOI" D
  1. .S CODE=$P(CODE,"-")
  1. .S PTR=$$FIND1^DIC(95.3,,"P",CODE,"B",SCRN)
  1. E D
  1. .S CODE=$E(CODE,1,3)_"."_$E(CODE,4,99) ;1/31/15 decimals stripped for transmitting
  1. .S PTR=$$FIND1^DIC(80,,"P",CODE,"AB",SCRN)
  1. .I PTR S PTR=PTR_";ICD9(" Q
  1. .; IF xxx.xx is not found, try xxxx.xx if 1st char = 'E'
  1. .I $E(CODE)'="E" Q
  1. .S CODE=$E(CODE,1,4)_"."_$E(CODE,5,99) ; 2/5/15 there are some 4 char 1st dec half of ICD9 codes
  1. .S PTR=$$FIND1^DIC(80,,"P",CODE,"AB",SCRN)
  1. .I PTR S PTR=PTR_";ICD9(" Q
  1. Q PTR
  1. ;
  1. RXA(IBSEG,RESIEN,ERROR) ;RXA Pharmacy/Treatment Admin seg
  1. ; Input:
  1. ; IBSEG,RESIEN
  1. ;
  1. ; Output:
  1. ; ERROR
  1. N LEV,IBFDA,RIEN
  1. S LEV=RESIEN_","
  1. S IBFDA(356.22,LEV,7.05)=$G(IBSEG(1)) ;TREATMENT SERIES #
  1. S IBFDA(356.22,LEV,7.06)=$G(IBSEG(2)) ;TREATMENT COUNT
  1. S IBFDA(356.22,LEV,7.07)=$P($G(IBSEG(9)),HLREP) ;SUBLUXATION LEVEL CODE#1
  1. S IBFDA(356.22,LEV,7.08)=$P($G(IBSEG(9)),HLREP,2) ;SUBLUXATION LEVEL CODE#2
  1. D UP^IBTRHLI2("CR2","2000E")
  1. Q
  1. ;
  1. FNDCT(DFN,EVNTDT,RESIEN) ; find matching CT entry in file 356
  1. ; DFN - file 2 ien
  1. ; EVNTDT - event date from 356.22/.07
  1. ; RESIEN - ien of the response in file 356.22
  1. ;
  1. ; returns file 356 ien of matching ct entry or null if no match found
  1. ;
  1. N CTIEN,EDT,EVTYPE,INPAT,RES,STOPFLG
  1. S RES=""
  1. I +$G(DFN)>0,+$G(EVNTDT)>0,+$G(RESIEN)>0 D
  1. .S EDT=$P(EVNTDT,"-")
  1. .S INPAT=$S($P($G(^IBT(356.22,RESIEN,0)),U,4)="I":1,1:0)
  1. .I INPAT S STOPFLG=0 F EVTYPE=1,5 D Q:STOPFLG
  1. ..S CTIEN=+$O(^IBT(356,"APTY",DFN,EVTYPE,EDT,"")) I CTIEN>0 S RES=CTIEN,STOPFLG=1
  1. ..Q
  1. .I 'INPAT S EVTYPE=2,CTIEN=+$O(^IBT(356,"APTY",DFN,EVTYPE,EDT,"")) S:CTIEN>0 RES=CTIEN
  1. .Q
  1. Q RES