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

ACHSRPFU.m

Go to the documentation of this file.
  1. ACHSRPFU ; IHS/OIT/FCJ - PRINT CHS FORM AND DATA 3 OF 3;JUL 10, 2008 ; 30 Jun 2011 10:10 AM
  1. ;;3.1;CONTRACT HEALTH MGMT SYSTEM;**18,19,20**;JUN 11,2001
  1. ;ACHS*3.1*18 4.29.2010 IHS.OIT.FCJ NEW ROUTINE
  1. ;SET VARIABLES IN TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN
  1. ;CALLED BY ACHSRPF1
  1. ;
  1. INS ;
  1. S ACHSIPRM="N" ;SET PRIMARY INS FLAG TO NO
  1. D FORMAT ;GET INS INF
  1. D SB1^ACHSRPF
  1. S N="" ;INITIALIZE INS SUBSCRIPT
  1. ;
  1. PONUM ; -- Field 1 : DCR #, Document type, PDO number.
  1. ;
  1. S ACHSDOFY=$P(^ACHSF(DUZ(2),"D",ACHSDIEN,0),U,27)
  1. S ACHSCTYP=$S($P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,2)),U,9)'="":$P(^ACHSF(DUZ(2),"D",ACHSDIEN,2),U,9),1:"")
  1. I $D(ACHSCTYP),ACHSCTYP'="" S ACHSCTYP=$P(^ACHSCTYP(ACHSCTYP,0),U,2)
  1. S ACHSDHHS="HHSI"_$P($G(^ACHSF(DUZ(2),0)),U,11)_ACHSDOFY_$E(ACHSORDN,3,5)_$E(ACHSORDN,7,11)_ACHSCTYP
  1. S ACHS3TY="" I $$PARM^ACHS(2,20)="Y" S ACHS3TY=$S(ACHSTYPV=1:323,ACHSTYPV=2:324,1:325) ;ACHS*3.1*19
  1. S ACHSPO=$E($P(^ACHSF(DUZ(2),"D",ACHSDIEN,0),U,27),3)_ACHSORDN
  1. ;ACHS*3.1*19 MODIFIED DCR IN NEXT LINE
  1. I $$PARM^ACHS(2,18)="N" D S ACHSDCR=""
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,0)=ACHSPO_U_ACHSDHHS_U_ACHSTYPE_U_ACHSDCR_U_ACHS3TY_U_ACHSSF_U_$S($D(ACHSBLKF):1,1:"")_U_E(11)_U_ACHSTYPV
  1. ;
  1. ORDFAC ;
  1. ;$G(B(1)) ORDERING FACILITY NAME
  1. ;$G(B(4)) ORDERING FACILITY NUMBER
  1. ;$G(B(2)) ORDERING FACILITY ADDRESS
  1. ;$G(B(3)) ORDERING FACILITY ADDRESS
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,0)=^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,0)_U_$G(B(1))_U_$G(B(4))_U_$G(B(2))_U_$G(B(3))
  1. ;
  1. PAT ;Pat Ident-Box 2
  1. ;A(2)-PATIENT NAME
  1. ;A(3)-PATIENT CITY, STATE, ZIP
  1. ;A(11)-SSN
  1. ;V=VERIFIED BY SSA;A=SSN ADDED BY SSA;N=FAC SSN NOT = TO SSA SSN;D=SSN MATCHES SSA-DATA DIFFERS;P=PEND VER;X=SSA COULD NOT VERIFY/SUPPLY SSN
  1. S ACHSSNS="" I $G(DFN) S ACHSSSNS=$$SSV^ACHSTX3(DFN) I "PVX"[ACHSSSNS S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1),U,3)=ACHSSNS
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1)=$G(A(2))_U_$G(A(3))_U_$G(A(11))_U_ACHSSNS
  1. I $D(ACHSBLKF) S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1),U)="** BLANKET **"
  1. PATO ; OTHER INFO
  1. ;A(1)-FACHRN
  1. ;A(4)-A(5) AGE SEX COMCODE
  1. ;A(7)-DESCRIPTION
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1)=^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1)_U_$E($G(A(1)),1,27)_U_$G(A(4))_" "_$G(A(5))_U_"Desc: "_$G(A(7))
  1. ;
  1. INSPRM ;Primary INS INFO
  1. ;Field 3.a. : Name of Policy Holder.
  1. I ACHSIPRM="Y" D
  1. .S N=$O(I("P",N))
  1. .S ACHSIPRM=N
  1. .S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,"I"),U)=$E(I(N,1),1,22)
  1. I N'="" D
  1. .;I(N,2)-Field 3.b. : Plan Name.
  1. .;I(N,3)-Field 3.c. : Insurer's address.
  1. .;I(N,4)-Insurer's addrs, cont.
  1. .;I(N,5)-Field 3.d. : Insurer's Policy Number.
  1. .;I(N,6)-Field 3.e. : Insurer's Coverage Type.
  1. .;I(N,7)-Field 3.f. : Insurer's Effective Date.
  1. .;I(N,8)- ;Field 3.g :Termination date
  1. .S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,"I")=^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,"I")_U_$E($G(I(N,2)),1,29)_U_$G(I(N,3))_U_$G(I(N,4))_U_$G(I(N,5))
  1. .S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,"I")=^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,"I")_U_$G(I(N,6))_U_$$FMTE^XLFDT($G(I(N,7)))_U_$$FMTE^XLFDT($G(I(N,8)))
  1. ;
  1. INSOTH1 ; other ins Box 3.h
  1. S N="",I=0
  1. I $D(I("B")) F S N=$O(I("B",N)) S I=I+2 Q:(N'?1N.N)!(I>6) D
  1. .S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,"I"),U,7+I)=$P(I("B",N),U,1) ;INSURANCE TYPE
  1. .S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,"I"),U,8+I)=$P(I("B",N),U,2) ;INSURANCE EFFECTIVE DATE
  1. ;
  1. FIN ;
  1. ;$G(E(9))-EST CHARGES BOX 8
  1. ;$G(F(7))-COMMON ACCOUNT NUMBER BOX 9
  1. ;$G(F(9))-OBJECT CLASS CODE BOX 10
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1)=^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1)_U_$G(E(9))_U_$G(F(7))_U_$G(F(9))
  1. ;
  1. DOS ;
  1. ;C(5)-AUTH FROM DATE-BOX 11
  1. ;C(6)-AUTH TO DATE-BOX 11
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1)=^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,1)_U_$G(C(5))_U_$G(C(6))
  1. DIAG ;
  1. ;R("D",1)-R("D",2)-R("D",3)-DIAGNOSIS NARATIVE-BOX 13
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,2)=$G(R("D",1))_U_$G(R("D",2))_U_$G(R("D",3))
  1. PROC ;
  1. ;R("P",1)-F(8)-R("P",2)-R("P",3)-R("P",4)-PROCEDURE NARATIVE-SSC-BOX 12
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,2)=^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,2)_U_$G(R("P",1))_U_$G(R("P",2))_U_$G(R("P",3))_U_$G(R("P",4))_U_"SCC: "_$G(F(8))
  1. REF ;
  1. ;R(1)-REFERRING PHY-BOX 14
  1. ;R(2)-Medical Priority-BOX 16
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,2)=^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,2)_U_$G(R(1))_U_$G(R(2))
  1. ;
  1. RATE ;PRICING INFORMATION SEGMENT
  1. ;F(6) MEDICARE PROVIDER NUM Skip contract section
  1. I ACHSMPP S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,3)=F(6) G RATE2
  1. ;CONTRACT-AGREEMENT-RATE QUOT OR OPEN MARKET-BOX 17 OF FORM
  1. S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,3),U,2)=$S(D(10)=13:"C",D(10)=24:"A",D(10)=37:"R",1:"O")
  1. I $D(D(9)) D
  1. .I $P($G(^ACHSF(DUZ(2),0)),U,8)="Y" S ^TMP=D(9) Q
  1. .I $E(D(9),1,3)'="HHS",'$F("235^239^241^242^243^244^245^246^247^248^249^285",$E(D(9),1,3)) S D(9)="HHSI"_ACHSARCO_"-"_D(9)
  1. .I $E(D(9),1,3)'="HHS",$F("235^239^241^242^243^244^245^246^247^248^249^285",$E(D(9),1,3)) S D(9)="HHSI"_"-"_D(9)
  1. .S ACHSLTH=$L(D(9)) I $E(D(9),ACHSLTH)'="C" S D(9)=D(9)_"C"
  1. S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,3),U,3)=D(9)
  1. RATE2 ;
  1. ;D(11)-Date of Rate Quot-box 18
  1. ;ACHSMPP-MEDICARE- YES OR NO Box 19 A
  1. ;D(13)-D(15) Box 19 description
  1. S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,3),U,4,7)=$G(D(11))_U_$G(ACHSMPP)_U_$G(D(13))_U_$G(D(15))
  1. SIG ;
  1. ;TITLE BOX 20
  1. ;SIGNATURE-ORDERING BOX 21
  1. ;DATE SIGNED-BOX 22
  1. I ACHSESIG'="" S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,4)=ACHSSIG_U_$P(ACHSESIG,",",2)_" "_$P(ACHSESIG,",",1)_" E-Signature"_U_ACHSEDTE
  1. E S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,4)=ACHSSIG_U_U_E(7)
  1. ;SIGNATURE-AUTH OFF BOX 23
  1. ;DATE SIGNED BOX 24
  1. ;AMOUNT AUTH BOX 25
  1. ;ACHS*3.1*19 ADDED U TO LINE BELOW
  1. I ACHSASIG'="" S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,4),U,4,6)=$P(ACHSASIG,",",2)_" "_$P(ACHSASIG,",",1)_" E-Signature"_U_ACHSADTE_U_E(9)
  1. PROVIDER ;BOX 26
  1. ;D(1) PROVIDER NAME
  1. ;D(6) PROVIDER TEL
  1. ;D(2) PROV ADDRESS-LINE 1
  1. ;D(3) PROV ADDRESS-LINE 2
  1. ;D(4) EIN
  1. ;D(8) UPIN OR DUNS PAR NEEDS TO BE SET
  1. ;D(14) PROV CLASS BOX 27 "S" "SD" "SW" "SH" OR "O"
  1. ;
  1. S ^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,5)=$G(D(1))_U_$G(D(6))_U_$G(D(2))_U_$G(D(3))_U_$G(D(4))_U_$G(D(8))_U_$G(D(14))
  1. ;
  1. S I="",I=$O(^ACHS(4,0))
  1. I ACHSDEST="F" S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,5),U,8,9)=$P($G(^ACHS(4,I,0)),U)_U_$P($G(^ACHS(4,I,0)),U,2)_" "_$P($G(^ACHS(4,I,0)),U,3)_","_$P($G(^DIC(5,$P($G(^ACHS(4,I,0)),U,4),0)),U,2)_" "_$P($G(^ACHS(4,I,0)),U,5)
  1. E I ACHSDEST="I" S $P(^TMP("ACHSPO",$J,ACHSDIEN,ACHSTIEN,5),U,8,9)=B(1)_U_B(2)_" "_B(3)
  1. ;
  1. KILL ;
  1. ;
  1. K A,B,C,D,E,F,I,N,R,X
  1. Q
  1. ;
  1. FORMAT ;
  1. PVT ;
  1. Q:DFN=""
  1. S (DA,N)=0
  1. G MCR:'$D(^AUPNPRVT(DFN,11))
  1. PVT1 ;
  1. F S DA=$O(^AUPNPRVT(DFN,11,DA)) Q:'DA D
  1. . S N=N+1,ACHSINS=$G(^AUPNPRVT(DFN,11,DA,0))
  1. . D DINAPI
  1. . I ACHSBZD("OK")="N" S N=N-1 Q
  1. . F I=1:1:8 S I(N,I)=""
  1. . S I(N,1)=$P(ACHSINS,U,4),I(N,2)=$P(ACHSINS,U)
  1. . I $P(ACHSINS,U,8)'="",$D(^AUPN3PPH($P(ACHSINS,U,8),0)) D
  1. . .S I(N,5)=$P(^AUPN3PPH($P(ACHSINS,U,8),0),U,4)
  1. . .S I(N,6)=$P(^AUPN3PPH($P(ACHSINS,U,8),0),U,5)
  1. . S I(N,7)=$P(ACHSINS,U,6),I(N,8)=$P(ACHSINS,U,7)
  1. . S ACHSINS1=^AUTNINS(I(N,2),0),I(N,2)=$P(ACHSINS1,U),I(N,3)=$P(ACHSINS1,U,2)
  1. . I $P(ACHSINS1,U,4),$D(^DIC(5,$P(ACHSINS1,U,4),0)) S X=$P(^(0),U,2),I(N,4)=$P(ACHSINS1,U,3)_", "_X_" "_$P(ACHSINS1,U,5)
  1. . S:$G(I(N,6)) I(N,6)=$P(^AUTTPIC(I(N,6),0),U)
  1. . I (ACHSIPRM="N"),((I(N,8)'<ACHSFDT)!(I(N,8)="")) S ACHSIPRM="Y",I("P",N)="" Q
  1. . S:$G(I(N,7)) I(N,7)=$$FMTE^XLFDT(I(N,7))
  1. . S:$G(I(N,8)) I(N,8)=$$FMTE^XLFDT(I(N,8))
  1. . S I("B",N)=$E(I(N,2),1,(38-$L(I(N,5))))_" "_I(N,5)_"^EFF:"_I(N,7)_" "_I(N,8)
  1. . K I(N)
  1. MCR ;
  1. S N=N+1
  1. G MCD:'$D(^AUPNMCR("B",DFN))
  1. S ACHSMR=N,ACHSMDFN=0,ACHSMDFN=$O(^AUPNMCR("B",DFN,ACHSMDFN)),ACHSINS=$G(^AUPNMCR(ACHSMDFN,0))
  1. G:$P(ACHSINS,U,3)="" MCD
  1. D DINACK("^AUPNMCR")
  1. G MCD:ACHSBZD("OK")="N"
  1. ;
  1. S I(N,5)=$P(ACHSINS,U,3)
  1. S:$P(ACHSINS,U,4)'="" I(N,5)=I(N,5)_$P(^AUTTMCS($P(ACHSINS,U,4),0),U)
  1. S I(N,1)=$S($D(^AUPNMCR(ACHSMDFN,21)):$P(^(21),U),'$D(^(21)):$P($G(^DPT(DFN,0)),U))
  1. D SET("^AUPNMCR")
  1. MCD ;
  1. G RRE:'$D(^AUPNMCD("B",DFN))
  1. S ACHSMDFN=0,ACHSMR=N
  1. F S ACHSMDFN=$O(^AUPNMCD("B",DFN,ACHSMDFN)) Q:ACHSMDFN'?1N.N D Q:ACHSBZD("OK")="Y"
  1. .D DINACK("^AUPNMCD")
  1. .Q:ACHSBZD("OK")="N"
  1. .S ACHSINS=$G(^AUPNMCD(ACHSMDFN,0)),I(N,5)=$P(ACHSINS,U,3),I(N,1)=$P(ACHSINS,U,5)
  1. .D SET("^AUPNMCD")
  1. RRE ;
  1. G END:'$D(^AUPNRRE("B",DFN))
  1. S ACHSMDFN=0,ACHSMR=N,ACHSMDFN=$O(^AUPNRRE("B",DFN,ACHSMDFN))
  1. G:ACHSMDFN="" END
  1. ;
  1. D DINACK("^AUPNRRE")
  1. G END:ACHSBZD("OK")="N"
  1. ;
  1. S ACHSINS=$G(^AUPNRRE(ACHSMDFN,0)),I(N,5)=$P(ACHSINS,U,3),I(N,1)=$P(ACHSINS,U,5)
  1. D SET("^AUPNRRE")
  1. END ;
  1. K ACHSMDFN,DA,ACHSGL,ACHSINS,ACHSINS1,ACHSMR,ACHSBZD
  1. Q
  1. ;
  1. SET(ACHSGL) ;
  1. S:$P(ACHSINS,U,2)'="" I(N,2)=$P($G(^AUTNINS($P(ACHSINS,U,2),0)),U)
  1. S DA=0
  1. F S DA=$O(@ACHSGL@(ACHSMDFN,11,DA)) Q:'DA D ;S N=N+1 dmh commented
  1. . S I(N,6)=$P(@ACHSGL@(ACHSMDFN,11,DA,0),U,3),I(N,7)=$P(^(0),U),I(N,8)=$P(^(0),U,2)
  1. . Q:(ACHSBZD("DT")<I(N,7)) ; -- ACHSBZD("DT") gets set from DINACK
  1. . Q:(I(N,8)'="")&(ACHSBZD("DT")>I(N,8)) ; -- ACHSBZD("DT") gets set from DINACK
  1. . I ACHSIPRM="N" S ACHSIPRM="Y",I("P",N)="" Q
  1. . S I(N,7)=$$FMTE^XLFDT(I(N,7))
  1. . S I(N,8)=$$FMTE^XLFDT(I(N,8))
  1. . S I("B",N)=$E(I(ACHSMR,2),1,(37-$L(I(ACHSMR,5))-$L(I(N,6))))_" "_I(ACHSMR,5)_" "_I(N,6)_"^EFF:"_I(N,7)_" "_I(N,8)
  1. . K:N'=ACHSMR I(N)
  1. . S N=N+1
  1. Q
  1. ;
  1. DINACK(ACHSINSZ) ;
  1. ;-- Check for eligibility at Date Of Service. Else, no print.
  1. ;-- ACHSINSZ contains the name of the insurance global.
  1. ;
  1. S ACHSBZD("OK")="N"
  1. Q:'$D(C(5))
  1. S X=C(5),%DT=""
  1. D ^%DT
  1. S ACHSBZD("DT")=Y,ACHSBZD("I")=0
  1. F S ACHSBZD("I")=$O(@ACHSINSZ@(ACHSMDFN,11,ACHSBZD("I"))) Q:ACHSBZD("I")="" D Q:ACHSBZD("OK")="Y"
  1. . S ACHSBZD("REC")=@ACHSINSZ@(ACHSMDFN,11,ACHSBZD("I"),0)
  1. . S ACHSBZD("B")=$P(ACHSBZD("REC"),U),ACHSBZD("E")=$P(ACHSBZD("REC"),U,2)
  1. . I (ACHSBZD("DT")'<ACHSBZD("B"))&(ACHSBZD("DT")'>ACHSBZD("E")) S ACHSBZD("OK")="Y" Q
  1. . I (ACHSBZD("DT")'<ACHSBZD("B"))&(ACHSBZD("E")="") S ACHSBZD("OK")="Y" Q
  1. Q
  1. ;
  1. DINAPI ;-- Check for PI eligibility at Date Of Service. Else, no print.
  1. S ACHSBZD("OK")="N"
  1. Q:'$D(C(5))
  1. S X=C(5),%DT=""
  1. D ^%DT
  1. S ACHSBZD("DT")=Y
  1. S ACHSBZD("B")=$P(ACHSINS,U,6),ACHSBZD("E")=$P(ACHSINS,U,7)
  1. I (ACHSBZD("DT")'<ACHSBZD("B"))&(ACHSBZD("DT")'>ACHSBZD("E")) S ACHSBZD("OK")="Y" Q
  1. I (ACHSBZD("DT")'<ACHSBZD("B"))&(ACHSBZD("E")="") S ACHSBZD("OK")="Y" Q
  1. Q
  1. ;