| 1 | IBDFN2 ;ALB/CJM - ENCOUNTER FORM - INTERFACE ROUTINES ;NOV 16,1992
 | 
|---|
| 2 |  ;;3.0;AUTOMATED INFO COLLECTION SYS;**29,31,36,43**;APR 24, 1997
 | 
|---|
| 3 | APPT ;returns appt date@time^date^time
 | 
|---|
| 4 |  N Y
 | 
|---|
| 5 |  S Y="" I IBAPPT S Y=IBAPPT K %DT D DD^%DT
 | 
|---|
| 6 |  S @IBARY=Y_"^"_$P(Y,"@")_"^"_$P(Y,"@",2)
 | 
|---|
| 7 |  Q
 | 
|---|
| 8 | NOW ;returns date and time
 | 
|---|
| 9 |  ;FORMATS:
 | 
|---|
| 10 |  ; MMM DD, YYYY@HH:MM:SS at the "IB DATE@TIME" subscript
 | 
|---|
| 11 |  ; MMM DD,YYYY at the "IB DATE" subscript
 | 
|---|
| 12 |  ; HH:MM:SS at the "IB TIME" subscript      
 | 
|---|
| 13 |  N Y,%,%H,%I,X
 | 
|---|
| 14 |  D NOW^%DTC S Y=% K %DT D DD^%DT
 | 
|---|
| 15 |  S ^TMP("IB",$J,"INTERFACES",+$G(DFN),"IB CURRENT DATE@TIME")=Y
 | 
|---|
| 16 |  S ^TMP("IB",$J,"INTERFACES",+$G(DFN),"IB CURRENT TIME")=$P(Y,"@",2)
 | 
|---|
| 17 |  S ^TMP("IB",$J,"INTERFACES",+$G(DFN),"IB CURRENT DATE")=$P(Y,"@")
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | SPSEMPLR ;returns spouse's employer,address, telephone
 | 
|---|
| 21 |  ;input variables - DFN
 | 
|---|
| 22 |  N ARY,CNT S CNT=1
 | 
|---|
| 23 |  S ARY="^TMP(""IB"",$J,""INTERFACES"",+$G(DFN))"
 | 
|---|
| 24 |  S VAOA("A")=6 D OAD^VADPT
 | 
|---|
| 25 |  I VAERR S (@ARY@("DPT SPOUSE'S EMPLOYER NAME"),@ARY@("DPT SPOUSE'S EMPLOYER TELEPHONE"),@ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES"))=""  Q
 | 
|---|
| 26 |  I VAOA(1)'="" S @ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES",CNT)=VAOA(1),CNT=CNT+1
 | 
|---|
| 27 |  I VAOA(2)'="" S @ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES",CNT)=VAOA(2),CNT=CNT+1
 | 
|---|
| 28 |  I VAOA(3)'="" S @ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES",CNT)=VAOA(3),CNT=CNT+1
 | 
|---|
| 29 |  S @ARY@("DPT SPOUSE'S EMPLOYER ADDRESS LINES",CNT)=VAOA(4)_", "_$P(VAOA(5),"^",2)_" "_VAOA(6)
 | 
|---|
| 30 |  S @ARY@("DPT SPOUSE'S EMPLOYER TELEPHONE")=VAOA(8)
 | 
|---|
| 31 |  S @ARY@("DPT SPOUSE'S EMPLOYER NAME")=VAOA(9)
 | 
|---|
| 32 |  K VAOA,VAERR
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 | EMPLOYER ;returns employer,address, telephone
 | 
|---|
| 35 |  ;input variables - DFN
 | 
|---|
| 36 |  N ARY,CNT S CNT=1
 | 
|---|
| 37 |  S ARY="^TMP(""IB"",$J,""INTERFACES"",DFN)"
 | 
|---|
| 38 |  S VAOA("A")=5 D OAD^VADPT
 | 
|---|
| 39 |  I VAERR S (@ARY@("DPT PATIENT'S EMPLOYER NAME"),@ARY@("DPT PATIENT'S EMPLOYER TELEPHONE"),@ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES"))=""  Q
 | 
|---|
| 40 |  I VAOA(1)'="" S @ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES",CNT)=VAOA(1),CNT=CNT+1
 | 
|---|
| 41 |  I VAOA(2)'="" S @ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES",CNT)=VAOA(2),CNT=CNT+1
 | 
|---|
| 42 |  I VAOA(3)'="" S @ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES",CNT)=VAOA(3),CNT=CNT+1
 | 
|---|
| 43 |  S @ARY@("DPT PATIENT'S EMPLOYER ADDRESS LINES",CNT)=VAOA(4)_", "_$P(VAOA(5),"^",2)_" "_VAOA(6)
 | 
|---|
| 44 |  S @ARY@("DPT PATIENT'S EMPLOYER TELEPHONE")=VAOA(8)
 | 
|---|
| 45 |  S @ARY@("DPT PATIENT'S EMPLOYER NAME")=VAOA(9)
 | 
|---|
| 46 |  K VAOA,VAERR
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 | MT ;returns means test data
 | 
|---|
| 49 |  N Y,RET,GET
 | 
|---|
| 50 |  S GET=$$LST^DGMTU(DFN)
 | 
|---|
| 51 |  S RET=$P(GET,"^",3)_"^"
 | 
|---|
| 52 |  S Y=$P(GET,"^",2) D DD^%DT
 | 
|---|
| 53 |  S RET=RET_Y_"^"_$P(GET,"^",4)
 | 
|---|
| 54 |  S @IBARY=RET
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | ENROLL ;returns enrollment priority code and copay information
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  N IBEP,IBEP1
 | 
|---|
| 59 |  ; --get enrollment priority code
 | 
|---|
| 60 |  S IBEP=$$PRIORITY^DGENA(DFN)
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ; --get copay information  (yes or not)
 | 
|---|
| 63 |  S IBEP1=$$BIL^DGMTUB(DFN,DT)
 | 
|---|
| 64 |  S $P(IBEP,"^",2)=$S(IBEP1=1:"Y",1:"N")
 | 
|---|
| 65 |  S @IBARY=IBEP
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 | ALLERGY ;outputs a list of the patient's allergies
 | 
|---|
| 68 |  ;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)
 | 
|---|
| 69 |  N GMRA,GMRAL,NODE,I,COUNT,TYPE
 | 
|---|
| 70 |  D:$L($T(GMRADPT^GMRADPT)) ^GMRADPT
 | 
|---|
| 71 |  I GMRAL=0 S COUNT=1,@IBARY@(COUNT)="NKA" Q
 | 
|---|
| 72 |  S (COUNT,I)=0 F  S I=$O(GMRAL(I)) Q:'I  D
 | 
|---|
| 73 |  .S COUNT=COUNT+1
 | 
|---|
| 74 |  .S NODE=$G(GMRAL(I))
 | 
|---|
| 75 |  .S TYPE=$P(NODE,"^",3)
 | 
|---|
| 76 |  .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:"")
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | PRMT ; -- print a 1010f if required or will expire in 357.09;.1 days
 | 
