MCAR7A ; HIRMFO/REL-Main Routine to Decode HL7 ;5/26/00 09:43 ;;2.3;Medicine;**24**;09/13/1996 EN ; Entry Point for Message Array in MSG ; Reference DBIA #10035 for DPT calls. K MSG,ERRTX F I=1:1 X HLNEXT Q:HLQUIT'>0 S MSG(I)=HLNODE,J=0 F S J=$O(HLNODE(J)) Q:'J S MSG(I,J)=HLNODE(J) S NUM=1 MSH ; Decode MSH K SEG I '$D(MSG(NUM)) G KIL S X=$G(MSG(NUM)),SEG("MSH")=X,MCAPP="" I $E(X,1,3)'="MSH" S ERRTX="MSH not first record" D ^MCAR7X G KIL S MCAPP=$P(MSG(NUM),"|",4) I MCAPP="" G KIL S NUM=NUM+1 PID ; Check PID S X=$G(MSG(NUM)) I $E(X,1,3)'="PID" S ERRTX="PID not second record" D ^MCAR7X G KIL S SEG("PID")=X S NAM=$P(X,"|",6),SSN=$P(X,"|",20) I $L(SSN)<9 S SSN=$P(X,"|",4) S SSN=$P(SSN,"^",1) I SSN'?9N S SSN=$TR(SSN,"- ","") S:SSN'?9N SSN=" " S DFN=$O(^DPT("SSN",SSN,0)) I 'DFN S ERRTX="SSN not found" D ^MCAR7X G KIL S Z1=$P($G(^DPT(DFN,0)),",",1),Z2=$P(NAM,"^",1) S Z1=$TR(Z1,"abcdefghijklmnopqrstuvwxyz- '","ABCDEFGHIJKLMNOPQRSTUVWXYZ") S Z2=$TR(Z2,"abcdefghijklmnopqrstuvwxyz- '","ABCDEFGHIJKLMNOPQRSTUVWXYZ") I $E(Z1,1,3)'=$E(Z2,1,3) S ERRTX="Last Name MisMatch" D ^MCAR7X G KIL D PID^VADPT6 S PID=$G(VA("PID")),BID=$G(VA("BID")) K VA ; If DFN not a medical patient, add DFN to medical patient file I '$D(^MCAR(690,DFN)) S ^MCAR(690,DFN,0)=DFN,^MCAR(690,"B",DFN,DFN)="",$P(^MCAR(690,0),U,4)=$P(^MCAR(690,0),U,4)+1 S:$P(^MCAR(690,0),U,3)