| 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 | 
|---|