| 1 | IBCNEHLU ;DAOU/ALA - HL7 Utilities ;10-JUN-2002  ; Compiled December 16, 2004 15:36:12
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**184,300**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | HLP(PROTOCOL) ;  Find the Protocol IEN
 | 
|---|
| 6 |  Q +$O(^ORD(101,"B",PROTOCOL,0))
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | NAME(NM) ;  Convert a name that isn't in standard VISTA format -
 | 
|---|
| 9 |  NEW LNM,FNM,MI
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  I NM?." " Q NM
 | 
|---|
| 12 |  ;  LastName,FirstName MI
 | 
|---|
| 13 |  I NM["," Q NM
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ; Remove double-spaces from name
 | 
|---|
| 16 |  F  Q:$L(NM,"  ")<2  S NM=$P(NM,"  ",1)_" "_$P(NM,"  ",2,9999)
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ; Trim leading/trailing spaces
 | 
|---|
| 19 |  S NM=$$TRIM^XLFSTR(NM)
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ; Find number of spaces in name
 | 
|---|
| 22 |  S II=$L(NM," ")
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  I II>3 Q NM
 | 
|---|
| 25 |  I II=3 S FNM=$P(NM," ",1),MI=" "_$P(NM," ",2),LNM=$P(NM," ",3)
 | 
|---|
| 26 |  I II=2 S FNM=$P(NM," ",1),LNM=$P(NM," ",2),MI=""
 | 
|---|
| 27 |  I II<2 Q NM
 | 
|---|
| 28 |  Q LNM_","_FNM_MI
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | DODCK(DFN,DOD,MGRP,NAME,RIEN,SSN) ;  Date of death check
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ; Input Variables
 | 
|---|
| 33 |  ; DFN, DOD, MGRP, NAME, RIEN, SSN
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  N CDOD,CIDDSP,IDDSP,IDSSN,MSG,XMSUB
 | 
|---|
| 36 |  S CDOD=$P($G(^DPT(DFN,.35)),U,1),CIDDSP=$$FMTE^XLFDT(CDOD,"5Z")
 | 
|---|
| 37 |  S IDDSP=$$FMTE^XLFDT(DOD,"5Z")
 | 
|---|
| 38 |  S IDSSN=$E(SSN,$L(SSN)-3,$L(SSN))
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  ; If the two dates of death are the same, quit
 | 
|---|
| 41 |  I CDOD=DOD G DODCKX
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  ;  If no current date of death but payer sent one
 | 
|---|
| 44 |  I CDOD="" D  G DODCKX
 | 
|---|
| 45 |  . ;  Send an email message
 | 
|---|
| 46 |  . S XMSUB="Date of Death Received"
 | 
|---|
| 47 |  . S MSG(1)="A Date of Death ("_IDDSP_") was received for patient: "_NAME_"/"_IDSSN_" "_$$GETDOB^IBCNEDEQ(DFN)_" from"
 | 
|---|
| 48 |  . S MSG(2)="payer "_$$GET1^DIQ(365,RIEN,.03,"E")_".  There is no current Date of Death on file for "
 | 
|---|
| 49 |  . S MSG(3)="this patient."
 | 
|---|
| 50 |  . D TXT^IBCNEUT7("MSG")
 | 
|---|
| 51 |  . D MSG^IBCNEUT5(MGRP,XMSUB,"MSG(")
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  S XMSUB="Variant Date of Death"
 | 
|---|
| 54 |  S MSG(1)="A Date of Death ("_IDDSP_") was received for patient: "_NAME_"/"_IDSSN_" "_$$GETDOB^IBCNEDEQ(DFN)_" from payer "_$$GET1^DIQ(365,RIEN,.03,"E")_"."
 | 
|---|
| 55 |  S MSG(2)="This Date of Death does not currently match the Date of Death ("_CIDDSP_") on file for this patient. "
 | 
|---|
| 56 |  D TXT^IBCNEUT7("MSG")
 | 
|---|
| 57 |  D MSG^IBCNEUT5(MGRP,XMSUB,"MSG(")
 | 
|---|
| 58 | DODCKX   ;
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 | SPAR     ;  Segment Parsing
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ; This tag will parse the current segment referenced by the HCT index
 | 
|---|
| 64 |  ; and place the results in the IBSEG array.
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  ; Input Variables
 | 
|---|
| 67 |  ; HCT
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  ; Output Variables
 | 
|---|
| 70 |  ; IBSEG (ARRAY of fields in segment)
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  N II,IJ,IK,IM,IS,ISBEG,ISCT,ISDATA,ISEND,ISPEC,LSDATA,NPC
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  ;Reset IBSEG
 | 
|---|
| 75 |  K IBSEG
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  S ISCT="",II=0,IS=0
 | 
|---|
| 78 |  F  S ISCT=$O(^TMP($J,"IBCNEHLI",HCT,ISCT)) Q:ISCT=""  D
 | 
|---|
| 79 |  . S IS=IS+1
 | 
|---|
| 80 |  . S ISDATA(IS)=$G(^TMP($J,"IBCNEHLI",HCT,ISCT))
 | 
|---|
| 81 |  . I $O(^TMP($J,"IBCNEHLI",HCT,ISCT))="" S ISDATA(IS)=ISDATA(IS)_HLFS
 | 
|---|
| 82 |  . S ISPEC(IS)=$L(ISDATA(IS),HLFS)
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  S IM=0,LSDATA=""
 | 
|---|
| 85 | LP S IM=IM+1 Q:IM>IS
 | 
|---|
| 86 |  S LSDATA=LSDATA_ISDATA(IM),NPC=ISPEC(IM)
 | 
|---|
| 87 |  F IJ=1:1:NPC-1 D
 | 
|---|
| 88 |  . S II=II+1,IBSEG(II)=$$CLNSTR($P(LSDATA,HLFS,IJ),$E(HL("ECH"),1,2)_$E(HL("ECH"),4),$E(HL("ECH")))
 | 
|---|
| 89 |  S LSDATA=$P(LSDATA,HLFS,NPC)
 | 
|---|
| 90 |  G LP
 | 
|---|
| 91 | CLNSTR(STRING,CHARS,SUBSEP)      ; Remove extra trailing components and subcomponents in the HL7 seg
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  N NUMPEC,PEC,RTSTRING
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  S RTSTRING=$$RTRIMCH(STRING,CHARS)
 | 
|---|
| 96 |  ; Now we have string w/o trailing chars, remove from subs
 | 
|---|
| 97 |  S NUMPEC=$L(RTSTRING,SUBSEP)
 | 
|---|
| 98 |  F PEC=1:1:NUMPEC S $P(RTSTRING,SUBSEP,PEC)=$$RTRIMCH($P(RTSTRING,SUBSEP,PEC),CHARS)
 | 
|---|
| 99 |  Q RTSTRING
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 | RTRIMCH(STR,CHRS) ; Remove the trailing chars from string
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  N R,L
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  S L=1,CHRS=$G(CHRS," ")
 | 
|---|
| 106 |  F R=$L(STR):-1:1 Q:CHRS'[$E(STR,R)
 | 
|---|
| 107 |  I L=R,(CHRS[$E(STR)) S STR=""
 | 
|---|
| 108 |  Q $E(STR,L,R)
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | GTICNM(ICN,NAME) ; Retrieve PID segment and set ICN and patient name
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 |  N HCT,ERFLG,SEG,IBSEG
 | 
|---|
| 114 |  S (HCT,ICN,NAME)="",ERFLG=0
 | 
|---|
| 115 |  F  S HCT=$O(^TMP($J,"IBCNEHLI",HCT)) Q:HCT=""  D  Q:ERFLG
 | 
|---|
| 116 |  .  D SPAR
 | 
|---|
| 117 |  .  S SEG=$G(IBSEG(1)) Q:SEG'="PID"
 | 
|---|
| 118 |  .  S ICN=$G(IBSEG(4)),NAME=$G(IBSEG(6)),ERFLG=1
 | 
|---|
| 119 |  Q
 | 
|---|