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

BARDUTL.m

Go to the documentation of this file.
  1. BARDUTL ; IHS/SD/LSL - DATE UTILITIES FOR A/R PACKAGE ;
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**4,6,28**;OCT 26, 2005;Build 92
  1. ;
  1. ; IHS/SD/LSL - 02/20/04 - V1.7 Patch 5 - REMARK CODES
  1. ; New utility to read in string to local array for printing
  1. ;
  1. ; IHS/SD/LSL - 03/29/04 - V1.8
  1. ; Added TRANS utility to find all $$ for specific trans type
  1. ; on a bill.
  1. ; IHS/DIT/CPC - 20180427 CR9580 - Add Fileman to XML date conversion
  1. ; IHS/DIT/CPC - 20180427 CR5994 - Add utility to add wrapping break to a string at specified length.
  1. ;
  1. ; ********************************************************************
  1. ;
  1. SDT(X) ; EP - Y is set to the printable date ##/##/## from X (fileman date)
  1. N Y
  1. S Y=$S(+X>0:$E(X,4,5)_"/"_$E(X,6,7)_"/"_($E(X,1,3)+1700),1:"") ;Y2000
  1. Q Y
  1. ;start new code IHS/SD/SDR bar*1.8*6 4.1.3
  1. ; *********************************************************************
  1. SHDT(X) ; EP - Y is set to the printable date ##/##/## from X (fileman date)
  1. N Y
  1. S Y=$S(+X>0:$E(X,4,5)_"/"_$E(X,6,7)_"/"_$E(X,2,3),1:"") ;Y2000
  1. Q Y
  1. ;end new code bar*1.8*6
  1. ; *********************************************************************
  1. ;
  1. HDT(X) ;EP - Y is set to the printable date ##-##-## from X (fileman date)
  1. N Y
  1. S Y=$S(+X>0:$E(X,4,5)_"-"_$E(X,6,7)_"-"_($E(X,1,3)+1700),1:"") ;Y2000
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. CDT(X) ;EP - Y= date/time ##/##/##@##:## from X (fm date) for display in claim editor
  1. N Y
  1. I '+X S Y="" Q Y
  1. S Y=$E(X,4,5)_"/"_$E(X,6,7)_"/"_($E(X,1,3)+1700) ;Y2000
  1. I '$P(X,".",2) Q Y
  1. S BARTIME=$P(X,".",2)
  1. S BARTIME=BARTIME_"00"
  1. S Y=Y_"@"_$E(BARTIME,1,2)_":"_$E(BARTIME,3,4)
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. ;Start new code IHS/DIT/CPC BAR*1.8*28 CR8345 HEAT224215
  1. XDT(X) ;EP - Y=XML date/time CCYYMMDDTHH:MM:SS.MSS
  1. N Y
  1. I '+X S Y="" Q Y
  1. S Y=($E(X,1,3)+1700)_"-"_$E(X,4,5)_"-"_$E(X,6,7)_"T"
  1. I '$P(X,".",2) Q Y_"00:00:00.000"
  1. S BARTIME=$P(X,".",2)
  1. S BARTIME=BARTIME_"000000"
  1. S Y=Y_$E(BARTIME,1,2)_":"_$E(BARTIME,3,4)_":"_$E(BARTIME,5,6)_".000"
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. ;start new code IHS/SD/SDR bar*1.8*4 DD item 4.1.5.4
  1. ;
  1. TDT(X) ;EP - Y= date/time ##/##/##@##:##:## from X (fm date) for display of formatted trans date
  1. N Y
  1. I '+X S Y="" Q Y
  1. S Y=$E(X,4,5)_"/"_$E(X,6,7)_"/"_($E(X,1,3)+1700)
  1. I '$P(X,".",2) Q Y
  1. S BARTIME=$P(X,".",2)
  1. S BARTIME=BARTIME_"00"
  1. S Y=Y_"@"_$E(BARTIME,1,2)_":"_$E(BARTIME,3,4)_":"_$E(BARTIME,5,6)
  1. Q Y
  1. ; *********************************************************************
  1. ;end new code IHS/SD/SDR bar*1.8*4 DD item 4.1.5.4
  1. ;
  1. MDT(X) ;EP - printable date and time in menu header format
  1. S BAR("DATE")=+$E(X,6,7)_"-"_$P($T(MTHS+1),";;",+$E(X,4,5)+1)_"-"_($E(X,1,3)+1700) ;Y2000
  1. S BAR("TIME")=$P(X,".",2)
  1. I BAR("TIME")'="" D
  1. .S BAR("TIME")="."_BAR("TIME")
  1. .S BAR("TIME")=$E(X,8,15)+.0000001
  1. .S BAR("AMPM")=$S(BAR("TIME")>.1159999:"PM",1:"AM")
  1. .I BAR("TIME")>.1259999 S BAR("TIME")=BAR("TIME")-.12
  1. .S BAR("TIME")=+$E(BAR("TIME"),2,3)_":"_$E(BAR("TIME"),4,5)_" "_BAR("AMPM")
  1. .S BAR("TIME")=" "_BAR("TIME")
  1. S X=BAR("DATE")_BAR("TIME")
  1. K BAR("DATE"),BAR("TIME"),BAR("AMPM")
  1. Q X
  1. ; *********************************************************************
  1. ;
  1. MDT2(X) ;EP - printable date, letter format
  1. S X=+$E(X,6,7)_" "_$P($T(MTHS+1),";;",+$E(X,4,5)+1)_" "_($E(X,1,3)+1700) ;Y2000
  1. Q X
  1. ; *********************************************************************
  1. ;
  1. Y2KDT(X) ;EP - date from fileman to Y2K format Y=MMDDCCYY
  1. N Y
  1. I X="" Q X
  1. S Y=$E(X,4,7)_($E(X,1,3)+1700)
  1. Q Y
  1. ; *********************************************************************
  1. Y2KD2(X) ;EP - date from fileman to Y2K format Y=CCYYMMDD
  1. N Y
  1. I X="" Q X
  1. S Y=($E(X,1,3)+1700)_$E(X,4,7)
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. MTHS ;MONTHS
  1. ;;JAN;;FEB;;MAR;;APR;;MAY;;JUN;;JUL;;AUG;;SEP;;OCT;;NOV;;DEC
  1. ; *********************************************************************
  1. ;
  1. HRN(X) ;EP - Y is set to the printable HRN
  1. ; for patient BARP("PDFN") at location BARP("LDFN")
  1. S Y=$S('$G(BARP("PDFN")):"[no PAT]",'$G(BARP("LDFN")):"[no LOC]",$D(^AUPNPAT(BARP("PDFN"),41,BARP("LDFN"),0)):"[HRN:"_$P(^(0),U,2)_"]",1:"[no HRN]")
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. CSZ(X) ;EP - Y is set to the printable City, State ZIP CODE
  1. ; X incoming variable must = CITY^ST^ZIP
  1. S Y=$S($G(X)="":"no address",$P(X,U)="":"no city",'$P(X,U,2):"no state",$P($G(^DIC(5,$P(X,U,2),0)),U,2)="":"invalid state",'$P(X,U,3):"no zip",1:$P(X,U)_", "_$P(^(0),U,2)_" "_$P(X,U,3))
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. TM(X,Y) ;EP - FIGURE TOTAL MINUTES GIVEN FM DATE/TIMES IN X AND Y
  1. I X="" Q X
  1. I Y="" S X="" Q X
  1. D H^%DTC
  1. S BAR(1,1)=%H
  1. S BAR(1,2)=%T
  1. S X=Y
  1. D H^%DTC
  1. S BAR(2,1)=%H
  1. S BAR(2,2)=%T
  1. S BAR("D")=BAR(2,1)-BAR(1,1)*24*60*60
  1. S BAR("T")=BAR(2,2)-BAR(1,2)
  1. S BAR("TS")=BAR("D")+BAR("T")
  1. S X=BAR("TS")\60
  1. Q X
  1. ; *********************************************************************
  1. ;
  1. PAT(X) ;EP - DISPLAY PATIENT HEADER WITH IDENTIFIERS - X=DFN
  1. S $P(BAR("="),"=",80)=""
  1. W $$EN^BARVDF("IOF")
  1. W !,$$EN^BARVDF("RVN"),"PATIENT:",$$EN^BARVDF("RVF")," "
  1. S BAR("P0")=^DPT(X,0)
  1. W $P(BAR("P0"),"^",1)," ",$P(BAR("P0"),"^",2)
  1. S BAR("DOB")=$P(BAR("P0"),"^",3)
  1. W " ",$E(BAR("DOB"),4,5),"/",$E(BAR("DOB"),6,7),"/",($E(BAR("DOB"),1,3)+1700) ;Y2000
  1. S BAR("SSN")=$P(BAR("P0"),"^",9)
  1. W " ",$E(BAR("SSN"),1,3),"-",$E(BAR("SSN"),4,5),"-",$E(BAR("SSN"),6,9)
  1. W " ","HRN: ",$P($G(^AUPNPAT(X,41,DUZ(2),0)),"^",2)
  1. W !,BAR("=")
  1. Q
  1. ; *********************************************************************
  1. ;
  1. DATE(X) ;EP - ask beginning and ending date
  1. S %DT="AEP"
  1. S %DT("A")="Select "_$P("Beginning^Ending","^",X)_" Date: "
  1. D ^%DT
  1. Q Y
  1. ; *********************************************************************
  1. ;
  1. MSG(DATA,PRE,POST,BEEP) ;EP; Writes line to device
  1. N X,Y
  1. I PRE>0 F I=1:1:PRE W !
  1. W DATA
  1. I POST>0 F I=1:1:POST W !
  1. I $G(BEEP)>0 F I=1:1:BEEP W $C(7)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. ARDAYS ; EP
  1. ; Computed field (File 90050.0204, Field .07)
  1. N I,J,BAREND,CBAREND
  1. S J=D1
  1. S BAREND=0
  1. F I=1:1:3 D Q:'+J
  1. . S J=$O(^BARAC(DUZ(2),D0,4,J),-1) ; Previous entry
  1. . Q:'+J
  1. . S BAR(0)=$G(^BARAC(DUZ(2),D0,4,J,0))
  1. . S BARTMP=$P(BAR(0),U,2)+$P(BAR(0),U,4)-$P(BAR(0),U,5)-$P(BAR(0),U,6)
  1. . S BAREND=BAREND+BARTMP
  1. I '+J S X="" Q
  1. S BAREND=BAREND/3
  1. S BAR(0)=$G(^BARAC(DUZ(2),D0,4,D1,0))
  1. S CBAREND=$P(BAR(0),U,2)+$P(BAR(0),U,4)-$P(BAR(0),U,5)-$P(BAR(0),U,6)
  1. S X=CBAREND/BAREND
  1. Q
  1. ; *********************************************************************
  1. ;
  1. VARDAYS ; EP
  1. ; Computed field (File 90050.0205, Field .07)
  1. N I,J,BAREND,CBAREND
  1. S J=D2
  1. S BAREND=0
  1. F I=1:1:3 D Q:'+J
  1. . S J=$O(^BARAC(DUZ(2),D0,4,D1,1,J),-1) ; Previous entry
  1. . Q:'+J
  1. . S BAR(0)=$G(^BARAC(DUZ(2),D0,4,D1,1,J,0))
  1. . S BAREND=$P(BAR(0),U,2)+$P(BAR(0),U,4)-$P(BAR(0),U,5)-$P(BAR(0),U,6)
  1. I '+J S X="" Q
  1. S BAREND=BAREND/3
  1. S BAR(0)=$G(^BARAC(DUZ(2),D0,4,D1,1,D2,0))
  1. S CBAREND=$P(BAR(0),U,2)+$P(BAR(0),U,4)-$P(BAR(0),U,5)-$P(BAR(0),U,6)
  1. S X=CBAREND/BAREND
  1. Q
  1. ; *********************************************************************
  1. ;
  1. CARDAYS ; EP
  1. ; Computed field (File 90050.0205, Field .07)
  1. N I,J,BAREND,CBAREND
  1. S J=D2
  1. S BAREND=0
  1. F I=1:1:3 D Q:'+J
  1. . S J=$O(^BARAC(DUZ(2),D0,4,D1,2,J),-1) ; Previous entry
  1. . Q:'+J
  1. . S BAR(0)=$G(^BARAC(DUZ(2),D0,4,D1,2,J,0))
  1. . S BAREND=$P(BAR(0),U,2)+$P(BAR(0),U,4)-$P(BAR(0),U,5)-$P(BAR(0),U,6)
  1. I '+J S X="" Q
  1. S BAREND=BAREND/3
  1. S BAR(0)=$G(^BARAC(DUZ(2),D0,4,D1,2,D2,0))
  1. S CBAREND=$P(BAR(0),U,2)+$P(BAR(0),U,4)-$P(BAR(0),U,5)-$P(BAR(0),U,6)
  1. S X=CBAREND/BAREND
  1. Q
  1. ;
  1. ; ********************************************************************
  1. WP(BARSTR,BARRAY,BARLNGTH) ; EP ; IHS/DIT/CPC - 20180427 CR5994
  1. ; Used to read string into array where each line is less than
  1. ; specified length
  1. Q:'$D(BARSTR)!'$D(BARRAY)!'$D(BARLNGTH)
  1. S BARCNT=0
  1. F D READ Q:$L(BARSTR)=0
  1. K BARSTR,BARLNGTH,BARWORD,BARTXT,BARCNT
  1. Q
  1. ; ********************************************************************
  1. ;
  1. READ ; ; IHS/DIT/CPC - 20180427 CR5994
  1. ; Loop through String
  1. Q:$L(BARSTR)=0 ; Nothing left in string
  1. S BARWORD=0
  1. K BARTXT
  1. F D READWORD Q:$L(BARTXT)>BARLNGTH Q:$L(BARSTR)=0
  1. Q
  1. ; ********************************************************************
  1. ;
  1. READWORD ; ; IHS/DIT/CPC - 20180427 CR5994
  1. ; Loop each "word" of string
  1. S BARWORD=BARWORD+1
  1. S BARTXT=$P(BARSTR," ",1,BARWORD)
  1. I $L(BARTXT)>BARLNGTH D
  1. .;ADD CODE TO FIND BREAKING CHARACTER IN BARTXT LESS THAN BARLNGTH
  1. .;FOR NOW ADD A SPACE AT BARLNGTH-1
  1. .;REPEAT BARTXT SET
  1. .S BARSTR=$E(BARSTR,1,BARLNGTH-1)_" "_$E(BARSTR,BARLNGTH,)
  1. .S BARTXT=$P(BARSTR," ",1,BARWORD)
  1. I $L(BARSTR)=$L(BARTXT) D LASTLINE Q
  1. I $L(BARTXT)>BARLNGTH D SETLINE
  1. Q
  1. ; ********************************************************************
  1. ;
  1. SETLINE ;
  1. S BARCNT=BARCNT+1
  1. S BARIDR=BARRAY_"("_$J_","_BARCNT_")"
  1. S @BARIDR=$P(BARSTR," ",1,BARWORD-1)
  1. S BARSTR=$P(BARSTR," ",BARWORD,9999999999)
  1. Q
  1. ; ********************************************************************
  1. ;
  1. LASTLINE ;
  1. S BARCNT=BARCNT+1
  1. S BARIDR=BARRAY_"("_$J_","_BARCNT_")"
  1. S @BARIDR=BARSTR
  1. S BARSTR=""
  1. Q
  1. ; ********************************************************************
  1. ;
  1. TRANS(BARDUZ,BAR,BARTYPE) ; EP
  1. ; BARDUZ = DUZ(2)
  1. ; BAR = AR BILL IEN
  1. ; BARTYPE = TYPE OF TRANSACTION
  1. ; = A - Adjustment $
  1. ; = C - Copay $
  1. ; = P - Paid $
  1. ; = D - Deductible $
  1. I '+$G(BARDUZ) Q 0
  1. I '+$G(BAR) Q 0
  1. I $G(BARTYPE)="" Q 0
  1. K BARAMT
  1. N BARHOLD,BARTR
  1. S BARHOLD=DUZ(2)
  1. I '$D(^BARTR(DUZ(2),"AC",BAR)) Q 0
  1. S DUZ(2)=BARDUZ
  1. S BARTR=0
  1. F S BARTR=$O(^BARTR(DUZ(2),"AC",BAR,BARTR)) Q:'+BARTR D TRANS2
  1. S DUZ(2)=BARHOLD
  1. I '$D(BARAMT) Q 0
  1. Q +$G(BARAMT(BARTYPE))
  1. ; ********************************************************************
  1. ;
  1. TRANS2 ;
  1. Q:'$D(^BARTR(DUZ(2),BARTR,0))
  1. S BARAMT("C")=$G(BARAMT("C"))+$$GET1^DIQ(90050.03,BARTR,3.714)
  1. S BARAMT("D")=$G(BARAMT("D"))+$$GET1^DIQ(90050.03,BARTR,3.713)
  1. S BARAMT("A")=$G(BARAMT("A"))+$$GET1^DIQ(90050.03,BARTR,3.7)
  1. I $P($G(^BARTR(DUZ(2),BARTR,1)),U)=40 D
  1. . S BARAMT("P")=$G(BARAMT("P"))+$$GET1^DIQ(90050.03,BARTR,3.5)
  1. Q