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

HBHCXMV.m

Go to the documentation of this file.
  1. HBHCXMV ;LR VAMC(IRMS)/MJT - POPULATE HBHC TRANSMIT FILE OR LOG PSEUDO SSN ERRORS; Feb 22, 2021@07:22
  1. ;;1.0;HOSPITAL BASED HOME CARE;**2,5,6,9,12,15,17,14,19,24,25,32**;NOV 01, 1993;Build 58
  1. ;
  1. ;Reference to:
  1. ; ^SC supported by ICR #10040
  1. ; ^DIC(4 supported by ICR #10090
  1. ; ^DG(40.8 supported by ICR #7024
  1. ;
  1. D START^HBHCXMV1
  1. LOOP ; Loop thru ^HBHC(632) "AC","N" cross-ref to create nodes in ^HBHC(634) => transmit
  1. S HBHCDFN="" F S HBHCDFN=$O(^HBHC(632,"AC","N",HBHCDFN)) Q:HBHCDFN="" D SETNODE
  1. EXIT ; Exit module
  1. D EXIT^HBHCXMV1
  1. Q
  1. SETNODE ; Set node in ^HBHC(634) (Transmit)
  1. S HBHCINFO=^HBHC(632,HBHCDFN,0),HBHCXMT4=$P(HBHCINFO,U,8),HBHCAPDT=$P(HBHCINFO,U,2),HBHCSSN=$P(^DPT($P(HBHCINFO,U),0),U,9)
  1. Q:$P(HBHCINFO,U,7)]"" ; cancelled/no show appointment
  1. Q:HBHCAPDT>HBHCLSDT ; Visit appointment date > HBHCLSDT (last date to include in transmit set up in ^HBHCFILE)
  1. I HBHCAPDT<2961001 D PCE^HBHCXMV1 Q
  1. I HBHCSSN'?9N D PSSN^HBHCXMV1 Q
  1. S HBHCPRV=+^HBHC(631.4,$P(HBHCINFO,U,4),0)
  1. ;HBH*1.0*32: pad provider number with leading zeroes instead of trailing spaces
  1. S:$L(HBHCPRV)'=4 HBHCPRV=$E("000",1,4-$L(HBHCPRV))_HBHCPRV
  1. ;HBH*1.0*32: HBHCHOSPX = division of visit location
  1. N HBHCHOSPX
  1. S HBHCHOSPX=$P(HBHCINFO,U,3)
  1. I HBHCHOSPX]"" D
  1. . S HBHCHOSPX=$P($G(^SC(HBHCHOSPX,0)),U,15)
  1. . Q:HBHCHOSPX=""
  1. . ;retrieve institution file pointer
  1. . S HBHCHOSPX=$P($G(^DG(40.8,HBHCHOSPX,0)),"^",7)
  1. . Q:HBHCHOSPX=""
  1. . ;retrieve station number
  1. . S HBHCHOSPX=$P($G(^DIC(4,HBHCHOSPX,99)),U)
  1. . Q:HBHCHOSPX=""
  1. . S:$L(HBHCHOSPX)'=7 HBHCHOSPX=HBHCHOSPX_$E(HBHCSP4,1,(7-($L(HBHCHOSPX))))
  1. ;if for some reason did not retrieve the institution's station number, use default.
  1. I HBHCHOSPX="" S HBHCHOSPX=HBHCHOSP
  1. ;HBHC*1.0*32 end
  1. S HBHCTIME=$P(HBHCAPDT,".",2) S:$L(HBHCTIME)<4 HBHCTIME=HBHCTIME_$E(HBHCZRO4,1,(4-($L(HBHCTIME)))) S:$L(HBHCTIME)>4 HBHCTIME=$E(HBHCTIME,1,4)
  1. S HBHCDATE=$E(HBHCAPDT,4,5)_$E(HBHCAPDT,6,7)_(1700+$E(HBHCAPDT,1,3))_HBHCTIME
  1. S HBHCLNME=$P($P(^DPT($P(HBHCINFO,U),0),U),",") S:$L(HBHCLNME)'=11 HBHCLNME=$S($L(HBHCLNME)<11:HBHCLNME_$E(HBHCSP10,1,11-$L(HBHCLNME)),1:$E(HBHCLNME,1,11))
  1. S HBHCQAI=$S(($L($P(HBHCINFO,U,16))=1)&($E(HBHCINFO,U,16)=""):HBHCSP1_$P(HBHCINFO,U,16),($L($P(HBHCINFO,U,16))=1)&($E(HBHCINFO,U,16)]""):$P(HBHCINFO,U,16)_HBHCSP1,$L($P(HBHCINFO,U,16))=2:$P(HBHCINFO,U,16),1:HBHCSP2)
  1. DX ; Dx
  1. D INIT,DX^HBHCUTL3
  1. S HBHCL=0
  1. F S HBHCL=$O(HBHCDX(HBHCL)) Q:HBHCL'>0 D
  1. . S HBHCDX=$P(HBHCDX(HBHCL)," ")
  1. . S HBHCDX=$P(HBHCDX,".")_$P(HBHCDX,".",2)
  1. . S HBHCDX(HBHCL)=$S($L(HBHCDX)'=8:HBHCDX_$E(HBHCSP8,1,8-$L(HBHCDX)),1:HBHCDX)
  1. ; Note: HBHCI initialized here vs in CPT loop, since need HBHCI to continue for each 10 CPT code iteration
  1. S (HBHCFLAG,HBHCI,HBHCL)=0 F S HBHCL=$O(HBHCDX(HBHCL)) Q:HBHCL'>0 S HBHCCNT1=HBHCCNT1+1,@("HBHCDX"_HBHCCNT1)=HBHCDX(HBHCL) D:(HBHCCNT1=5)&('HBHCFLAG) CPT D:HBHCCNT1=5 WRITE
  1. F D:'HBHCFLAG CPT D WRITE Q:HBHCFLAG
  1. Q
  1. CPT ; CPT Codes
  1. F HBHCCNT=1:1:10 S HBHCI=$O(^HBHC(632,HBHCDFN,2,HBHCI)) Q:HBHCI'>0 S HBHCNOD2=^HBHC(632,HBHCDFN,2,HBHCI,0) D SET
  1. S:HBHCI'>0 HBHCFLAG=1
  1. Q
  1. SET ; Set CPT variables
  1. I HBHCCNT<10 S @("HBHCCPT"_HBHCCNT)=$S($P(HBHCNOD2,U)]"":$E($P($G(^ICPT($P(HBHCNOD2,U),0)),U),1,5),1:HBHCSP5) S:$L(@("HBHCCPT"_HBHCCNT))'=5 @("HBHCCPT"_HBHCCNT)=@("HBHCCPT"_HBHCCNT)_$E(HBHCSP5,1,5-$L(@("HBHCCPT"_HBHCCNT)))
  1. I HBHCCNT=10 S HBHCCP10=$S($P(HBHCNOD2,U)]"":$E($P($G(^ICPT($P(HBHCNOD2,U),0)),U),1,5),1:HBHCSP5) S:$L(HBHCCP10)'=5 HBHCCP10=HBHCCP10_$E(HBHCSP5,1,5-$L(HBHCCP10))
  1. Q
  1. WRITE ; Write transmit record, separate records containing max 5 DX & 10 CPTs each are generated for same visit if > 5 DX or > 10 CPTs exist
  1. Q:(HBHCDX1=HBHCSP8)&(HBHCCPT1=HBHCSP5)
  1. L +^HBHC(634,0):$S($D(DILOCKTM):DILOCKTM,1:3) Q:'$T S HBHCNDX1=$P(^HBHC(634,0),U,3)+1 F Q:'$D(^HBHC(634,HBHCNDX1)) S HBHCNDX1=HBHCNDX1+1
  1. S $P(^HBHC(634,0),U,3)=HBHCNDX1,$P(^HBHC(634,0),U,4)=$P(^HBHC(634,0),U,4)+1 L -^HBHC(634,0)
  1. ;HBH*1.0*32 variable HBHCHOSP replaced by HBHCHOSPX
  1. S HBHCREC=HBHCFORM_HBHCHOSPX_HBHCSSN_HBHCDATE_HBHCPRV_HBHCLNME_HBHCQAI_HBHCDX1_HBHCDX2_HBHCDX3_HBHCDX4_HBHCDX5_HBHCCPT1_HBHCCPT2_HBHCCPT3_HBHCCPT4_HBHCCPT5_HBHCCPT6_HBHCCPT7_HBHCCPT8_HBHCCPT9_HBHCCP10_HBHCSP64
  1. S ^HBHC(634,HBHCNDX1,0)=HBHCREC,^HBHC(634,"B",$E(HBHCREC,1,30),HBHCNDX1)=""
  1. ; Flag record as filed
  1. L +^HBHC(632,HBHCDFN,0):$S($D(DILOCKTM):DILOCKTM,1:3) Q:'$T K:HBHCXMT4]"" ^HBHC(632,"AC",HBHCXMT4,HBHCDFN) S $P(^HBHC(632,HBHCDFN,0),U,8)="F",^HBHC(632,"AC","F",HBHCDFN)="",$P(^HBHC(632,HBHCDFN,0),U,9)=HBHCTDY L -^HBHC(632,HBHCDFN,0)
  1. ; Initialize QAI, DX & CPT fields to spaces after 1st record written to avoid multiple count(s) of same data when > 5 DX or > 10 CPTs exist
  1. S HBHCQAI=HBHCSP2
  1. INIT ; Initialize variables
  1. F HBHCK=1:1:5 S @("HBHCDX"_HBHCK)=HBHCSP8
  1. S (HBHCCNT,HBHCCNT1)=0,HBHCCP10=HBHCSP5
  1. F HBHCJ=1:1:9 S @("HBHCCPT"_HBHCJ)=HBHCSP5
  1. Q