|---|
| 80 |  ;    called from print manger
 | 
|---|
| 81 |  ;    requires dfn, ibappt=appointment date
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  N IBDMT,IBDMT1,IBDMT2,DGMTI,DGMTDT,DGMTYPT,DGOPT
 | 
|---|
| 84 |  S IBDMT1=$$LST^DGMTU(DFN,DT,1) ; means test
 | 
|---|
| 85 |  S IBDMT2=$$LST^DGMTU(DFN,DT,2) ; copay test
 | 
|---|
| 86 |  I IBDMT2="",IBDMT1="" G PRMTQ
 | 
|---|
| 87 |  S IBDMT=$S(IBDMT2="":IBDMT1,IBDMT1="":IBDMT2,$P(IBDMT1,"^",2)'<$P(IBDMT2,"^",2):IBDMT1,1:IBDMT2)
 | 
|---|
| 88 |  S DGMTYPT=$S(IBDMT=IBDMT2:2,1:1) ; set type of test
 | 
|---|
| 89 |  S DGMTI=+IBDMT,DGMTDT=$P(IBDMT,"^",2)
 | 
|---|
| 90 |  S DGOPT=1 ;pretend were from registration, don't close device when done
 | 
|---|
| 91 |  S STATUS=$P(IBDMT,"^",4)
 | 
|---|
| 92 |  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
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  I STATUS="R" D GETMT I IBDMT1="" Q
 | 
|---|
| 95 |  D START^DGMTP
 | 
|---|
| 96 | PRMTQ Q
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 | GETMT ;Since status is required find last valid means test
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  S IBDMT=$$LVMT^DGMTU(DFN,DT) ; means test
 | 
|---|
| 101 |  S DGMTYPT=1 ; set type of test
 | 
|---|
| 102 |  S DGMTI=+IBDMT,DGMTDT=$P(IBDMT,"^",2)
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 | MSTSTAT ;-- Get patient's MST status for EF display block
 | 
|---|
| 107 |  ;     Input: 
 | 
|---|
| 108 |  ;       DFN
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ;    Output: 
 | 
|---|
| 111 |  ;       Calls API $$GETSTAT^DGMSTAPI(DFN):
 | 
|---|
| 112 |  ;         Piece 1 -- MST Status Code (Y, N, D, or U)
 | 
|---|
| 113 |  ;         Piece 2 -- MST Status Description
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  N ARY,MST
 | 
|---|
| 116 |  S ARY="^TMP(""IB"",$J,""INTERFACES"",DFN)"
 | 
|---|
| 117 |  I '$G(DFN) Q
 | 
|---|
| 118 |  S MST=$$GETSTAT^DGMSTAPI(DFN)
 | 
|---|
| 119 |  I +MST=0!(+MST>0) S @ARY@("DGMST STATUS")=$P(MST,"^",2)_"^"_$S(+MST>0:$P(MST,"^",6),1:"Unknown, not screened")
 | 
|---|
| 120 |  Q
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 | ASKMST ;-- Ask if patient's treatment is related to SC and MST (if applicable)
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 |  N ARY,COUNT
 | 
|---|
| 126 |  Q:'$G(DFN)
 | 
|---|
| 127 |  S ARY="^TMP(""IB"",$J,""INTERFACES"")"
 | 
|---|
| 128 |  S COUNT=1
 | 
|---|
| 129 |  I $$SC^SDCO22(DFN,0) S @ARY@("DGMST SELECT MST CLASSIFICATN",COUNT)="SC^Was treatment for an SC condition?",COUNT=COUNT+1
 | 
|---|
| 130 |  I $$MST^SDCO22(DFN,0) S @ARY@("DGMST SELECT MST CLASSIFICATN",COUNT)="MST^Was treatment related to MST?  (Ask provider only)"
 | 
|---|
| 131 |  Q
 | 
|---|