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

ABSPOSE2.m

Go to the documentation of this file.
  1. ABSPOSE2 ; IHS/SD/lwj - E1 generation routine ; [ 10/24/2005 10:09:07 AM ]
  1. ;;1.0;PHARMACY POINT OF SALE;**21,24,40,42,48**;JUN 21, 2001;Build 38
  1. ;
  1. ;IHS/SD/RLT - 05/22/07 - Patch 21
  1. ; Enhanced E1 - modified version of ABSPOSE1
  1. ; See comments in ABSPOSE1 for further E1 details
  1. ;
  1. ;IHS/SD/RLT - 02/13/08 - Patch 24
  1. ; Fixed Medicare name and DOB lookup (IM27373)
  1. Q
  1. MAIN ;EP
  1. N POP
  1. S POP=0
  1. ;
  1. F D PROCESS Q:POP
  1. ;
  1. Q
  1. PROCESS ;
  1. N E1PNAM,E1PIEN,E1PINFO,E1PHARM,E1IEN,E1DATE
  1. ;
  1. S POP=1
  1. ; get patient
  1. S E1PINFO=$$GETPAT
  1. Q:E1PINFO<1
  1. S E1PIEN=$P(E1PINFO,U) ;VA(200 patient IEN
  1. S E1PNAM=$P(E1PINFO,U,2) ;VA(200 patient name
  1. ;
  1. ; get pharmacy
  1. S E1PHARM=$$GETPHARM ;ien ^ABSP(9002313.56
  1. Q:E1PHARM<1
  1. ;
  1. ; get ^ABSPE rec
  1. S E1IEN=$$GETABSPE ;ien ^ABSPE
  1. Q:E1IEN<1 ;had prev one, didn't want new one
  1. ;
  1. S E1DATE=$$GETDATE ;E1DATE - service date sent in header
  1. Q:E1DATE=""
  1. ;
  1. ; create transmission
  1. D CRTE1
  1. U $P W !!,"Transmitting eligibility check, please stand by.....",!!
  1. D SEND^ABSPOSAE(TDATA,E1IEN) ;send trans
  1. S POP=0
  1. ;
  1. Q
  1. GETPAT() ; Prompt for patient.
  1. ;
  1. N ABSPDUZ2,PATDONE,Y,DIC
  1. N X
  1. S X=""
  1. ;
  1. S PATDONE=0 ;set to one when done prompting
  1. S Y=0
  1. S ABSPDUZ2=+$G(DUZ(2)),DUZ(2)=0
  1. ;
  1. U $P W !!!
  1. ;
  1. S DIC=2,DIC(0)="AEMQZ"
  1. S DIC("A")="Generate eligibility chk (Med Part D) for which patient? "
  1. F D Q:PATDONE
  1. . D ^DIC
  1. . U $P W !
  1. . S:(($G(DUOUT))!($G(DTOUT))!(Y>0)!(X="")) PATDONE=1
  1. K DIC
  1. S DUZ(2)=ABSPDUZ2
  1. ;
  1. Q Y
  1. GETPHARM() ; Prompt for pharmacy.
  1. ;
  1. N PHARM,HLDPHARM,Y,PDONE,PHMCNT,DIC
  1. ;
  1. S (PHMCNT,PDONE,PHARM,Y)=0
  1. ;
  1. F S PHARM=$O(^ABSP(9002313.56,PHARM)) Q:'+PHARM D
  1. . S PHMCNT=PHMCNT+1
  1. . S:PHMCNT=1 HLDPHARM=PHARM
  1. Q:PHMCNT=1 HLDPHARM
  1. ;
  1. W !!
  1. S DIC=9002313.56,DIC(0)="AEMQZ"
  1. S DIC("B")=$P($G(^ABSP(9002313.56,HLDPHARM,0)),U)
  1. S DIC("A")="Please specify the pharmacy: "
  1. F D Q:PDONE
  1. . D ^DIC
  1. . U $P W !
  1. . S:(($G(DUOUT))!($G(DTOUT))!(Y>0)) PDONE=1
  1. ;
  1. Q +Y
  1. GETDATE() ; Prompt for service date.
  1. N CURDISP,X1,X2,BEGDT,ENDDT,E1DT
  1. ;
  1. S Y=DT
  1. D DD^%DT
  1. S CURDISP=Y
  1. ;
  1. S X1=DT,X2=-90
  1. D C^%DTC
  1. S BEGDT=X
  1. S Y=X
  1. D DD^%DT
  1. S BEGDISP=Y
  1. ;
  1. S X1=DT,X2=+90
  1. D C^%DTC
  1. S ENDDT=X
  1. S Y=X
  1. D DD^%DT
  1. S ENDDISP=Y
  1. ;
  1. W !,"Accept the default current date of ",CURDISP," or"
  1. W !,"Enter a date between ",BEGDISP," and ",ENDDISP,!
  1. S E1DT=$$DATE^ABSPOSU1("Enter Service Date: ",DT,0,BEGDT,ENDDT,"EX")
  1. S:E1DT="^"!(E1DT="^^")!(E1DT=-1) E1DT=""
  1. Q E1DT
  1. ;
  1. GETABSPE() ; If E1 previously sent, find it and prompt to send again.
  1. ; If doesn't exist, create new one.
  1. ;
  1. N X,DIC,DLAYGO,Y,NEWE1,CRTNWE1,E1IEN
  1. S DIC="^ABSPE(",DIC(0)="XZ"
  1. S X="`"_E1PIEN
  1. S (NEWE1,CRTNWE1)=0
  1. ;
  1. ;look for old E1
  1. D ^DIC
  1. K DIC
  1. S E1IEN=+Y
  1. S:E1IEN<1 CRTNWE1=1 ;doesn't exist - add
  1. S:E1IEN>0 NEWE1=$$PRMPT(E1IEN) ;exist - send again?
  1. ;
  1. ; Yes, send again - delete old entry
  1. I NEWE1 D
  1. . N DIK,DA
  1. . S DIK="^ABSPE("
  1. . S DA=E1IEN
  1. . D ^DIK
  1. . K DIK,DA
  1. . S CRTNWE1=1
  1. ;
  1. ; create new entry
  1. I CRTNWE1 D
  1. . S DIC="^ABSPE("
  1. . S X="`"_E1PIEN
  1. . S DLAYGO=9002313.7,DIC(0)="LXZ"
  1. . D ^DIC
  1. ;
  1. Q +Y
  1. ;
  1. PRMPT(E1IEN) ;Display previous response and prompt to send again.
  1. ;
  1. N RESULT,DIR,STATUS
  1. ;
  1. ; if previous result an error, send new E1
  1. S RESULT=$$GET1^DIQ(9002313.7,E1IEN_",",9999999,"E")
  1. Q:RESULT'="" 1
  1. ;
  1. ; if status rejected, send new E1
  1. S STATUS=$$GET1^DIQ(9002313.7,E1IEN_",",112,"E")
  1. Q:STATUS="R" 1
  1. ;
  1. ;
  1. U $P
  1. W !!!,"A check was previously submitted for this patient: "
  1. D DISPLAY(E1IEN)
  1. ;
  1. S DIR("A")="Would you like to send a new eligibility check? "
  1. ;S DIR("B")="Y" ;IHS/OIT/CNI/SCR patch 40 change default answer to "N"
  1. S DIR("B")="N"
  1. S DIR(0)="YAO"
  1. D ^DIR
  1. ;
  1. Q Y
  1. CRTE1 ; Creates transmission record, updates ^ABSPE.
  1. ;
  1. N FS,SS
  1. N DIE,DA,DR
  1. ;N TDATA
  1. ;
  1. S TDATA=""
  1. S DIE="^ABSPE(",DA=E1IEN
  1. S FS=$C(28),SS=$C(30) ;field and segment separators
  1. ;
  1. D HEADER
  1. D PATIENT
  1. D INSURER
  1. ;
  1. ;update ^ABSPE with the patient and insurance information
  1. ;
  1. D ^DIE
  1. ;
  1. ;update ^ABSPE with raw message
  1. D RAWTRANS
  1. ;
  1. Q
  1. ;
  1. ;
  1. N XDATA
  1. ;
  1. S XDATA=$G(^ABSP(9002313.56,E1PHARM,0)) ;E1PHARM set from call to GETPHARM
  1. ;
  1. ;101 BIN (Emdeon plan # hard coded to 006015) + 102 Version (always 51) +
  1. ;103 Trans Code (always E1)
  1. S TDATA="00102451E1" ;Troop extended elig response
  1. ; IHS/OIT/CASSevern/Pieran/RAN 10/31/2011 Patch 42 Allow us to send D.0 version of Troop Eligibility
  1. S:$D(^ABSP(9002313.99,1,"ABSPICNV")) TDATA="011727D0E1"
  1. ;
  1. ;104 Processor control number (Emdeon terminal id for sending pharmacy)
  1. S TDATA=TDATA_$S($D(^ABSP(9002313.99,1,"ABSPICNV")):2222222222,1:$TR($J($P(XDATA,U,6),10)," ","0"))
  1. ;109 Transaction Count (1 for the E1)+202 Service Prov ID Qual (always 07)
  1. S TDATA=TDATA_107
  1. ;
  1. ;201 Service Provider ID
  1. S TDATA=TDATA_$$ANFF^ABSPECFM($P(XDATA,U,2),15) ;NCPDP number
  1. ;S TDATA=TDATA_$$ANFF^ABSPECFM("1234567",15) ;forces rejection
  1. ;
  1. ;401 Data of Service
  1. ;Date can be -90 to +90 of current date.
  1. S TDATA=TDATA_$$DTF1^ABSPECFM(E1DATE)
  1. ;
  1. ;110 Software Vendor/Certification ID
  1. S TDATA=TDATA_$$ANFF^ABSPECFM(" ",10) ;real?? don't know yet
  1. ;S TDATA=TDATA_$$ANFF^ABSPECFM("TROOPELIG",10) ;NDC's testing system
  1. ;
  1. ;add segment and field separators
  1. S TDATA=TDATA_SS_FS
  1. ;
  1. Q
  1. PATIENT ; Patient Seg
  1. ;
  1. N ABSP304,ABSP305,ABSP310,ABSP311,ABSP332,ABSP323,ABSP324
  1. N ABSP325,ABSP326,XDATA,XDATA11,ABSPNAM
  1. ;
  1. N STCODE
  1. ;
  1. S XDATA=$G(^DPT(E1PIEN,0)) ;patient data
  1. S XDATA11=$G(^DPT(E1PIEN,.11)) ;address info
  1. ;
  1. ;preset field 111 to AM01 (seg id)
  1. S TDATA=TDATA_"AM01"_FS
  1. ;
  1. ;304 DOB - try Medicare DOB first
  1. ; else use patient DOB
  1. ;Next line for testing ONLY Don't forget to comment it back out....and uncomment the line below it.
  1. S ABSP304=$$DTF1^ABSPECFM($$GET1^DIQ(9000003,E1PIEN_",",2102,"I")) ;RLT - Patch 24
  1. ;IHS/OIT/Pieran/RCS - Patch 42;DOB was not taken from patient when DOB="00000000"
  1. ;S:ABSP304="" ABSP304=$$DTF1^ABSPECFM($P(XDATA,U,3)) ;RLT - Patch 24
  1. S:'ABSP304 ABSP304=$$DTF1^ABSPECFM($P(XDATA,U,3)) ;RCS - Patch42;RLT - Patch 24
  1. S TDATA=TDATA_"C4"_ABSP304_FS
  1. S DR="304////"_ABSP304_";"
  1. ;
  1. ;305 Patient Gender
  1. S ABSP305=$E($P(XDATA,U,2),1,1)
  1. S ABSP305=$S(ABSP305="M":"1",ABSP305="F":"2",1:"0")
  1. S ABSP305=$$NFF^ABSPECFM(ABSP305,1)
  1. S TDATA=TDATA_"C5"_ABSP305_FS
  1. S DR=DR_"305////"_ABSP305_";"
  1. ;
  1. ;patient name - try Medicare name first
  1. ; else use patient name
  1. ;S ABSPNAM=$$GET1^DIQ(9000003,E1PIEN_",",.01,"E")
  1. S ABSPNAM=$$GET1^DIQ(9000003,E1PIEN_",",2101,"E") ;RLT - Patch 24
  1. S:ABSPNAM="" ABSPNAM=$P(XDATA,U)
  1. ;
  1. ;310 Patient First Name
  1. S ABSP310=$$ANFF^ABSPECFM($P($P(ABSPNAM,",",2)," "),12)
  1. S TDATA=TDATA_"CA"_ABSP310_FS
  1. S DR=DR_"310////"_ABSP310_";"
  1. ;
  1. ;311 Patient Last Name
  1. S ABSP311=$$ANFF^ABSPECFM($P(ABSPNAM,",",1),15)
  1. S TDATA=TDATA_"CB"_ABSP311_FS
  1. S DR=DR_"311////"_ABSP311_";"
  1. ;
  1. ;322 Patient Street Address - not used yet
  1. ;S ABSP322=$$ANFF^ABSPECFM($P(XDATA11,U),30)
  1. ;S TDATA=TDATA_"CM"_ABSP322_FS
  1. ;S DR=DR_"322////"_ABSP322_";"
  1. ;
  1. ;323 Patient City Address - not used yet
  1. ;S ABSP323=$$ANFF^ABSPECFM($P(XDATA11,U,4),20)
  1. ;S TDATA=TDATA_"CN"_ABSP323_FS
  1. ;S DR=DR_"323////"_ABSP323_";"
  1. ;
  1. ;324 Patient State/Province Address - not used yet
  1. ;S ABSP324=""
  1. ;S STCODE=$P(XDATA11,U,5)
  1. ;S:STCODE'="" ABSP324=$P($G(^DIC(5,STCODE,0)),U,2)
  1. ;S ABSP324=$$ANFF^ABSPECFM(ABSP324,2)
  1. ;S TDATA=TDATA_"CO"_ABSP324_FS
  1. ;S DR=DR_"324////"_ABSP324_";"
  1. ;
  1. ;325 Patient Zip/Postal Zone - currently last field
  1. ; so the segment separator must be there
  1. S ABSP325=$$ANFF^ABSPECFM($P(XDATA11,U,6),15)
  1. S TDATA=TDATA_"CP"_ABSP325_SS_FS
  1. S DR=DR_"325////"_ABSP325_";"
  1. ;
  1. ;326 Patient Phone Number - not used yet
  1. ; if they want this, remove the segment separator from
  1. ; the zip code
  1. ;S ABSP326=$TR($$GET1^DIQ(2,E1PIEN_",",.131,"E"),"()-")
  1. ;S ABSP326=$$NFF^ABSPECFM(ABSP326,10)
  1. ;S TDATA=TDATA_"CQ"_ABSP326_SS_FS
  1. ;S DR=DR_"326////"_ABSP326_";"
  1. ;
  1. Q
  1. INSURER ; Insurance Seg
  1. ;
  1. N ABSP302,ABSP301,ABSPCID
  1. ;
  1. S TDATA=TDATA_"AM04"_FS
  1. ;
  1. ;302 Cardholder ID - medicare cardholder
  1. ; id, else use last 4 of SSN
  1. S ABSP302=$$GET1^DIQ(9000003,E1PIEN_",",.03,"E")
  1. S ABSP302S=$$GET1^DIQ(9000003,E1PIEN_",",.04,"E")
  1. S:ABSP302'="" ABSP302=ABSP302_ABSP302S
  1. I ABSP302="" D
  1. . S ABSP302=$$GET1^DIQ(2,E1PIEN_",",.09,"E")
  1. . S ABSP302=$E(ABSP302,$L(ABSP302)-3,$L(ABSP302))
  1. ;
  1. S ABSP302=$TR(ABSP302,"-/.","")
  1. S ABSP302=$$ANFF^ABSPECFM(ABSP302,20)
  1. S TDATA=TDATA_"C2"_ABSP302
  1. ;S TDATA=TDATA_"C2"_ABSP302_FS ; Bart's system
  1. S DR=DR_"302////"_ABSP302
  1. ;
  1. ;301 group number - just for testing
  1. ; Bart's system - don't know if this fld
  1. ; will be needed for live - put the fld
  1. ; separator on 302 (above) if 301 is needed
  1. ;COMMENT THE THREE LINES BELOW BACK OUT WHEN DONE TESTING
  1. ;S ABSP301=$$ANFF^ABSPECFM("TATA",10)
  1. ;S TDATA=TDATA_"C1"_ABSP301
  1. ;S DR=DR_"301////"_ABSP301
  1. ;
  1. Q
  1. RAWTRANS ; Raw trans in ^ABSPE
  1. ;
  1. N WP,I,ZERR ; /IHS/OIT/RAM ; 12 JUN 17 ; ADD DBS CALL ERROR RETURN VARIABLE
  1. ;
  1. F I=1:100:$L(TDATA) S WP(I/100+1,0)=$E(TDATA,I,I+99)
  1. D WP^DIE(9002313.7,E1IEN_",",1000,"","WP","ZERR") ; /IHS/OIT/RAM ; 12 JUN 17 ; UPDATE DBS CALL TO ALLOW FOR ERROR RETURN.
  1. I $D(ZERR) D LOG^ABSPOSL2("RAWTRANS^ABSPOSE2",.ZERR) ; /IHS/OIT/RAM ; 12 JUN 17 ; AND LOG IT IF AN ERROR OCCURS.
  1. ;
  1. Q
  1. DISPLAY(E1IEN) ;EP - E1 result
  1. ;
  1. N ABSPPNAM,ABSP112,ABSP504,ABSP526,COVER
  1. N ABSP503,ABSPCUT,ABSPSTR,ABSP03,ABSP302
  1. S (ABSPPNAM,ABSP112,ABSP504,ABSP503,ABSP536)=""
  1. ;
  1. S ABSPPNAM=$$GET1^DIQ(9002313.7,E1IEN_",",.01,"E")
  1. S ABSP03=$$GET1^DIQ(9002313.7,E1IEN_",",.03,"E")
  1. S ABSP112=$$GET1^DIQ(9002313.7,E1IEN_",",112,"E")
  1. S ABSP302=$$GET1^DIQ(9002313.7,E1IEN_",",302,"E")
  1. S ABSP503=$$GET1^DIQ(9002313.7,E1IEN_",",503,"E")
  1. S ABSP504=$$GET1^DIQ(9002313.7,E1IEN_",",504,"E")
  1. S ABSP526=$$GET1^DIQ(9002313.7,E1IEN_",",526,"E")
  1. S ABSPINS=ABSP504_ABSP526
  1. I ABSPINS["&" D DISPLAY^ABSPOSE1(E1IEN) Q
  1. D PARSE504(ABSP504,.COVER)
  1. D PARSE526(ABSP526,.COVER)
  1. ;
  1. W !,"On: ",ABSP03
  1. W !,"Patient Name: ",ABSPPNAM
  1. W !,"Medicare ID: ",ABSP302
  1. W !,"Status: ",ABSP112
  1. W !,"Authorization #: ",ABSP503
  1. ;
  1. I ABSP112'="A" D
  1. . W !,"Result:"
  1. . ;
  1. . N LINECNT
  1. . S LINECNT=1
  1. . ;
  1. . I $D(ABSP504) D
  1. .. S ABSPSTR=1
  1. .. I $L(ABSP504)>50 D
  1. ... S LINECNT=$L(ABSP504)\50
  1. ... S:LINECNT#50'=0 LINECNT=LINECNT+1
  1. .. F ABSPCUT=1:1:LINECNT D
  1. ... W ?18,$E(ABSP504,ABSPSTR,ABSPSTR+50),!," "
  1. ... S ABSPSTR=ABSPSTR+50
  1. . ;
  1. . S LINECNT=1
  1. . ;
  1. . I $D(ABSP526) D
  1. .. S ABSPSTR=1
  1. .. I $L(ABSP526)>50 D
  1. ... S LINECNT=$L(ABSP526)\50
  1. ... S:LINECNT#50'=0 LINECNT=LINECNT+1
  1. .. F ABSPCUT=1:1:LINECNT D
  1. ... W ?18,$E(ABSP526,ABSPSTR,ABSPSTR+50),!," "
  1. ... S ABSPSTR=ABSPSTR+50
  1. ;
  1. I ABSP112="A" D
  1. . W !!,"PATIENT INFORMATION"
  1. . W !," LAST NAME : ",COVER(1,"LAST NAME")
  1. . W !," FIRST NAME : ",COVER(1,"FIRST NAME")
  1. . W !," DOB : ",$$DATE(COVER(1,"DOB"))
  1. . W !!,"MEDICARE D INFORMATION"
  1. . W !," Insurance Level : ",COVER(1,"INS LVL")
  1. . W !," BIN : ",COVER(1,"BIN")
  1. . W !," PCN : ",COVER(1,"PCN")
  1. . W !," GROUP : ",COVER(1,"GROUP")
  1. . W !," CARDHOLDER ID : ",COVER(1,"CARD ID")
  1. . W !," PERSON CODE : ",COVER(1,"PERSON CD")
  1. . W !," PHONE NUMBER : ",COVER(1,"PHONE #")
  1. . W !," CONTRACT ID : ",COVER(1,"CONTRACT ID")
  1. . W !," RX BENEFIT PLAN : ",COVER(1,"PBP")
  1. . W !," EFFECTIVE DATE : ",$$DATE(COVER(1,"EFF DATE"))
  1. . W !," TERMINATION DATE: ",$$DATE(COVER(1,"TRM DATE"))
  1. . W !," LOW-INCOME COST : ",COVER(1,"LICS")
  1. . W !," FORMULARY ID : ",COVER(1,"FORMULARY ID")
  1. . W !!,"FUTURE MEDICARE PART D INFORMATION:"
  1. . W !," EFFECTIVE DATE : ",$$DATE(COVER(1,"FUTURE EFF DATE"))
  1. . W !," TERMINATION DATE: ",$$DATE(COVER(1,"FUTURE TRM DATE"))
  1. . ;
  1. . W !!,"OTHER COVERAGE INFORMATION"
  1. . W !,"Secondary Coverage"
  1. . I $TR(COVER(2,"DISPCHK")," ","")="" D
  1. .. W !," None"
  1. . E D
  1. .. W !," Insurance Level : ",COVER(2,"INS LVL")
  1. .. W !," BIN : ",COVER(2,"BIN")
  1. .. W !," PCN : ",COVER(2,"PCN")
  1. .. W !," GROUP : ",COVER(2,"GROUP")
  1. .. W !," CARDHOLDER ID : ",COVER(2,"CARD ID")
  1. .. W !," PERSON CODE : ",COVER(2,"PERSON CD")
  1. .. W !," RELATIONSHIP CD : ",COVER(2,"RELATIONSHIP CD")
  1. .. W !," PHONE NUMBER : ",COVER(2,"PHONE #")
  1. . ;
  1. . W !,"Tertiary Coverage"
  1. . I $TR(COVER(3,"DISPCHK")," ","")="" D
  1. .. W !," None"
  1. . E D
  1. .. W !!," Insurance Level : ",COVER(3,"INS LVL")
  1. .. W !," BIN : ",COVER(3,"BIN")
  1. .. W !," PCN : ",COVER(3,"PCN")
  1. .. W !," GROUP : ",COVER(3,"GROUP")
  1. .. W !," CARDHOLDER ID : ",COVER(3,"CARD ID")
  1. .. W !," PERSON CODE : ",COVER(3,"PERSON CD")
  1. .. W !," RELATIONSHIP CD : ",COVER(3,"RELATIONSHIP CD")
  1. .. W !," PHONE NUMBER : ",COVER(3,"PHONE #")
  1. ;
  1. Q
  1. ;
  1. PARSE504(INS504,COVER) ;
  1. ;
  1. S COVER(1,"LAST NAME")=$E(INS504,4,16)
  1. S COVER(1,"FIRST NAME")=$E(INS504,20,29)
  1. S COVER(1,"DOB")=$E(INS504,33,40)
  1. S COVER(1,"INS LVL")=$E(INS504,44,44)
  1. S COVER(1,"BIN")=$E(INS504,48,53)
  1. S COVER(1,"PCN")=$E(INS504,57,66)
  1. S COVER(1,"GROUP")=$E(INS504,70,84)
  1. S COVER(1,"CARD ID")=$E(INS504,88,107)
  1. S COVER(1,"PERSON CD")=$E(INS504,111,113)
  1. S COVER(1,"PHONE #")=$E(INS504,117,126)
  1. S COVER(1,"CONTRACT ID")=$E(INS504,130,135)
  1. S COVER(1,"PBP")=$E(INS504,139,141)
  1. S COVER(1,"EFF DATE")=$E(INS504,145,152)
  1. S COVER(1,"TRM DATE")=$E(INS504,156,163)
  1. S COVER(1,"LICS")=$E(INS504,167,167)
  1. S COVER(1,"FORMULARY ID")=$E(INS504,171,178)
  1. S COVER(1,"FUTURE EFF DATE")=$E(INS504,182,189)
  1. S COVER(1,"FUTURE TRM DATE")=$E(INS504,193,200)
  1. ;
  1. Q
  1. PARSE526(INS526,COVER) ;
  1. ;
  1. S COVER(2,"INS LVL")=$E(INS526,4,4)
  1. S COVER(2,"BIN")=$E(INS526,8,13)
  1. S COVER(2,"PCN")=$E(INS526,17,26)
  1. S COVER(2,"GROUP")=$E(INS526,30,44)
  1. S COVER(2,"CARD ID")=$E(INS526,48,67)
  1. S COVER(2,"PERSON CD")=$E(INS526,71,73)
  1. S COVER(2,"RELATIONSHIP CD")=$E(INS526,77,77)
  1. S COVER(2,"PHONE #")=$E(INS526,81,90)
  1. S COVER(2,"DISPCHK")=COVER(2,"INS LVL")_COVER(2,"BIN")_COVER(2,"PCN")_COVER(2,"GROUP")_COVER(2,"CARD ID")_COVER(2,"PERSON CD")_COVER(2,"RELATIONSHIP CD")_COVER(2,"PHONE #")
  1. ;
  1. S COVER(3,"INS LVL")=$E(INS526,94,94)
  1. S COVER(3,"BIN")=$E(INS526,98,103)
  1. S COVER(3,"PCN")=$E(INS526,107,116)
  1. S COVER(3,"GROUP")=$E(INS526,120,134)
  1. S COVER(3,"CARD ID")=$E(INS526,138,157)
  1. S COVER(3,"PERSON CD")=$E(INS526,161,163)
  1. S COVER(3,"RELATIONSHIP CD")=$E(INS526,167,167)
  1. S COVER(3,"PHONE #")=$E(INS526,171,180)
  1. S COVER(3,"DISPCHK")=COVER(3,"INS LVL")_COVER(3,"BIN")_COVER(3,"PCN")_COVER(3,"GROUP")_COVER(3,"CARD ID")_COVER(3,"PERSON CD")_COVER(3,"RELATIONSHIP CD")_COVER(3,"PHONE #")
  1. ;
  1. Q
  1. DATE(CCYYMMDD) ;
  1. I $TR(CCYYMMDD," ","")="" Q ""
  1. D ^XBFMK ;kill FileMan variables
  1. S Y=CCYYMMDD-17000000
  1. D DD^%DT
  1. Q Y