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

IBDFN2.m

Go to the documentation of this file.
IBDFN2 ;ALB/CJM - ENCOUNTER FORM - INTERFACE ROUTINES ;NOV 16,1992
 ;;3.0;AUTOMATED INFO COLLECTION SYS;**29,31,36,43**;APR 24, 1997
APPT ;returns appt date@time^date^time
 N Y
 S Y="" I IBAPPT S Y=IBAPPT K %DT D DD^%DT
 S @IBARY=Y_"^"_$P(Y,"@")_"^"_$P(Y,"@",2)
 Q
NOW ;returns date and time
 ;FORMATS:
 ; MMM DD, YYYY@HH:MM:SS at the "IB DATE@TIME" subscript
 ; MMM DD,YYYY at the "IB DATE" subscript
 ; HH:MM:SS at the "IB TIME" subscript      
 N Y,%,%H,%I,X
 D NOW^%DTC S Y=% K %DT D DD^%DT
 S ^TMP("IB",$J,"INTERFACES",+$G(DFN),"IB CURRENT DATE@TIME")=Y
 S ^TMP("IB",$J,"INTERFACES",+$G(DFN),"IB CURRENT TIME")=$P(Y,"@",2)
 S ^TMP("IB",$J,"INTERFACES",+$G(DFN),"IB CURRENT DATE")=$P(Y,"@")
 Q
 ;
SPSEMPLR ;returns spouse's employer,address, telephone
 ;input variables - DFN
 N ARY,CNT S CNT=1
 S ARY="^TMP(""IB"",$J,""INTERFACES"",+$G(DFN))"
 S VAOA("A")=6 D OAD^VADPT
 I VAERR S (@ARY@("DPT SPOUSE'S EMPLOYER NAME"),@ARY@("DPT SPOUSE'S EMPLOYER TELEPHONE"),@ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES"))=""  Q
 I VAOA(1)'="" S @ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES",CNT)=VAOA(1),CNT=CNT+1
 I VAOA(2)'="" S @ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES",CNT)=VAOA(2),CNT=CNT+1
 I VAOA(3)'="" S @ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES",CNT)=VAOA(3),CNT=CNT+1
 S @ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES",CNT)=VAOA(4)_", "_$P(VAOA(5),"^",2)_" "_VAOA(6)
 S @ARY@("DPT SPOUSE'S EMPLOYER TELEPHONE")=VAOA(8)
 S @ARY@("DPT SPOUSE'S EMPLOYER NAME")=VAOA(9)
 K VAOA,VAERR
 Q
EMPLOYER ;returns employer,address, telephone
 ;input variables - DFN
 N ARY,CNT S CNT=1
 S ARY="^TMP(""IB"",$J,""INTERFACES"",DFN)"
 S VAOA("A")=5 D OAD^VADPT
 I VAERR S (@ARY@("DPT PATIENT'S EMPLOYER NAME"),@ARY@("DPT PATIENT'S EMPLOYER TELEPHONE"),@ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES"))=""  Q
 I VAOA(1)'="" S @ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES",CNT)=VAOA(1),CNT=CNT+1
 I VAOA(2)'="" S @ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES",CNT)=VAOA(2),CNT=CNT+1
 I VAOA(3)'="" S @ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES",CNT)=VAOA(3),CNT=CNT+1
 S @ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES",CNT)=VAOA(4)_", "_$P(VAOA(5),"^",2)_" "_VAOA(6)
 S @ARY@("DPT PATIENT'S EMPLOYER TELEPHONE")=VAOA(8)
 S @ARY@("DPT PATIENT'S EMPLOYER NAME")=VAOA(9)
 K VAOA,VAERR
 Q
MT ;returns means test data
 N Y,RET,GET
 S GET=$$LST^DGMTU(DFN)
 S RET=$P(GET,"^",3)_"^"
 S Y=$P(GET,"^",2) D DD^%DT
 S RET=RET_Y_"^"_$P(GET,"^",4)
 S @IBARY=RET
 Q
ENROLL ;returns enrollment priority code and copay information
 ;
 N IBEP,IBEP1
 ; --get enrollment priority code
 S IBEP=$$PRIORITY^DGENA(DFN)
 ;
 ; --get copay information  (yes or not)
 S IBEP1=$$BIL^DGMTUB(DFN,DT)
 S $P(IBEP,"^",2)=$S(IBEP1=1:"Y",1:"N")
 S @IBARY=IBEP
 Q
ALLERGY ;outputs a list of the patient's allergies
 ;piece #1=allergy name,#2=type of allergy(FOOD/DRUG/OTHER),#3=type of allergy(F/D/O),#4=VERFIED?(YES/NO),#5=TRUE ALLERGEN(YES/NO)
 N GMRA,GMRAL,NODE,I,COUNT,TYPE
 D:$L($T(GMRADPT^GMRADPT)) ^GMRADPT
 I GMRAL=0 S COUNT=1,@IBARY@(COUNT)="NKA" Q
 S (COUNT,I)=0 F  S I=$O(GMRAL(I)) Q:'I  D
 .S COUNT=COUNT+1
 .S NODE=$G(GMRAL(I))
 .S TYPE=$P(NODE,"^",3)
 .S @IBARY@(COUNT)=$P(NODE,"^",2)_"^"_$S(TYPE="D":"DRUG",TYPE="F":"FOOD",TYPE="O":"OTHER",1:"")_"^"_TYPE_"^"_$S($P(NODE,"^",4)=1:"YES",1:"NO")_"^"_$S($P(NODE,"^",5)=0:"YES",$P(NODE,"^",5)=1:"NO",1:"")
 Q
 ;
PRMT ; -- print a 1010f if required or will expire in 357.09;.1 days
 ;    called from print manger
 ;    requires dfn, ibappt=appointment date
 ;
 N IBDMT,IBDMT1,IBDMT2,DGMTI,DGMTDT,DGMTYPT,DGOPT
 S IBDMT1=$$LST^DGMTU(DFN,DT,1) ; means test
 S IBDMT2=$$LST^DGMTU(DFN,DT,2) ; copay test
 I IBDMT2="",IBDMT1="" G PRMTQ
 S IBDMT=$S(IBDMT2="":IBDMT1,IBDMT1="":IBDMT2,$P(IBDMT1,"^",2)'<$P(IBDMT2,"^",2):IBDMT1,1:IBDMT2)
 S DGMTYPT=$S(IBDMT=IBDMT2:2,1:1) ; set type of test
 S DGMTI=+IBDMT,DGMTDT=$P(IBDMT,"^",2)
 S DGOPT=1 ;pretend were from registration, don't close device when done
 S STATUS=$P(IBDMT,"^",4)
 I $S(STATUS="R":0,STATUS="N":1,STATUS="L":1,STATUS="I":0,$$FMDIFF^XLFDT(IBAPPT,DGMTDT,1)>(365-$S($P($G(^IBD(357.09,1,0)),"^",10):$P(^(0),"^",10),1:30)):0,1:1) G PRMTQ ;not required within params
 ;
 I STATUS="R" D GETMT I IBDMT1="" Q
 D START^DGMTP
PRMTQ Q
 ;
GETMT ;Since status is required find last valid means test
 ;
 S IBDMT=$$LVMT^DGMTU(DFN,DT) ; means test
 S DGMTYPT=1 ; set type of test
 S DGMTI=+IBDMT,DGMTDT=$P(IBDMT,"^",2)
 Q
 ;
 ;
MSTSTAT ;-- Get patient's MST status for EF display block
 ;     Input: 
 ;       DFN
 ;
 ;    Output: 
 ;       Calls API $$GETSTAT^DGMSTAPI(DFN):
 ;         Piece 1 -- MST Status Code (Y, N, D, or U)
 ;         Piece 2 -- MST Status Description
 ;
 N ARY,MST
 S ARY="^TMP(""IB"",$J,""INTERFACES"",DFN)"
 I '$G(DFN) Q
 S MST=$$GETSTAT^DGMSTAPI(DFN)
 I +MST=0!(+MST>0) S @ARY@("DGMST STATUS")=$P(MST,"^",2)_"^"_$S(+MST>0:$P(MST,"^",6),1:"Unknown, not screened")
 Q
 ;
 ;
ASKMST ;-- Ask if patient's treatment is related to SC and MST (if applicable)
 ;
 N ARY,COUNT
 Q:'$G(DFN)
 S ARY="^TMP(""IB"",$J,""INTERFACES"")"
 S COUNT=1
 I $$SC^SDCO22(DFN,0) S @ARY@("DGMST SELECT MST CLASSIFICATN",COUNT)="SC^Was treatment for an SC condition?",COUNT=COUNT+1
 I $$MST^SDCO22(DFN,0) S @ARY@("DGMST SELECT MST CLASSIFICATN",COUNT)="MST^Was treatment related to MST?  (Ask provider only)"
 Q